8. 数据库后端

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

Spring Cloud Vault 与以下后端集成:spring-doc.cn

使用数据库密钥后端需要在配置和依赖项中启用后端。spring-cloud-vault-config-databasesspring-doc.cn

Vault 从 0.7.1 开始提供专用的秘密后端,允许通过插件集成数据库。 您可以通过使用通用数据库后端来使用该特定后端。 确保指定适当的后端路径,例如 .databasespring.cloud.vault.mysql.role.backend=databasespring-doc.cn

例 36.pom.xml
<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 中列出的任何数据库的凭据。 可以通过设置 (default ) 并为角色名称提供 来启用集成。spring.cloud.vault.database.enabled=truefalsespring.cloud.vault.database.role=…spring-doc.cn

虽然数据库后端是通用的,但专门针对 JDBC 数据库。 用户名和密码可从 和 properties 获得 因此,使用 Spring Boot 将为您获取生成的凭据,而无需进一步配置。 您可以通过设置 和 来配置属性名称。spring.cloud.vault.databasespring.datasource.usernamespring.datasource.passwordDataSourcespring.cloud.vault.database.username-propertyspring.cloud.vault.database.password-propertyspring-doc.cn

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.*spring-doc.cn

该配置接受多个数据库后端,以将凭证具体化到指定的属性中。确保配置并适当。username-propertypassword-propertyspring-doc.cn

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>数据库配置的描述性名称。spring-doc.cn

  • <name>.enabled将此值设置为 enable the Database backend config usagetruespring-doc.cn

  • <name>.role设置数据库角色定义的角色名称spring-doc.cn

  • <name>.backend设置要使用的 Database mount 的路径spring-doc.cn

  • <name>.username-property设置存储 Database username 的属性名称。确保使用唯一的属性名称以避免属性阴影。spring-doc.cn

  • <name>.password-property设置存储 Database 口令的属性名称 确保使用唯一的属性名称以避免属性阴影。spring-doc.cn

Spring Cloud Vault 不支持在达到最大租约时间时获取新凭据并使用它们进行配置。 也就是说,如果 Vault 中的 Database 角色设置为 ,则表示在应用程序启动 24 小时后,它将无法再向数据库进行身份验证。DataSourcemax_ttl24h

8.3. Apache Cassandra

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

Spring Cloud Vault 可以获取 Apache Cassandra 的凭据。 可以通过设置 (default ) 并为角色名称提供 来启用集成。spring.cloud.vault.cassandra.enabled=truefalsespring.cloud.vault.cassandra.role=…spring-doc.cn

用户名和密码可从 和 properties 获得,因此使用 Spring Boot 将获取生成的凭据,而无需进一步配置。 您可以通过设置 和 来配置属性名称。spring.data.cassandra.usernamespring.data.cassandra.passwordspring.cloud.vault.cassandra.username-propertyspring.cloud.vault.cassandra.password-propertyspring-doc.cn

spring.cloud.vault:
    cassandra:
        enabled: true
        role: readonly
        backend: cassandra
        username-property: spring.data.cassandra.username
        password-property: spring.data.cassandra.password
  • enabled将此值设置为 Enable the Cassandra backend config usagetruespring-doc.cn

  • role设置 Cassandra 角色定义的角色名称spring-doc.cn

  • backend设置要使用的 Cassandra 挂载的路径spring-doc.cn

  • username-property设置存储 Cassandra 用户名的属性名称spring-doc.cn

  • password-property设置存储 Cassandra 密码的属性名称spring-doc.cn

8.4. Couchbase 数据库

Spring Cloud Vault 可以获取 Couchbase 的凭据。 可以通过设置 (default ) 并为角色名称提供 来启用集成。spring.cloud.vault.couchbase.enabled=truefalsespring.cloud.vault.couchbase.role=…spring-doc.cn

用户名和密码可从 和 properties 获得,因此使用 Spring Boot 将获取生成的凭据,而无需进一步配置。 您可以通过设置 和 来配置属性名称。spring.couchbase.usernamespring.couchbase.passwordspring.cloud.vault.couchbase.username-propertyspring.cloud.vault.couchbase.password-propertyspring-doc.cn

spring.cloud.vault:
    couchbase:
        enabled: true
        role: readonly
        backend: database
        username-property: spring.couchbase.username
        password-property: spring.couchbase.password
  • enabled将此值设置为 Enable the Couchbase backend config usagetruespring-doc.cn

  • role设置 Couchbase 角色定义的角色名称spring-doc.cn

  • backend设置要使用的 Couchbase 挂载的路径spring-doc.cn

  • username-property设置存储 Couchbase 用户名的属性名称spring-doc.cn

  • password-property设置存储 Couchbase 密码的属性名称spring-doc.cn

8.5. Elasticsearch

Spring Cloud Vault 可以从 3.0 版本开始获取 Elasticsearch 的凭据。 可以通过设置 (default ) 并为角色名称提供 来启用集成。spring.cloud.vault.elasticsearch.enabled=truefalsespring.cloud.vault.elasticsearch.role=…spring-doc.cn

用户名和密码可从 和 properties 获得,因此使用 Spring Boot 将获取生成的凭据,而无需进一步配置。 您可以通过设置 和 来配置属性名称。spring.elasticsearch.rest.usernamespring.elasticsearch.rest.passwordspring.cloud.vault.elasticsearch.username-propertyspring.cloud.vault.elasticsearch.password-propertyspring-doc.cn

spring.cloud.vault:
    elasticsearch:
        enabled: true
        role: readonly
        backend: mongodb
        username-property: spring.elasticsearch.rest.username
        password-property: spring.elasticsearch.rest.password
  • enabled将此值设置为 enable the Elasticsearch database backend config usagetruespring-doc.cn

  • role设置 Elasticsearch 角色定义的角色名称spring-doc.cn

  • backend设置要使用的 Elasticsearch 挂载的路径spring-doc.cn

  • username-property设置存储 Elasticsearch 用户名的属性名称spring-doc.cn

  • password-property设置存储 Elasticsearch 密码的属性名称spring-doc.cn

8.6. MongoDB 数据库

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

Spring Cloud Vault 可以获取 MongoDB 的凭据。 可以通过设置 (default ) 并为角色名称提供 来启用集成。spring.cloud.vault.mongodb.enabled=truefalsespring.cloud.vault.mongodb.role=…spring-doc.cn

用户名和密码存储在其中,因此使用 Spring Boot 将获取生成的凭据,而无需进一步配置。 您可以通过设置 和 来配置属性名称。spring.data.mongodb.usernamespring.data.mongodb.passwordspring.cloud.vault.mongodb.username-propertyspring.cloud.vault.mongodb.password-propertyspring-doc.cn

spring.cloud.vault:
    mongodb:
        enabled: true
        role: readonly
        backend: mongodb
        username-property: spring.data.mongodb.username
        password-property: spring.data.mongodb.password
  • enabled将此值设置为启用 MongoDB 后端配置使用truespring-doc.cn

  • role设置 MongoDB 角色定义的角色名称spring-doc.cn

  • backend设置要使用的 MongoDB 挂载的路径spring-doc.cn

  • username-property设置存储 MongoDB 用户名的属性名称spring-doc.cn

  • password-property设置存储 MongoDB 密码的属性名称spring-doc.cn

8.7. MySQL的

后端在 Vault 0.7.1 中已弃用,建议使用后端并将其挂载为 . 的配置将在将来的版本中删除。mysqldatabasemysqlspring.cloud.vault.mysql

Spring Cloud Vault 可以获取 MySQL 的凭证。 可以通过设置 (default ) 并为角色名称提供 来启用集成。spring.cloud.vault.mysql.enabled=truefalsespring.cloud.vault.mysql.role=…spring-doc.cn

用户名和密码可从 和 properties 获得,因此使用 Spring Boot 将获取生成的凭据,而无需进一步配置。 您可以通过设置 和 来配置属性名称。spring.datasource.usernamespring.datasource.passwordspring.cloud.vault.mysql.username-propertyspring.cloud.vault.mysql.password-propertyspring-doc.cn

spring.cloud.vault:
    mysql:
        enabled: true
        role: readonly
        backend: mysql
        username-property: spring.datasource.username
        password-property: spring.datasource.password
  • enabled将此值设置为启用 MySQL 后端配置使用truespring-doc.cn

  • role设置 MySQL 角色定义的角色名称spring-doc.cn

  • backend设置要使用的 MySQL 挂载的路径spring-doc.cn

  • username-property设置存储 MySQL 用户名的属性名称spring-doc.cn

  • password-property设置存储 MySQL 密码的属性名称spring-doc.cn

8.8. PostgreSQL 浏览器

后端在 Vault 0.7.1 中已弃用,建议使用后端并将其挂载为 . 的配置将在将来的版本中删除。postgresqldatabasepostgresqlspring.cloud.vault.postgresql

Spring Cloud Vault 可以获取 PostgreSQL 的凭据。 可以通过设置 (default ) 并为角色名称提供 来启用集成。spring.cloud.vault.postgresql.enabled=truefalsespring.cloud.vault.postgresql.role=…spring-doc.cn

用户名和密码可从 和 properties 获得,因此使用 Spring Boot 将获取生成的凭据,而无需进一步配置。 您可以通过设置 和 来配置属性名称。spring.datasource.usernamespring.datasource.passwordspring.cloud.vault.postgresql.username-propertyspring.cloud.vault.postgresql.password-propertyspring-doc.cn

spring.cloud.vault:
    postgresql:
        enabled: true
        role: readonly
        backend: postgresql
        username-property: spring.datasource.username
        password-property: spring.datasource.password
  • enabled将此值设置为启用 PostgreSQL 后端配置使用truespring-doc.cn

  • role设置 PostgreSQL 角色定义的角色名称spring-doc.cn

  • backend设置要使用的 PostgreSQL 挂载的路径spring-doc.cn

  • username-property设置存储 PostgreSQL 用户名的属性名称spring-doc.cn

  • password-property设置存储 PostgreSQL 密码的属性名称spring-doc.cn