7. 秘密后端

7.1. 键值后端

Spring Cloud Vault 支持键值秘密后端,即版本化 (v2) 和未版本化 (v1)。 键值后端允许将任意值存储为键值存储。 单个上下文可以存储一个或多个键值元组。 上下文可以按层次结构进行组织。 Spring Cloud Vault 会自行确定秘密是否正在使用版本控制,并将路径映射到其相应的 URL。 Spring Cloud Vault 允许使用应用程序名称和默认上下文名称 (application) 与 Active Profiles 结合使用。spring-doc.cadn.net.cn

/secret/{application}/{profile}
/secret/{application}
/secret/{default-context}/{profile}
/secret/{default-context}

应用程序名称由以下属性确定:spring-doc.cadn.net.cn

配置文件由以下属性确定:spring-doc.cadn.net.cn

可以通过将 Secret 的路径添加到应用程序名称(以逗号分隔)来从 key-value backend 中的其他上下文中获取。 例如,给定应用程序名称usefulapp,mysql1,projectx/aws,将使用以下每个文件夹:spring-doc.cadn.net.cn

Spring Cloud Vault 将所有活动配置文件添加到可能的上下文路径列表中。 任何活动配置文件都不会跳过访问具有配置文件名称的上下文。spring-doc.cadn.net.cn

属性的公开方式与存储时一样(即没有额外的前缀)。spring-doc.cadn.net.cn

Spring Cloud Vault 将data/context 之间的 context,具体取决于挂载是否使用版本控制的键值后端。
spring.cloud.vault:
    kv:
        enabled: true
        backend: secret
        profile-separator: '/'
        default-context: application
        application-name: my-app
        profiles: local, cloud
键值密钥后端可以在版本控制 (v2) 和非版本控制 (v1) 模式下运行。

另请参阅:spring-doc.cadn.net.cn

7.2. 领事

Spring Cloud Vault 可以获取 HashiCorp Consul 的凭据。 Consul 集成需要spring-cloud-vault-config-consulDependency。spring-doc.cadn.net.cn

例 31.pom.xml
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-vault-config-consul</artifactId>
        <version>3.0.4</version>
    </dependency>
</dependencies>

可以通过设置spring.cloud.vault.consul.enabled=true(默认false) 并为角色名称提供spring.cloud.vault.consul.role=….spring-doc.cadn.net.cn

获取的 Token 存储在spring.cloud.consul.token因此,使用 Spring Cloud Consul 无需进一步配置即可获取生成的凭据。 您可以通过设置spring.cloud.vault.consul.token-property.spring-doc.cadn.net.cn

spring.cloud.vault:
    consul:
        enabled: true
        role: readonly
        backend: consul
        token-property: spring.cloud.consul.token

7.3. RabbitMQ

Spring Cloud Vault 可以获取 RabbitMQ 的凭据。spring-doc.cadn.net.cn

RabbitMQ 集成需要spring-cloud-vault-config-rabbitmqDependency。spring-doc.cadn.net.cn

例 32.pom.xml
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-vault-config-rabbitmq</artifactId>
        <version>3.0.4</version>
    </dependency>
</dependencies>

可以通过设置spring.cloud.vault.rabbitmq.enabled=true(默认false) 并为角色名称提供spring.cloud.vault.rabbitmq.role=….spring-doc.cadn.net.cn

用户名和密码存储在spring.rabbitmq.usernamespring.rabbitmq.password因此,使用 Spring Boot 将获取生成的凭据,而无需进一步配置。 您可以通过设置spring.cloud.vault.rabbitmq.username-propertyspring.cloud.vault.rabbitmq.password-property.spring-doc.cadn.net.cn

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

7.4. AWS

Spring Cloud Vault 可以获取 AWS 的凭证。spring-doc.cadn.net.cn

AWS 集成需要spring-cloud-vault-config-awsDependency。spring-doc.cadn.net.cn

例 33.pom.xml
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-vault-config-aws</artifactId>
        <version>3.0.4</version>
    </dependency>
</dependencies>

可以通过设置spring.cloud.vault.aws=true(默认false) 并为角色名称提供spring.cloud.vault.aws.role=….spring-doc.cadn.net.cn

支持的 AWS 凭证类型:spring-doc.cadn.net.cn

访问密钥和密钥存储在cloud.aws.credentials.accessKeycloud.aws.credentials.secretKey.因此,使用 Spring Cloud,AWS 将获取生成的凭证,而无需进一步配置。spring-doc.cadn.net.cn

您可以通过设置spring.cloud.vault.aws.access-key-propertyspring.cloud.vault.aws.secret-key-property.spring-doc.cadn.net.cn

对于 STS 安全令牌,您可以通过设置spring.cloud.vault.aws.session-token-key-property.安全令牌存储在cloud.aws.credentials.sessionToken(默认值)。spring-doc.cadn.net.cn

示例:iam_userspring-doc.cadn.net.cn

spring.cloud.vault:
    aws:
        enabled: true
        role: readonly
        backend: aws
        access-key-property: cloud.aws.credentials.accessKey
        secret-key-property: cloud.aws.credentials.secretKey

示例:assumed_role (STS)spring-doc.cadn.net.cn

spring.cloud.vault:
    aws:
        enabled: true
        role: sts-vault-role
        backend: aws
        credential-type: assumed_role
        access-key-property: cloud.aws.credentials.accessKey
        secret-key-property: cloud.aws.credentials.secretKey
        session-token-key-property: cloud.aws.credentials.sessionToken
        ttl: 3600s
        role-arn: arn:aws:iam::${AWS_ACCOUNT}:role/sts-app-role