当我尝试使用AWS IAM角色连接HashiCorp Vault时,如何解决“无法解析的Vault位置[kv / my-client-service]:找不到”的问题?

时间:2020-06-18 11:54:49

标签: amazon-web-services spring-cloud amazon-iam hashicorp-vault spring-vault

我已经使用HashiCorp Vault已有六个月了,那里的所有秘密都来自配置服务。我正在使用 spring.cloud.config.token 连接所有客户端服务,但是当保管库令牌每隔30天到期时,就会出现问题。对于较低的环境,令牌到期是可以接受的,因为我们可以一次又一次地重新部署,但是在生产中,我们不能重新部署。因此,决定使用AWS IAM角色可以连接到保管库,并且不会过期。

我已经遵循了该官方link的要求,但是在启动应用程序时遇到了以下问题。

enter image description here

我已经用谷歌搜索了,但是没有一个可行的解决方案。

我在客户服务(my-client-service)的bootstrap.yml文件中使用以下代码

bootstrap.yml

spring:
  application:
    name: my-client-service
  cloud:
    config:
      enabled: true
      uri:  'https://localhost:8080' 
    vault:
      enabled: true
      uri: 'https://localhost:8090'
      port: 443
      scheme: https
      namespace: 'vault-namespace/aus'
      authentication: AWS_IAM
      fail-fast: true
      aws-iam:
        role: aus-vault-role
        aws-path: aws
      generic:
        enabled: true
        backend: kv
        profile-separator: '/'
        default-context: my-client-service
        application-name: my-client-service
      config:
        order: -1000

对AWS的保管箱身份验证ARN

vault write auth/aws/config/sts/<account_number> sts_role=arn:aws:iam::<account_number>:role/role_name

将ARN与保险柜策略相关联

我为为保险柜角色和策略映射的同一帐户创建了一个IAM角色,并将每个IAM角色映射到保险柜角色和策略。

vault write auth/aws/role/<Vault Role> auth_type=iam \
              bound_iam_principal_arn=<Your AWS Role ARN> policies=<Vault policy list> max_ttl=500h

我错过了什么吗?如果找到解决此问题的任何方法,那就太好了。预先感谢!

2 个答案:

答案 0 :(得分:4)

使用以下配置更新文件库策略后,我已解决此问题:

path "kv/*"
{
  capabilities = [ "read", "list"]
}

我能够在获取库属性的情况下启动我的应用程序。

答案 1 :(得分:2)

我认为您的情况下的政策更新很合适:

path "kv/*"
{
  capabilities = [ "read", "list"]
}

将其定向到您的秘密的正确路径将解决您的问题。