6

我正在创建与 SonarQube 集成的 CodeBuild,所以我直接在我的 Buildspec.yaml 中传递值和声纳凭证

我没有直接硬编码,而是尝试使用 SecretManager 中的以下命令进行检索,如下面的链接中所述。但它没有得到正确的值。它抛出一个错误。

命令:'{{resolve:secretsmanager:MyRDSSecret:SecretString:username}}'

链接https ://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html#dynamic-references-secretsmanager

错误[ERROR] SonarQube 服务器 [{{resolve:secretsmanager:arn:aws:secretsmanager:us-east-1:********:secret:**********:SecretString:SonarURL }}] 无法连接

我如何使用echo '{{resolve:secretsmanager:arn:aws:secretsmanager:us-east-1:***:secret:**************:SecretString:**** ***}}'

注意:我的命令中的所有 * 都是 secretname 和 secreturl

4

3 回答 3

12

如果您希望在 buildspec 文件中检索机密,我建议使用与 CodeBuild 原生集成的 Systems Manager Parameter Store。Systems Manager 本身就是一项服务,从 AWS 控制台主页搜索它,然后 Paramater Store 位于 Systems Manager 控制台页面的左下方。

假设您希望在 buildspec.yml 文件中包含访问密钥和秘密密钥:
- 为 IAM 用户创建访问密钥/秘密密钥对
- 将上述密钥保存在 SSM 参数存储中作为安全字符串(例如“/CodeBuild/AWS_ACCESS_KEY_ID”和“ /CodeBuild/AWS_SECRET_ACCESS_KEY')
- 使用以下构建规范指令导出构建环境中的两个值:

version: 0.2
env:
    parameter-store:
        AWS_ACCESS_KEY_ID_PARAM: /CodeBuild/AWS_ACCESS_KEY_ID
        AWS_SECRET_ACCESS_KEY_PARAM: /CodeBuild/AWS_SECRET_ACCESS_KEY

phases:
    build:
        commands:
            - export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID_PARAM
            - export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY_PARAM
            # Your Ansible commands below
            - ansible-playbook -i hosts ec2-key.yml 

[1] CodeBuild 的构建规范参考 - 构建规范语法 - https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec-ref-syntax

于 2019-10-03T13:43:25.173 回答
10

CodeBuild 今天刚刚推出 - https://aws.amazon.com/about-aws/whats-new/2019/11/aws-codebuild-adds-support-for-aws-secrets-manager/

于 2019-11-06T23:42:04.630 回答
5

您尝试使用的动态引用语法仅适用于 Cloud Formation (CFN) 服务。在某些情况下,CFN 会限制这些对机密的动态引用将扩展到何处。具体来说,它们不会在控制台中可能显示机密的地方扩展,例如在 EC2 元数据中。

如果您尝试通过 CFN 设置代码构建,这可能就是您所看到的。但是,正如 shariqmaws 所提到的,您可以使用参数存储并将您的秘密存储在那里,或者使用参数存储作为对秘密管理器的传递(如果您想使用秘密管理器来轮换秘密或出于其他原因)。

于 2019-10-03T17:15:29.417 回答