On this page
105. Database backends
Vault 支持多个数据库机密后端,以根据配置的角色动态生成数据库凭据。这意味着需要访问数据库的服务不再需要配置凭据:它们可以从 Vault 请求它们,并使用 Vault 的租赁机制更轻松地滚动密钥。
Spring Cloud Vault 与以下后端集成:
使用数据库 Secret 后端要求在配置和spring-cloud-vault-config-databases依赖项中启用后端。
自 0.7.1 起,Vault就带有专用的databaseSecret 后端,该后端允许通过插件进行数据库集成。您可以通过使用通用数据库后端来使用该特定后端。确保指定适当的后端路径,例如spring.cloud.vault.mysql.role.backend=database。
实施例 105.1. pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-vault-config-databases</artifactId>
<version>1.0.0.BUILD-SNAPSHOT</version>
</dependency>
</dependencies>
Note
启用多个兼容 JDBC 的数据库将生成凭据,并且默认情况下将它们存储在相同的属性密钥中,因此需要分别配置 JDBC 机密的属性名称。
105.1 Database
Spring Cloud Vault 可以获取https://www.vaultproject.io/api/secret/databases/index.html处列出的任何数据库的凭据。可以通过设置spring.cloud.vault.database.enabled=true(默认为false)并为角色名称提供spring.cloud.vault.database.role=…来启用集成。
虽然数据库后端是通用后端,但是spring.cloud.vault.database专门针对 JDBC 数据库。用户名和密码存储在spring.datasource.username和spring.datasource.password中,因此使用 Spring Boot 将为DataSource获取生成的凭据,而无需进一步配置。您可以通过设置spring.cloud.vault.database.username-property和spring.cloud.vault.database.password-property来配置属性名称。
spring.cloud.vault:
database:
enabled: true
role: readonly
backend: database
username-property: spring.datasource.username
password-property: spring.datasource.username
enabled将此值设置为true启用数据库后端配置使用role设置数据库角色定义的角色名称backend设置要使用的数据库安装路径username-property设置存储数据库用户名的属性名称password-property设置存储数据库密码的属性名称
另请参阅:Vault文件:数据库机密后端
105.2 Apache Cassandra
Note
Vault 0.7.1 中已弃用cassandra后端,建议使用database后端并将其安装为cassandra。
Spring Cloud Vault 可以获取 Apache Cassandra 的凭据。可以通过设置spring.cloud.vault.cassandra.enabled=true(默认为false)并为角色名称提供spring.cloud.vault.cassandra.role=…来启用集成。
用户名和密码存储在spring.data.cassandra.username和spring.data.cassandra.password中,因此使用 Spring Boot 将无需进一步配置即可获取生成的凭据。您可以通过设置spring.cloud.vault.cassandra.username-property和spring.cloud.vault.cassandra.password-property来配置属性名称。
spring.cloud.vault:
cassandra:
enabled: true
role: readonly
backend: cassandra
username-property: spring.data.cassandra.username
password-property: spring.data.cassandra.username
enabled将此值设置为true可启用 Cassandra 后端配置role设置 Cassandra 角色定义的角色名称backend设置要使用的 Cassandra 安装架的路径username-property设置存储 Cassandra 用户名的属性名称password-property设置存储 Cassandra 密码的属性名称
另请参阅:Vault文件:使用Vault设置 Apache Cassandra
105.3 MongoDB
Note
Vault 0.7.1 中已弃用mongodb后端,建议使用database后端并将其安装为mongodb。
Spring Cloud Vault 可以获取 MongoDB 的凭据。可以通过设置spring.cloud.vault.mongodb.enabled=true(默认为false)并为角色名称提供spring.cloud.vault.mongodb.role=…来启用集成。
用户名和密码存储在spring.data.mongodb.username和spring.data.mongodb.password中,因此使用 Spring Boot 将无需进一步配置即可获取生成的凭据。您可以通过设置spring.cloud.vault.mongodb.username-property和spring.cloud.vault.mongodb.password-property来配置属性名称。
spring.cloud.vault:
mongodb:
enabled: true
role: readonly
backend: mongodb
username-property: spring.data.mongodb.username
password-property: spring.data.mongodb.password
enabled将此值设置为true启用 MongodB 后端配置使用role设置 MongoDB 角色定义的角色名称backend设置要使用的 MongoDB 安装的路径username-property设置存储 MongoDB 用户名的属性名称password-property设置存储 MongoDB 密码的属性名称
另请参阅:Vault文件:使用Vault设置 MongoDB
105.4 MySQL
Note
Vault 0.7.1 中已弃用mysql后端,建议使用database后端并将其安装为mysql。 spring.cloud.vault.mysql的配置将在以后的版本中删除。
Spring Cloud Vault 可以获取 MySQL 的凭据。可以通过设置spring.cloud.vault.mysql.enabled=true(默认为false)并为角色名称提供spring.cloud.vault.mysql.role=…来启用集成。
用户名和密码存储在spring.datasource.username和spring.datasource.password中,因此使用 Spring Boot 将无需进一步配置即可获取生成的凭据。您可以通过设置spring.cloud.vault.mysql.username-property和spring.cloud.vault.mysql.password-property来配置属性名称。
spring.cloud.vault:
mysql:
enabled: true
role: readonly
backend: mysql
username-property: spring.datasource.username
password-property: spring.datasource.username
enabled将此值设置为true可以启用 MySQL 后端配置role设置 MySQL 角色定义的角色名称backend设置要使用的 MySQL 安装路径username-property设置存储 MySQL 用户名的属性名称password-property设置存储 MySQL 密码的属性名称
105.5 PostgreSQL
Note
Vault 0.7.1 中已弃用postgresql后端,建议使用database后端并将其安装为postgresql。 spring.cloud.vault.postgresql的配置将在以后的版本中删除。
Spring Cloud Vault 可以获取 PostgreSQL 的凭据。可以通过设置spring.cloud.vault.postgresql.enabled=true(默认为false)并为角色名称提供spring.cloud.vault.postgresql.role=…来启用集成。
用户名和密码存储在spring.datasource.username和spring.datasource.password中,因此使用 Spring Boot 将无需进一步配置即可获取生成的凭据。您可以通过设置spring.cloud.vault.postgresql.username-property和spring.cloud.vault.postgresql.password-property来配置属性名称。
spring.cloud.vault:
postgresql:
enabled: true
role: readonly
backend: postgresql
username-property: spring.datasource.username
password-property: spring.datasource.username
enabled将此值设置为true启用 PostgreSQL 后端配置用法role设置 PostgreSQL 角色定义的角色名称backend设置要使用的 PostgreSQL 安装路径username-property设置存储 PostgreSQL 用户名的属性名称password-property设置存储 PostgreSQL 密码的属性名称