Permitir que o CodeBuild interaja com outros serviços da AWS
Se você seguir as etapas em Conceitos básicos que usam o console para acessar o AWS CodeBuild pela primeira vez, provavelmente não precisará das informações neste tópico. No entanto, à medida que você continua usando o CodeBuild, talvez queira realizar ações como permitir que o CodeBuild interaja com outros serviços da AWS.
Para permitir que o CodeBuild interaja com serviços dependentes da AWS em seu nome, você precisa de um perfil de serviço do AWS CodeBuild. É possível criar um perfil de serviço do CodeBuild usando os consoles do CodeBuild ou do AWS CodePipeline. Para obter mais informações, consulte:
Se você não pretende usar esses consoles, esta seção descreve como criar um perfil de serviço do CodeBuild com o console do IAM ou a AWS CLI.
Importante
O CodeBuild usa o perfil de serviço para todas as operações que serão executadas em seu nome. Se o perfil inclui permissões que o usuário não precisa, você pode ampliar involuntariamente as permissões de um usuário. Certifique-se de que a função concede o menor privilégio.
O perfil de serviço descrito nesta página contém uma política que concede as permissões mínimas necessárias para usar o CodeBuild. Talvez seja necessário adicionar permissões, dependendo do caso de uso.
Como criar um perfil de serviço do CodeBuild (console)
Abra o console do IAM em https://console.aws.amazon.com/iam/
. Você já deverá estar conectado no console de uma das seguintes maneiras:
-
Sua conta raiz AWS. Isso não é recomendado. Para obter mais informações, consulte The Conta da AWS root user no Guia do usuário.
-
Um usuário administrador na conta da AWS. Para obter mais informações, consulte Creating Your First Conta da AWS root user and Group no Guia do usuário.
-
Um usuário na conta da AWS com permissão para executar o seguinte conjunto mínimo de ações:
iam:AddRoleToInstanceProfile iam:AttachRolePolicy iam:CreateInstanceProfile iam:CreatePolicy iam:CreateRole iam:GetRole iam:ListAttachedRolePolicies iam:ListPolicies iam:ListRoles iam:PassRole iam:PutRolePolicy iam:UpdateAssumeRolePolicy
Para obter mais informações, consulte Overview of IAM Policies no Guia do usuário.
-
-
No painel de navegação, escolha Policies.
-
Escolha Criar política.
-
Na página Create Policy, escolha JSON.
-
Na política JSON, insira o seguinte e escolha Review Policy (Revisar política):
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchLogsPolicy", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" }, { "Sid": "CodeCommitPolicy", "Effect": "Allow", "Action": [ "codecommit:GitPull" ], "Resource": "*" }, { "Sid": "S3GetObjectPolicy", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "*" }, { "Sid": "S3PutObjectPolicy", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "*" }, { "Sid": "ECRPullPolicy", "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" }, { "Sid": "ECRAuthPolicy", "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken" ], "Resource": "*" }, { "Sid": "S3BucketIdentity", "Effect": "Allow", "Action": [ "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource": "*" } ] }
nota
Essas políticas contêm declarações que permitem acesso a uma grande variedade de recursos AWS. Para restringir acesso do AWS CodeBuild a recursos específicos da AWS, altere o valor da matriz
Resource
. Para obter mais informações, consulte a documentação de segurança do serviço AWS. -
Na página Review Policy (Revisar política), em Policy Name (Nome da política), insira um nome para a política (por exemplo,
CodeBuildServiceRolePolicy
) e escolha Create policy (Criar política).nota
Se você usar um nome diferente, certifique-se de usá-lo durante todo este procedimento.
-
No painel de navegação, escolha Roles.
-
Escolha Criar Perfil.
-
Na página Criar perfil, com Serviço da AWS já selecionado, escolha CodeBuild e, depois, selecione Próximo: Permissões.
-
Na página Anexar políticas de permissões, selecione CodeBuildServiceRolePolicy e, depois, escolha Próximo: Revisar.
-
Na página Create role and review (Criar função e revisão), em Role name (Nome da função), insira um nome para a função (por exemplo,
CodeBuildServiceRole
) e escolha Create role (Criar função).
Como criar um perfil de serviço do CodeBuild (AWS CLI)
-
Certifique-se de você tenha configurado a AWS CLI com a chave de acesso da AWS e a chave de acesso secreta da AWS correspondentes a uma das entidades do IAM, como descrito no procedimento anterior. Para obter mais informações, consulte Noções básicas de configuração do AWS Command Line Interface no Guia do usuário do AWS Command Line Interface.
-
Em um diretório vazio na estação de trabalho ou instância local onde a AWS CLI esteja instalada, crie dois arquivos chamados
create-role.json
eput-role-policy.json
. Se você escolher nomes de arquivo diferentes, certifique-se de usá-los durante este procedimento.create-role.json
:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
nota
Recomendamos o uso das chaves de condição
aws:SourceAccount
eaws:SourceArn
para se proteger contra o problema confused deputy. Por exemplo, é possível editar a política de confiança anterior com os blocos de condição a seguir. Oaws:SourceAccount
é o proprietário do projeto do CodeBuild e oaws:SourceArn
é o ARN do projeto do CodeBuild.Se quiser restringir o perfil de serviço a uma conta da AWS,
create-role.json
poderá ter a seguinte aparência:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": [ "
account-ID
" ] } } } ] }Se quiser restringir o perfil de serviço a um projeto do CodeBuild específico,
create-role.json
poderá ter a seguinte aparência:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:codebuild:
region-ID
:account-ID
:project/project-name
" } } } ] }nota
Se você não souber ou não tiver decidido um nome para o projeto do CodeBuild e quiser uma restrição de política de confiança em um padrão de ARN específico, poderá substituir essa parte do ARN por um curinga (*). Depois de criar o projeto, você poderá atualizar a política de confiança.
put-role-policy.json
:{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchLogsPolicy", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" }, { "Sid": "CodeCommitPolicy", "Effect": "Allow", "Action": [ "codecommit:GitPull" ], "Resource": "*" }, { "Sid": "S3GetObjectPolicy", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "*" }, { "Sid": "S3PutObjectPolicy", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "*" }, { "Sid": "S3BucketIdentity", "Effect": "Allow", "Action": [ "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource": "*" } ] }
nota
Essas políticas contêm declarações que permitem acesso a uma grande variedade de recursos AWS. Para restringir acesso do AWS CodeBuild a recursos específicos da AWS, altere o valor da matriz
Resource
. Para obter mais informações, consulte a documentação de segurança do serviço AWS. -
Navegue até o diretório onde você salvou os arquivos anteriores, e execute os dois comandos seguintes, um por vez, nessa ordem. Você pode usar valores diferentes para
CodeBuildServiceRole
eCodeBuildServiceRolePolicy
, mas não se esqueça de usá-los aqui.aws iam create-role --role-name CodeBuildServiceRole --assume-role-policy-document file://create-role.json
aws iam put-role-policy --role-name CodeBuildServiceRole --policy-name CodeBuildServiceRolePolicy --policy-document file://put-role-policy.json