Как получить данные Secret Manager в buildspec.yaml - PullRequest
1 голос
/ 03 октября 2019

Я работаю над созданием CodeBuild, который интегрирован с SonarQube, поэтому я передаю значения и учетные данные сонара непосредственно в свой Buildspec.yaml

Вместо прямого кодирования, я попытался получить, используя приведенную ниже команду из SecretManager, какэто упомянуто в ссылке ниже. Но это не получение правильных значений. выдает ошибку.

Команда : '{{resol: secrettsmanager: MyRDSSecret: SecretString: имя пользователя}}'

Ссылка : https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html#dynamic-references-secretsmanager

Ошибка [ОШИБКА] Сервер SonarQube [{{resol: secrettsmanager: arn: aws: secretsmanager: us-east-1: ********: secret: **********: SecretString: SonarURL}}] не может быть достигнуто

Как я использовал echo '{{resolve: secretsmanager: arn: aws: secretsmanager: us-east-1: ***: secret: **************: SecretString: *******}} '

Примечание: все * внутримой комманд это секретное имя и секретер

Ответы [ 3 ]

4 голосов
/ 03 октября 2019

Синтаксис динамической привязки, который вы пытаетесь использовать, работает только со службой Cloud Formation (CFN). В некоторых случаях CFN ограничивает, где эти динамические ссылки на секреты будут расширяться. В частности, они не раскрываются в местах, где секреты могут быть видны в консоли, например в метаданных EC2.

Если вы пытаетесь настроить сборку кода через CFN, это может быть тем, что вы видите. Однако, как упоминалось в shariqmaws, вы можете использовать хранилище параметров и либо хранить там свой секрет, либо использовать хранилище параметров в качестве пропуска к менеджеру секретов (в случае, если вы хотите использовать диспетчер секретов для вращения ваших секретов или для других целей). причины).

3 голосов
/ 03 октября 2019

Если вы хотите получить секреты из вашего файла buildspec, я бы порекомендовал использовать хранилище параметров Systems Manager, изначально встроенное в CodeBuild. Systems Manager сам по себе является службой, ищите его на домашней странице консоли AWS, затем Paramater Store находится в левом нижнем углу страницы консоли System Manager.

Предположим, вы хотите включить ключ доступа и секретный ключ в buildscpe. Файл .yml:
- Создать пару AccessKey / SecretKey для пользователя IAM
- Сохранить вышеуказанные ключи в хранилище параметров SSM в качестве защищенной строки (например, '/ CodeBuild / AWS_ACCESS_KEY_ID' и '/ CodeBuild / AWS_SECRET_ACCESS_KEY')
- Экспортируйте два значения в вашей среде сборки, используя следующие директивы (ы) buildspec:

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

1 голос
/ 07 ноября 2019

CodeBuild только что запустил это сегодня - https://aws.amazon.com/about-aws/whats-new/2019/11/aws-codebuild-adds-support-for-aws-secrets-manager/

...