CodeBuild criação de função de provisionamento - AWS Proton

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

CodeBuild criação de função de provisionamento

Ferramentas de infraestrutura como código (IAAC), como AWS CloudFormation o Terraform, exigem permissões para os diversos tipos de recursos. AWS Por exemplo, se um modelo do IAAC declarar um bucket do Amazon S3, ele precisará de permissões para criar, ler, atualizar e excluir buckets do Amazon S3. É considerado uma prática recomendada de segurança limitar os perfis às permissões mínimas necessárias. Dada a variedade de AWS recursos, é difícil criar políticas de privilégios mínimos para modelos de IAAC, especialmente quando os recursos gerenciados por esses modelos podem ser alterados posteriormente. Por exemplo, em suas últimas edições em um modelo que está sendo gerenciado por AWS Proton, você adiciona um recurso de RDS banco de dados.

Configurar as permissões corretas ajuda a facilitar as implantações do seu IaC. AWS Proton CodeBuild O provisionamento executa CLI comandos arbitrários fornecidos pelo cliente em um CodeBuild projeto localizado na conta do cliente. Normalmente, esses comandos criam e excluem a infraestrutura usando uma ferramenta de Infraestrutura como Código (IAAC), como AWS CDK. Quando um AWS recurso é implantado cujo modelo usa CodeBuild Provisioning, AWS iniciará uma construção em um CodeBuild projeto gerenciado por. AWS Uma função é passada para CodeBuild, que CodeBuild pressupõe a execução de comandos. Essa função, chamada de função de CodeBuild provisionamento, é fornecida pelo cliente e contém as permissões necessárias para provisionar a infraestrutura. É para ser assumido apenas por CodeBuild e nem mesmo AWS Proton posso presumir.

Criar a função

A função CodeBuild de aprovisionamento pode ser criada no IAM console ou no. AWS CLI Para criá-lo no AWS CLI:

aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AWSProtonCodeBuildProvisioningBasicAccess

Isso também anexa oAWSProtonCodeBuildProvisioningBasicAccess, que contém as permissões mínimas necessárias para o CodeBuild serviço executar uma compilação.

Se você preferir usar o console, certifique-se do seguinte ao criar o perfil:

  1. Para entidade confiável, selecione AWS serviço e, em seguida, selecione CodeBuild.

  2. Na etapa Adicionar permissões, selecione AWSProtonCodeBuildProvisioningBasicAccess e quaisquer outras políticas que você deseja anexar.

Acesso de administrador

Se você anexar a AdministratorAccess política à função de CodeBuild provisionamento, isso garantirá que qualquer modelo do IAAC não falhe devido à falta de permissões. Isso também significa que qualquer pessoa que possa criar um modelo de ambiente ou modelo de serviço pode realizar ações em nível de administrador, mesmo que esse usuário não seja administrador. AWS Proton não recomenda o uso AdministatorAccess com a função de CodeBuild aprovisionamento. Se você decidir usar AdministratorAccess com a função de CodeBuild provisionamento, faça isso em um ambiente sandbox.

Você pode criar uma função AdministratorAccess no IAM console ou executando este comando:

aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
Criação de um perfil com escopo mínimo

Se você quer criar um perfil com o mínimo de permissões, há várias abordagens:

  • Implante com permissões de administrador e, em seguida, defina o perfil. Recomendamos usar o IAMAccess Analyzer.

  • Use políticas gerenciadas para dar acesso aos serviços que você planeja usar.

AWS CDK

Se você está usando AWS CDK com AWS Proton e já executou cdk bootstrap em cada conta/região do ambiente, então já existe uma função para. cdk deploy Nesse caso, anexe a seguinte política à função de CodeBuild aprovisionamento:

{ "Action": "sts:AssumeRole", "Resource": [ "arn:aws:iam::account-id:role/cdk-*-deploy-role-*", "arn:aws:iam::account-id:role/cdk-*-file-publishing-role-*" ], "Effect": "Allow" }
Personalizado VPC

Se você decidir trabalhar de CodeBuild forma personalizada VPC, precisará das seguintes permissões em sua CodeBuild função:

{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:region:account-id:network-interface/*", "arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:security-group/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DeleteNetworkInterface" ], "Resource": [ "arn:aws:ec2:region:account-id:*/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterfacePermission" ], "Resource": "arn:aws:ec2:region:account-id:network-interface/*", "Condition": { "StringEquals": { "ec2:AuthorizedService": "codebuild.amazonaws.com" } } }

Você também pode usar a política gerenciada pelo AmazonEC2FullAccess, embora isso inclua permissões que talvez você não precise. Para anexar a política gerenciada usandoCLI:

aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AdministratorAccess