当我尝试使用 AWS IAM 角色连接 HashiCorp Vault 时,如何修复“Vault location [kv/my-client-service] not resolvable: Not

Posted

技术标签:

【中文标题】当我尝试使用 AWS IAM 角色连接 HashiCorp Vault 时,如何修复“Vault location [kv/my-client-service] not resolvable: Not found”?【英文标题】:How to fix "Vault location [kv/my-client-service] not resolvable: Not found" when I am trying to connect HashiCorp Vault using AWS IAM role? 【发布时间】:2020-10-08 11:27:35 【问题描述】:

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

我已经关注了这个官方link,但是我在启动应用程序时遇到了以下问题。

我用谷歌搜索过,但没有找到可行的解决方案。

我在客户端服务 (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

我错过了什么吗?如果我能找到这个问题的任何解决方案,那就太好了。提前致谢!

【问题讨论】:

【参考方案1】:

我在使用以下配置更新我的保管库策略后解决了这个问题:

path "kv/*"

  capabilities = [ "read", "list"]

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

【讨论】:

【参考方案2】:

我认为您的政策更新是恰当的:

path "kv/*"

  capabilities = [ "read", "list"]

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

【讨论】:

以上是关于当我尝试使用 AWS IAM 角色连接 HashiCorp Vault 时,如何修复“Vault location [kv/my-client-service] not resolvable: Not的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 python boto3 将新角色权限附加到 aws 中的 iam_role?

AWS 跨账户 Postgres RDS IAM 身份验证

AWS Lambda:即使在STS:AssumeRole成功之后,lambda函数仍然使用旧的IAM角色

如何使用 IAM 角色通过 aws sdk (java) 从 ECS 容器调用 s3 存储桶

通过 boto3 担任 IAM 用户角色时访问被拒绝

Spark + S3 + IAM 角色