104. Secret Backends

104.1 通用后端

Spring Cloud Vault 在基本级别上支持通用 Secret 后端。通用 Secret 后端允许将任意值存储为键值存储。单个上下文可以存储一个或多个键值 Tuples。上下文可以按层次进行组织。 Spring Cloud Vault 允许将应用程序名称和默认上下文名称(application)与Active配置文件结合使用。

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

应用程序名称由以下属性确定:

可以通过在通用后端中的其他上下文中获取 Secret,方法是将其路径添加到应用程序名称中,并用逗号分隔。例如,给定应用程序名称usefulapp,mysql1,projectx/aws,将使用以下每个文件夹:

Spring Cloud Vault 将所有Active配置文件添加到可能的上下文路径列表中。没有Active Profile 会跳过使用 Profile 名称的访问上下文。

就像存储属性一样公开属性(即不带其他前缀)。

spring.cloud.vault:
    generic:
        enabled: true
        backend: secret
        profile-separator: '/'
        default-context: application
        application-name: my-app

Note

键值 Secret 后端可以在版本控制(v2)和非版本控制(v1)模式下运行。根据操作模式,需要不同的 API 来访问机密。确保为非版本化的键值后端启用genericSecret 后端用法,并为版本化的键值后端启用kvSecret 后端用法。

另请参阅:Vault文件:使用 KVSecret 引擎-版本 1(通用 Secret 后端)

104.2 版本化的键值后端

Spring Cloud Vault 支持版本化的 Key-ValueSecret 后端。键值后端允许将任意值存储为键值存储。单个上下文可以存储一个或多个键值 Tuples。上下文可以按层次进行组织。 Spring Cloud Vault 允许将应用程序名称和默认上下文名称(application)与Active配置文件结合使用。

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

应用程序名称由以下属性确定:

可以通过在键值后端中的其他上下文中获取 Secret,方法是将其路径添加到应用程序名称中,并以逗号分隔。例如,给定应用程序名称usefulapp,mysql1,projectx/aws,将使用以下每个文件夹:

Spring Cloud Vault 将所有Active配置文件添加到可能的上下文路径列表中。没有Active Profile 会跳过使用 Profile 名称的访问上下文。

就像存储属性一样公开属性(即不带其他前缀)。

Note

Spring Cloud Vault 在安装路径和实际上下文路径之间添加data/上下文。

spring.cloud.vault:
    kv:
        enabled: true
        backend: secret
        profile-separator: '/'
        default-context: application
        application-name: my-app

Note

键值 Secret 后端可以在版本控制(v2)和非版本控制(v1)模式下运行。根据操作模式,需要不同的 API 来访问机密。确保为非版本化的键值后端启用genericSecret 后端用法,并为版本化的键值后端启用kvSecret 后端用法。

另请参阅:Vault文件:使用 KV Secrets Engine-版本 2(版本键值后端)

104.3 Consul

Spring Cloud Vault 可以获取 HashiCorp Consul 的凭据。 Consul 集成需要spring-cloud-vault-config-consul依赖性。

实施例 104.1. pom.xml

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-vault-config-consul</artifactId>
        <version>1.0.0.BUILD-SNAPSHOT</version>
    </dependency>
</dependencies>

可以通过设置spring.cloud.vault.consul.enabled=true(默认为false)并为角色名称提供spring.cloud.vault.consul.role=…来启用集成。

所获得的令牌存储在spring.cloud.consul.token中,因此使用 Spring Cloud Consul 无需进一步配置即可获取所生成的凭证。您可以通过设置spring.cloud.vault.consul.token-property来配置属性名称。

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

另请参阅:Vault文件:使用Vault设置 Consul

104.4 RabbitMQ

Spring Cloud Vault 可以获取 RabbitMQ 的凭据。

RabbitMQ 集成需要spring-cloud-vault-config-rabbitmq依赖性。

示例 104.2. pom.xml

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-vault-config-rabbitmq</artifactId>
        <version>1.0.0.BUILD-SNAPSHOT</version>
    </dependency>
</dependencies>

可以通过设置spring.cloud.vault.rabbitmq.enabled=true(默认为false)并为角色名称提供spring.cloud.vault.rabbitmq.role=…来启用集成。

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

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

另请参阅:Vault文件:使用Vault设置 RabbitMQ

104.5 AWS

Spring Cloud Vault 可以获取 AWS 的凭证。

AWS 集成需要spring-cloud-vault-config-aws依赖项。

示例 104.3. pom.xml

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-vault-config-aws</artifactId>
        <version>1.0.0.BUILD-SNAPSHOT</version>
    </dependency>
</dependencies>

可以通过设置spring.cloud.vault.aws=true(默认为false)并为角色名称提供spring.cloud.vault.aws.role=…来启用集成。

访问密钥和 Secret 密钥存储在cloud.aws.credentials.accessKeycloud.aws.credentials.secretKey中,因此使用 Spring Cloud AWS 无需进一步配置即可获取生成的凭证。您可以通过设置spring.cloud.vault.aws.access-key-propertyspring.cloud.vault.aws.secret-key-property来配置属性名称。

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

另请参阅:Vault文件:使用Vault设置 AWS

首页