97. 数据库后端
Vault 支持多个数据库 secret 后端,以根据配置的角色动态生成数据库凭据。这意味着需要访问数据库的服务不再需要配置凭据:他们可以从 Vault 请求它们,并使用 Vault 的租赁机制来更轻松地滚动密钥。
Spring Cloud Vault 与这些后端集成:
使用数据库 secret 后端需要在 configuration 和spring-cloud-vault-config-databases
依赖项中启用后端。
Vault 从 0.7.1 发布了一个专用的database
secret 后端,允许通过插件进行数据库集成。您可以通过调整上面的 JDBC 数据库 properties 之一来使用该特定后端。确保指定适当的后端路径 e.g. spring.cloud.vault.mysql.role.backend=database
。
示例 97.1. pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-vault-config-databases</artifactId>
<version>Edgware.SR5</version>
</dependency>
</dependencies>
启用多个 JDBC-compliant 数据库将生成凭据并在默认情况下将它们存储在相同的 property 键中,因此需要单独配置 JDBC 机密的 property 名称。
97.1 Apache Cassandra
Spring Cloud Vault 可以获取 Apache Cassandra 的凭据。可以通过设置spring.cloud.vault.cassandra.enabled=true
(默认false
)并使用spring.cloud.vault.cassandra.role=…
提供角色 name 来启用 integration。
用户名和密码存储在spring.data.cassandra.username
和spring.data.cassandra.password
中,因此使用 Spring Boot 将获取生成的凭据,而无需进一步 configuration。您可以通过设置spring.cloud.vault.cassandra.username-property
和spring.cloud.vault.cassandra.password-property
来配置 property 名称。
spring.cloud.vault:
cassandra:
enabled: true
role: readonly
backend: cassandra
username-property: spring.data.cassandra.username
password-property: spring.data.cassandra.username
-
enabled
将此 value 设置为true
可启用 Cassandra 后端配置使用 -
role
_set Cassandra 角色定义的角色 name -
backend
_set 要使用 Cassandra 挂载的路径 -
username-property
sets table 用于存储 Cassandra 用户名的 property name -
password-property
sets _setperty name,其中存储了 Cassandra 密码
另见:Vault 文档:使用 Vault 设置 Apache Cassandra
97.2 MongoDB
Spring Cloud Vault 可以获取 MongoDB 的凭据。可以通过设置spring.cloud.vault.mongodb.enabled=true
(默认false
)并使用spring.cloud.vault.mongodb.role=…
提供角色 name 来启用 integration。
用户名和密码存储在spring.data.mongodb.username
和spring.data.mongodb.password
中,因此使用 Spring Boot 将获取生成的凭据,而无需进一步 configuration。您可以通过设置spring.cloud.vault.mongodb.username-property
和spring.cloud.vault.mongodb.password-property
来配置 property 名称。
spring.cloud.vault:
mongodb:
enabled: true
role: readonly
backend: mongodb
username-property: spring.data.mongodb.username
password-property: spring.data.mongodb.password
-
enabled
将此 value 设置为true
可启用 MongodB 后端配置使用 -
role
_set MongoDB 角色定义的角色 name -
backend
_set 要使用 MongoDB 挂载的路径 -
username-property
_set在 property name 中存储 MongoDB 用户名 -
password-property
设置 property name,其中存储了 MongoDB 密码
另见:Vault 文档:使用 Vault 设置 MongoDB
97.3 MySQL
Spring Cloud Vault 可以获取 MySQL 的凭据。可以通过设置spring.cloud.vault.mysql.enabled=true
(默认false
)并使用spring.cloud.vault.mysql.role=…
提供角色 name 来启用 integration。
用户名和密码存储在spring.datasource.username
和spring.datasource.password
中,因此使用 Spring Boot 将获取生成的凭据,而无需进一步 configuration。您可以通过设置spring.cloud.vault.mysql.username-property
和spring.cloud.vault.mysql.password-property
来配置 property 名称。
spring.cloud.vault:
mysql:
enabled: true
role: readonly
backend: mysql
username-property: spring.datasource.username
password-property: spring.datasource.username
-
enabled
将此 value 设置为true
可启用 MySQL 后端配置使用 -
role
sets 设置 MySQL 角色定义的角色 name -
backend
设置要使用的 MySQL 挂载的路径 -
username-property
设置存储 MySQL 用户名的 property name -
password-property
sets 设置存储 MySQL 密码的 property name
97.4 PostgreSQL
Spring Cloud Vault 可以获取 PostgreSQL 的凭据。可以通过设置spring.cloud.vault.postgresql.enabled=true
(默认false
)并使用spring.cloud.vault.postgresql.role=…
提供角色 name 来启用 integration。
用户名和密码存储在spring.datasource.username
和spring.datasource.password
中,因此使用 Spring Boot 将获取生成的凭据,而无需进一步 configuration。您可以通过设置spring.cloud.vault.postgresql.username-property
和spring.cloud.vault.postgresql.password-property
来配置 property 名称。
spring.cloud.vault:
postgresql:
enabled: true
role: readonly
backend: postgresql
username-property: spring.datasource.username
password-property: spring.datasource.username
-
enabled
将此 value 设置为true
可启用 PostgreSQL 后端配置使用 -
role
sets 设置 PostgreSQL 角色定义的角色 name -
backend
_set 要使用 PostgreSQL 挂载的路径 -
username-property
设置存储 PostgreSQL 用户名的 property name -
password-property
设置存储 PostgreSQL 密码的 property name