104. Secret Backends

104.1 通用后端

Spring Cloud Vault 在基本级别上支持通用 Secret 后端。通用 Secret 后端允许将任意值存储为键值存储。单个上下文可以存储一个或多个键值 Tuples。上下文可以按层次进行组织。 Spring Cloud Vault 允许将应用程序名称和默认上下文名称(application)与Active配置文件结合使用。

/secret/{application}/{profile}
/secret/{application}
/secret/{default-context}/{profile}
/secret/{default-context}

应用程序名称由以下属性确定:

  • spring.cloud.vault.generic.application-name

  • spring.cloud.vault.application-name

  • spring.application.name

可以通过在通用后端中的其他上下文中获取 Secret,方法是将其路径添加到应用程序名称中,并用逗号分隔。例如,给定应用程序名称usefulapp,mysql1,projectx/aws,将使用以下每个文件夹:

  • /secret/usefulapp

  • /secret/mysql1

  • /secret/projectx/aws

Spring Cloud Vault 将所有Active配置文件添加到可能的上下文路径列表中。没有Active Profile 会跳过使用 Profile 名称的访问上下文。

就像存储属性一样公开属性(即不带其他前缀)。

spring.cloud.vault:
    generic:
        enabled: true
        backend: secret
        profile-separator: '/'
        default-context: application
        application-name: my-app
  • enabled将此值设置为false将禁用 Secret 后端配置使用

  • backend设置要使用的 Secret 装载的路径

  • default-context设置所有应用程序使用的上下文名称

  • application-name覆盖用于通用后端的应用程序名称

  • profile-separator在带有配置文件的属性源中将配置文件名称与上下文分开

Note

键值 Secret 后端可以在版本控制(v2)和非版本控制(v1)模式下运行。根据操作模式,需要不同的 API 来访问机密。确保为非版本化的键值后端启用genericSecret 后端用法,并为版本化的键值后端启用kvSecret 后端用法。

另请参阅:Vault文件:使用 KVSecret 引擎-版本 1(通用 Secret 后端)

104.2 版本化的键值后端

Spring Cloud Vault 支持版本化的 Key-ValueSecret 后端。键值后端允许将任意值存储为键值存储。单个上下文可以存储一个或多个键值 Tuples。上下文可以按层次进行组织。 Spring Cloud Vault 允许将应用程序名称和默认上下文名称(application)与Active配置文件结合使用。

/secret/{application}/{profile}
/secret/{application}
/secret/{default-context}/{profile}
/secret/{default-context}

应用程序名称由以下属性确定:

  • spring.cloud.vault.kv.application-name

  • spring.cloud.vault.application-name

  • spring.application.name

可以通过在键值后端中的其他上下文中获取 Secret,方法是将其路径添加到应用程序名称中,并以逗号分隔。例如,给定应用程序名称usefulapp,mysql1,projectx/aws,将使用以下每个文件夹:

  • /secret/usefulapp

  • /secret/mysql1

  • /secret/projectx/aws

Spring Cloud Vault 将所有Active配置文件添加到可能的上下文路径列表中。没有Active Profile 会跳过使用 Profile 名称的访问上下文。

就像存储属性一样公开属性(即不带其他前缀)。

Note

Spring Cloud Vault 在安装路径和实际上下文路径之间添加data/上下文。

spring.cloud.vault:
    kv:
        enabled: true
        backend: secret
        profile-separator: '/'
        default-context: application
        application-name: my-app
  • enabled将此值设置为false将禁用 Secret 后端配置使用

  • backend设置要使用的 Secret 装载的路径

  • default-context设置所有应用程序使用的上下文名称

  • application-name覆盖用于通用后端的应用程序名称

  • profile-separator在带有配置文件的属性源中将配置文件名称与上下文分开

Note

键值 Secret 后端可以在版本控制(v2)和非版本控制(v1)模式下运行。根据操作模式,需要不同的 API 来访问机密。确保为非版本化的键值后端启用genericSecret 后端用法,并为版本化的键值后端启用kvSecret 后端用法。

另请参阅:Vault文件:使用 KV Secrets Engine-版本 2(版本键值后端)

104.3 Consul

Spring Cloud Vault 可以获取 HashiCorp Consul 的凭据。 Consul 集成需要spring-cloud-vault-config-consul依赖性。

实施例 104.1. pom.xml

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-vault-config-consul</artifactId>
        <version>1.0.0.BUILD-SNAPSHOT</version>
    </dependency>
</dependencies>

可以通过设置spring.cloud.vault.consul.enabled=true(默认为false)并为角色名称提供spring.cloud.vault.consul.role=…来启用集成。

所获得的令牌存储在spring.cloud.consul.token中,因此使用 Spring Cloud Consul 无需进一步配置即可获取所生成的凭证。您可以通过设置spring.cloud.vault.consul.token-property来配置属性名称。

spring.cloud.vault:
    consul:
        enabled: true
        role: readonly
        backend: consul
        token-property: spring.cloud.consul.token
  • enabled将此值设置为true启用 Consul 后端配置用法

  • role设置 Consul 角色定义的角色名称

  • backend设置要使用的 Consul 安装路径

  • token-property设置存储 Consul ACL 令牌的属性名称

另请参阅:Vault文件:使用Vault设置 Consul

104.4 RabbitMQ

Spring Cloud Vault 可以获取 RabbitMQ 的凭据。

RabbitMQ 集成需要spring-cloud-vault-config-rabbitmq依赖性。

示例 104.2. pom.xml

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-vault-config-rabbitmq</artifactId>
        <version>1.0.0.BUILD-SNAPSHOT</version>
    </dependency>
</dependencies>

可以通过设置spring.cloud.vault.rabbitmq.enabled=true(默认为false)并为角色名称提供spring.cloud.vault.rabbitmq.role=…来启用集成。

用户名和密码存储在spring.rabbitmq.usernamespring.rabbitmq.password中,因此使用 Spring Boot 将无需进一步配置即可获取生成的凭据。您可以通过设置spring.cloud.vault.rabbitmq.username-propertyspring.cloud.vault.rabbitmq.password-property来配置属性名称。

spring.cloud.vault:
    rabbitmq:
        enabled: true
        role: readonly
        backend: rabbitmq
        username-property: spring.rabbitmq.username
        password-property: spring.rabbitmq.password
  • enabled将此值设置为true可启用 RabbitMQ 后端配置

  • role设置 RabbitMQ 角色定义的角色名称

  • backend设置要使用的 RabbitMQ 安装的路径

  • username-property设置存储 RabbitMQ 用户名的属性名称

  • password-property设置存储 RabbitMQ 密码的属性名称

另请参阅:Vault文件:使用Vault设置 RabbitMQ

104.5 AWS

Spring Cloud Vault 可以获取 AWS 的凭证。

AWS 集成需要spring-cloud-vault-config-aws依赖项。

示例 104.3. pom.xml

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-vault-config-aws</artifactId>
        <version>1.0.0.BUILD-SNAPSHOT</version>
    </dependency>
</dependencies>

可以通过设置spring.cloud.vault.aws=true(默认为false)并为角色名称提供spring.cloud.vault.aws.role=…来启用集成。

访问密钥和 Secret 密钥存储在cloud.aws.credentials.accessKeycloud.aws.credentials.secretKey中,因此使用 Spring Cloud AWS 无需进一步配置即可获取生成的凭证。您可以通过设置spring.cloud.vault.aws.access-key-propertyspring.cloud.vault.aws.secret-key-property来配置属性名称。

spring.cloud.vault:
    aws:
        enabled: true
        role: readonly
        backend: aws
        access-key-property: cloud.aws.credentials.accessKey
        secret-key-property: cloud.aws.credentials.secretKey
  • enabled将此值设置为true启用 AWS 后端配置使用

  • role设置 AWS 角色定义的角色名称

  • backend设置要使用的 AWS 装载的路径

  • access-key-property设置存储 AWS 访问密钥的属性名称

  • secret-key-property设置存储 AWS 密钥的属性名称

另请参阅:Vault文件:使用Vault设置 AWS