带有Git / Vault后端的Spring Cloud Config - 令牌直通

时间:2017-09-05 19:43:04

标签: spring-boot spring-cloud-config hashicorp-vault spring-vault spring-cloud-vault-config

不是为Spring Cloud Config Server提供AppRole或静态令牌来访问所有应用程序中的所有机密,是否可以配置Spring Cloud Vault配置以使用在配置请求上给出了令牌?

此通信将通过标头中的令牌进行双向SSL。向外发送这样的令牌并不理想,但在这种情况下似乎是正确的解决方案。

请记住,这是一个使用Git + Vault作为后端的Spring Cloud Config Server,以便将机密,变量等解析为所需的配置。这不仅可以用于Spring配置,还可以用于传递到短暂环境的其他文件,例如Apache的httpd.conf(将秘密转移到的错误示例)

此处的目标是尽可能限制访问,并将其限制为请求配置的最终应用程序。也很高兴不在Spring Config上使用AuthZ重复RBAC工作 AND 保险柜政策。

1 个答案:

答案 0 :(得分:1)

您可以配置与Config Server对话的每个Spring Boot应用程序以发送其'拥有Config Server的唯一令牌,然后传递给Vault。

Vault将允许根据定义对该资源的访问权限以及授予该令牌的权限的策略来访问所请求的资源。

第1步:定义政策。

cat ./rules/application-a.hcl <<EOF
path "secret/application" {
  capabilities = ["read", "list"]
}
path "secret/application-a" {
  capabilities = ["read", "list"]
}
EOF

第2步:将政策写入保险柜。

vault write sys/policy/policy-application-a rules=@./rules/application-a.hcl

步骤3:使用定义的策略创建令牌。

vault token-create -display-name="My Application A" -policy="policy-application-a"

第4步:将一些数据写入Vault

vault write secret/application-a @application-a-config.json

步骤5:配置Spring Boot应用程序以使用其&#39;令牌。

使用上面步骤3中创建的令牌。在应用程序的 bootstrap.yml 文件中设置以下内容。如果您在容器化环境中运行,也可以在运行时通过它。

spring:
  cloud:
    config:
      uri: https://configserver:8888/
      token: <secret token>

Spring处理令牌从客户端应用程序到Config Server的转移,然后转移到Vault。

对于任何其他应用程序,您可以在HTTP请求的标头中设置令牌。

从Vault文档中: https://www.vaultproject.io/intro/getting-started/apis.html

curl -X GET -H "X-Vault-Token:$VAULT_TOKEN" http://127.0.0.1:8200/v1/secret/application-a

我希望这会对你有所帮助。