AWS Pipeline buildspe c отказано в доступе к SecretManager, но развернутый экземпляр Beanstalk авторизован - PullRequest
2 голосов
/ 21 января 2020

Мы настроили политику MyReadOnlySecretServer следующим образом:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetResourcePolicy",
                "secretsmanager:GetSecretValue",
                "secretsmanager:DescribeSecret",
                "secretsmanager:ListSecretVersionIds"
            ],
            "Resource": "arn:aws:secretsmanager:REGION:SOME_ID:secret:ID_OF_OUR_SECRET_JSON"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetRandomPassword",
                "secretsmanager:ListSecrets"
            ],
            "Resource": "*"
        }
    ]
}

Мы развернули приложение SpringBoot на Elasti c Beanstalk и преуспели в получении и использовании секрета в работе.

Однако почему-то, когда мы все еще находимся в фазе сборки конвейера, очевидно, что наш CodeStarWorker не имеет доступа к чтению значений. Вот исключение:

software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: пользователь: arn: aws: sts :: SOME_ID: предполагаемая роль / CodeStarWorker-blabla-ToolChain / AWSCodeBuild-some-long-id не разрешено выполнять: secretsmanager: GetSecretValue на ресурсе: arn: aws: secretsmanager: REGION: SOME_ID: secret: ID_OF_OUR_SECRET_JSON (Служба: SecretsManager, код состояния: 400, идентификатор запроса: some- other-long-id)

У нас было это исключение при попытке доступа к секретам во время развертывания, добавлена ​​политика MyReadOnlySecretServer к роли IAM CodeStarWorker-blabla-ToolChain, как указано в исключении, и все были решены.

Однако, теперь, когда мы пытаемся запустить mvn test в buildspec.yml, мы получаем то же самое исключение.

Почему наш buildspec.yml отказано в доступе, несмотря на то, что выполняется тем же конвейером кода, который выполняет этапы «источник + сборка + развертывание»? После развертывания у экземпляра есть доступ, но во время сборки он не доступен.


Вот buildspec.yml:

version: 0.2

phases:
  install:
    runtime-versions:
      java: openjdk8
    commands:
      # Upgrade AWS CLI to the latest version
      - pip install --upgrade awscli
  pre_build:
    commands:
      - cd $CODEBUILD_SRC_DIR
      - mvn clean compile test  # commenting this "test" makes it run properly
  build:
    commands:
      - mvn war:exploded
  post_build:
    commands:
      - cp -r .ebextensions/ target/ROOT/
      - aws cloudformation package --template template.yml --s3-bucket $S3_BUCKET --output-template-file template-export.yml
      # Do not remove this statement. This command is required for AWS CodeStar projects.
      # Update the AWS Partition, AWS Region, account ID and project ID in the project ARN on template-configuration.json file so AWS CloudFormation can tag project resources.
      - sed -i.bak 's/\$PARTITION\$/'${PARTITION}'/g;s/\$AWS_REGION\$/'${AWS_REGION}'/g;s/\$ACCOUNT_ID\$/'${ACCOUNT_ID}'/g;s/\$PROJECT_ID\$/'${PROJECT_ID}'/g' template-configuration.json
artifacts:
  type: zip
  files:
    - target/ROOT/**/*
    - .ebextensions/**/*
    - 'template-export.yml'
    - 'template-configuration.json'

1 Ответ

2 голосов
/ 22 января 2020

Мне кажется, что CodeBuild берет на себя роль CodeStarWorker-blabla-ToolChain, а сама роль не имеет разрешения «secrettsmanager: GetSecretValue». Кроме того, из памяти у роли CodeStarWorker есть граница разрешений, которая может блокировать доступ, даже если вы явно добавили необходимые разрешения. Подобная проблема обсуждается здесь:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...