105. 数据库后端

Vault 支持多个数据库 secret 后端,以根据配置的角色动态生成数据库凭据。这意味着需要访问数据库的服务不再需要配置凭据:他们可以从 Vault 请求它们,并使用 Vault 的租赁机制来更轻松地滚动密钥。

Spring Cloud Vault 与这些后端集成:

使用数据库 secret 后端需要在 configuration 和spring-cloud-vault-config-databases依赖项中启用后端。

Vault 从 0.7.1 发布了一个专用的database secret 后端,允许通过插件进行数据库集成。您可以使用通用数据库后端来使用该特定后端。确保指定适当的后端路径 e.g. 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>Finchley.SR2</version>
    </dependency>
</dependencies>

启用多个 JDBC-compliant 数据库将生成凭据并在默认情况下将它们存储在相同的 property 键中,因此需要单独配置 JDBC 机密的 property 名称。

105.1 数据库

Spring Cloud Vault 可以获取https://www.vaultproject.io/api/secret/databases/index.html中列出的任何数据库的凭据。可以通过设置spring.cloud.vault.database.enabled=true(默认false)并使用spring.cloud.vault.database.role=…提供角色 name 来启用 integration。

虽然数据库后端是通用的,但spring.cloud.vault.database专门针对 JDBC 数据库。用户名和密码存储在spring.datasource.usernamespring.datasource.password中,因此使用 Spring Boot 将为DataSource获取生成的凭据,而无需进一步 configuration。您可以通过设置spring.cloud.vault.database.username-propertyspring.cloud.vault.database.password-property来配置 property 名称。

spring.cloud.vault:
    database:
        enabled: true
        role: readonly
        backend: database
        username-property: spring.datasource.username
        password-property: spring.datasource.username

另见:Vault 文档:数据库秘密后端

105.2 Apache Cassandra

后端已在 Vault 0.7.1 中弃用,建议使用database后端并将其挂载为cassandra

Spring Cloud Vault 可以获取 Apache Cassandra 的凭据。可以通过设置spring.cloud.vault.cassandra.enabled=true(默认false)并使用spring.cloud.vault.cassandra.role=…提供角色 name 来启用 integration。

用户名和密码存储在spring.data.cassandra.usernamespring.data.cassandra.password中,因此使用 Spring Boot 将获取生成的凭据,而无需进一步 configuration。您可以通过设置spring.cloud.vault.cassandra.username-propertyspring.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

另见:Vault 文档:使用 Vault 设置 Apache Cassandra

105.3 MongoDB

后端已在 Vault 0.7.1 中弃用,建议使用database后端并将其挂载为mongodb

Spring Cloud Vault 可以获取 MongoDB 的凭据。可以通过设置spring.cloud.vault.mongodb.enabled=true(默认false)并使用spring.cloud.vault.mongodb.role=…提供角色 name 来启用 integration。

用户名和密码存储在spring.data.mongodb.usernamespring.data.mongodb.password中,因此使用 Spring Boot 将获取生成的凭据,而无需进一步 configuration。您可以通过设置spring.cloud.vault.mongodb.username-propertyspring.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

另见:Vault 文档:使用 Vault 设置 MongoDB

105.4 MySQL

后端已在 Vault 0.7.1 中弃用,建议使用database后端并将其挂载为mysql。 的 Configuration 将在未来的 version 中删除。

Spring Cloud Vault 可以获取 MySQL 的凭据。可以通过设置spring.cloud.vault.mysql.enabled=true(默认false)并使用spring.cloud.vault.mysql.role=…提供角色 name 来启用 integration。

用户名和密码存储在spring.datasource.usernamespring.datasource.password中,因此使用 Spring Boot 将获取生成的凭据,而无需进一步 configuration。您可以通过设置spring.cloud.vault.mysql.username-propertyspring.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

另见:Vault 文档:使用 Vault 设置 MySQL

105.5 PostgreSQL

后端已在 Vault 0.7.1 中弃用,建议使用database后端并将其挂载为postgresql。 的 Configuration 将在未来的 version 中删除。

Spring Cloud Vault 可以获取 PostgreSQL 的凭据。可以通过设置spring.cloud.vault.postgresql.enabled=true(默认false)并使用spring.cloud.vault.postgresql.role=…提供角色 name 来启用 integration。

用户名和密码存储在spring.datasource.usernamespring.datasource.password中,因此使用 Spring Boot 将获取生成的凭据,而无需进一步 configuration。您可以通过设置spring.cloud.vault.postgresql.username-propertyspring.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

另见:Vault 文档:使用 Vault 设置 PostgreSQL

首页