【问题标题】:How to access a key value pair secret from AWS Secrets Manager, in concourse?如何在大厅中从 AWS Secrets Manager 访问键值对密钥?
【发布时间】:2021-06-12 19:28:38
【问题描述】:

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

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

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

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

---
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(最后一行)更改为 args: ["((general.gitbranch))"],则会出现以下错误

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

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

【问题讨论】:

    标签: amazon-web-services concourse aws-secrets-manager secretsmanager bosh


    【解决方案1】:

    回答我自己的问题。

    通过使用带有参数--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,它对解决问题很有帮助。

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

    【讨论】:

    • 嘿,你找到了我的博文,太好了!我正要发布它作为答案。 Concourse 中读取这些机密的代码将所有非二进制机密视为字符串,将所有二进制机密视为 JSON。这是我上次查看 Concourse 文档时未记录的“功能”。
    • 回答您的其他问题,目前无法通过 AWS 控制台创建二进制机密。
    • @MarkB 感谢您的评论。是的,我能够找到您的博文,并且及时提供了帮助。
    猜你喜欢
    • 2020-10-26
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 2019-02-15
    • 2020-08-14
    • 2021-04-11
    相关资源
    最近更新 更多