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 来访问机密。确保为非版本化的键值后端启用generic
Secret 后端用法,并为版本化的键值后端启用kv
Secret 后端用法。
另请参阅: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 来访问机密。确保为非版本化的键值后端启用generic
Secret 后端用法,并为版本化的键值后端启用kv
Secret 后端用法。
另请参阅: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 令牌的属性名称
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.username
和spring.rabbitmq.password
中,因此使用 Spring Boot 将无需进一步配置即可获取生成的凭据。您可以通过设置spring.cloud.vault.rabbitmq.username-property
和spring.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.accessKey
和cloud.aws.credentials.secretKey
中,因此使用 Spring Cloud AWS 无需进一步配置即可获取生成的凭证。您可以通过设置spring.cloud.vault.aws.access-key-property
和spring.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 密钥的属性名称