8. 数据库后端
Vault 支持多个数据库密钥后端,以根据配置的角色动态生成数据库凭据。 这意味着需要访问数据库的服务不再需要配置凭据:他们可以从 Vault 请求凭据,并使用 Vault 的租赁机制更轻松地滚动密钥。
Spring Cloud Vault 与以下后端集成:
使用数据库密钥后端需要在配置中启用后端,并且spring-cloud-vault-config-databasesDependency。
Vault 从 0.7.1 开始附带一个专用的database允许通过插件进行数据库集成的秘密后端。
您可以使用通用数据库后端来使用该特定后端。
确保指定适当的后端路径,例如spring.cloud.vault.mysql.role.backend=database.
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-vault-config-databases</artifactId>
<version>3.1.3</version>
</dependency>
</dependencies>
| 启用多个符合 JDBC 的数据库将生成凭据,并默认将它们存储在同一属性键中,因此需要单独配置 JDBC 密钥的属性名称。 |
8.1. 数据库
Spring Cloud Vault 可以获取 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.password
8.2. 多个数据库
有时,单个数据库的凭据是不够的,因为应用程序可能会连接到两个或多个相同类型的数据库。
从 3.0.5 版本开始,Spring Vault 支持在spring.cloud.vault.databases.*Namespace。
该配置接受多个数据库后端,以将凭据具体化到指定的属性中。确保配置username-property和password-property适当地。
spring.cloud.vault:
databases:
primary:
enabled: true
role: readwrite
backend: database
username-property: spring.primary-datasource.username
password-property: spring.primary-datasource.password
other-database:
enabled: true
role: readonly
backend: database
username-property: spring.secondary-datasource.username
password-property: spring.secondary-datasource.password
-
<name>数据库配置的描述性名称。 -
<name>.enabled将此值设置为true启用数据库后端配置用法 -
<name>.role设置数据库角色定义的角色名称 -
<name>.backend设置要使用的数据库挂载的路径 -
<name>.username-property设置存储数据库用户名的属性名称。确保使用唯一的属性名称以避免属性隐藏。 -
<name>.password-property设置存储数据库密码的属性名称确保使用唯一的属性名称以避免属性隐藏。
另请参阅:Vault 文档:数据库密钥后端
Spring Cloud Vault 不支持获取新凭据和配置DataSource当达到最长租赁时间时,与他们合作。
也就是说,如果max_ttlVault 中的数据库角色设置为24h这意味着在应用程序启动 24 小时后,它无法再向数据库进行身份验证。 |
8.3. Apache Cassandra
这cassandra后端已在 Vault 0.7.1 中弃用,建议使用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.password
-
enabled将此值设置为true启用 Cassandra 后端配置使用 -
role设置 Cassandra 角色定义的角色名称 -
backend设置要使用的 Cassandra 挂载的路径 -
username-property设置存储 Cassandra 用户名的属性名称 -
password-property设置存储 Cassandra 密码的属性名称
8.4. Couchbase数据库
Spring Cloud Vault 可以获取 Couchbase 的凭据。
可以通过将spring.cloud.vault.couchbase.enabled=true(默认false) 并为角色名称提供spring.cloud.vault.couchbase.role=….
用户名和密码可从spring.couchbase.username和spring.couchbase.password属性,因此使用 Spring Boot 将获取生成的凭据,而无需进一步配置。
您可以通过设置spring.cloud.vault.couchbase.username-property和spring.cloud.vault.couchbase.password-property.
spring.cloud.vault:
couchbase:
enabled: true
role: readonly
backend: database
username-property: spring.couchbase.username
password-property: spring.couchbase.password
-
enabled将此值设置为true启用 Couchbase 后端配置使用 -
role设置 Couchbase 角色定义的角色名称 -
backend设置要使用的 Couchbase 安装的路径 -
username-property设置存储 Couchbase 用户名的属性名称 -
password-property设置存储 Couchbase 密码的属性名称
另请参阅:Couchbase 数据库插件文档
8.5. 弹性搜索
Spring Cloud Vault 可以从 3.0 版开始获取 Elasticsearch 的凭据。
可以通过将spring.cloud.vault.elasticsearch.enabled=true(默认false) 并为角色名称提供spring.cloud.vault.elasticsearch.role=….
用户名和密码可从spring.elasticsearch.rest.username和spring.elasticsearch.rest.password属性,因此使用 Spring Boot 将获取生成的凭据,而无需进一步配置。
您可以通过设置spring.cloud.vault.elasticsearch.username-property和spring.cloud.vault.elasticsearch.password-property.
spring.cloud.vault:
elasticsearch:
enabled: true
role: readonly
backend: mongodb
username-property: spring.elasticsearch.rest.username
password-property: spring.elasticsearch.rest.password
-
enabled将此值设置为true启用 Elasticsearch 数据库后端配置使用 -
role设置 Elasticsearch 角色定义的角色名称 -
backend设置要使用的 Elasticsearch 挂载的路径 -
username-property设置存储 Elasticsearch 用户名的属性名称 -
password-property设置存储 Elasticsearch 密码的属性名称
8.6. Mongo数据库
这mongodb后端已在 Vault 0.7.1 中弃用,建议使用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密码的属性名称
8.7. MySQL
这mysql后端已在 Vault 0.7.1 中弃用,建议使用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.password
-
enabled将此值设置为true启用 MySQL 后端配置用法 -
role设置 MySQL 角色定义的角色名称 -
backend设置要使用的 MySQL 挂载路径 -
username-property设置存储 MySQL 用户名的属性名称 -
password-property设置存储 MySQL 密码的属性名称
8.8. PostgreSQL
这postgresql后端已在 Vault 0.7.1 中弃用,建议使用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.password
-
enabled将此值设置为true启用 PostgreSQL 后端配置使用 -
role设置PostgreSQL角色定义的角色名称 -
backend设置要使用的PostgreSQL挂载的路径 -
username-property设置存储 PostgreSQL 用户名的属性名称 -
password-property设置存储 PostgreSQL 密码的属性名称