如何从 AWS Secrets Manager 访问密钥值对密钥?

问题描述

我有一个使用 bosh 部署的大厅环境。它配置了 AWS Secrets Manager。 管道机密模板的格式为 /concourse/{{.Team}}/{{.Secret}}

我在 AWS Secrets Manager(其他类型的密钥)中创建了一个密钥 /concourse/team1/general,其值如下所示。

{
  "gitbranch": "master","hello": "2","general": "hi"
}

我在 hello-world.yml 团队中设置了一个大厅管道 team1

---
jobs:
- name: job
  public: true
  plan:
  - task: check-secret
    config:
      platform: linux
      image_resource:
        type: registry-image
        source: { repository: busyBox }
      run:
        path: echo
        args: ["((general))"]

此管道将值输出

{"gitbranch":"master","hello":"2","general":"hi"}

但是,如果我将管道中的参数(最后一行)更改为 args: ["((general.gitbranch))"],则会出现以下错误

Failed to interpolate task config: cannot access field 'gitbranch' of non-map value ('string') from var: general.gitbranch

是否可以在大厅管道中从 AWS Secrets Manager 访问密钥中的任何键值对?如果是,怎么做?

解决方法

回答我自己的问题。

通过使用带有参数 --secret-binary 的 cli 创建秘密,我能够实现获取键值对。

(以前,我是从 aws 控制台创建机密的,该机密被创建为机密字符串。)

我使用以下命令更新我的秘密以将秘密创建为二进制文件。

b64key=$(base64 secrets.json)
aws secretsmanager update-secret \
    --secret-id  /concourse/team1/general \
    --secret-binary "$b64key"

我发现了这个 using-aws-secrets-manager-with-concourse-ci,它对解决问题很有帮助。

如果有人知道在控制台中执行此操作的方法,请告诉我。