CodeBuild Permitir interagir com outros AWS serviços - AWS CodeBuild

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 Permitir interagir com outros AWS serviços

Se você seguir as etapas Conceitos básicos que usam o console AWS CodeBuild para acessar pela primeira vez, provavelmente não precisará das informações deste tópico. No entanto, à medida que você continua usando CodeBuild, talvez queira fazer coisas como permitir CodeBuild a interação com outros AWS serviços.

Para permitir CodeBuild a interação com AWS serviços dependentes em seu nome, você precisa de uma função AWS CodeBuild de serviço. Você pode criar uma função CodeBuild de serviço usando os AWS CodePipeline consoles CodeBuild ou. Para obter mais informações, consulte:

Se você não planeja usar esses consoles, esta seção descreve como criar uma função CodeBuild de serviço com o IAM console ou o. AWS CLI

Importante

CodeBuild usa a função de serviço para todas as operações que são realizadas 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.

A função de serviço descrita nesta página contém uma política que concede as permissões mínimas necessárias para uso CodeBuild. Talvez seja necessário adicionar permissões, dependendo do caso de uso.

Para criar uma função CodeBuild de serviço (console)
  1. Abra o IAM console em https://console.aws.amazon.com/iam/.

    Você já deverá estar conectado no console de uma das seguintes maneiras:

    • Sua conta AWS root. 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 em sua AWS conta. Para obter mais informações, consulte Criando seu primeiro usuário e grupo Conta da AWS raiz no Guia do usuário.

    • Um usuário em sua AWS conta com permissão para realizar 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 Visão geral das IAM políticas no Guia do usuário.

  2. No painel de navegação, escolha Policies.

  3. Escolha Create Policy (Criar política).

  4. Na página Criar política, escolha JSON.

  5. Para a JSON política, insira o seguinte e escolha 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

    Essa política contém declarações que permitem o acesso a um número potencialmente grande de AWS recursos. AWS CodeBuild Para restringir o acesso a AWS recursos específicos, altere o valor da Resource matriz. Para obter mais informações, consulte a documentação de segurança do AWS serviço.

  6. 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.

  7. No painel de navegação, escolha Roles.

  8. Selecione Create role.

  9. Na página Criar função, com o AWS Serviço já selecionado, escolha e, em seguida CodeBuild, escolha Avançar:Permissões.

  10. Na página Anexar políticas de permissões, selecione e CodeBuildServiceRolePolicy, em seguida, escolha Avançar: Revisão.

  11. 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).

Para criar uma função CodeBuild de serviço (AWS CLI)
  1. Certifique-se de ter configurado o AWS CLI com a chave de AWS acesso e a chave de acesso AWS secreta que correspondem a uma das IAM entidades, conforme 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 .

  2. Em um diretório vazio na estação de trabalho local ou na instância em que o AWS CLI está instalado, crie dois arquivos chamados create-role.json e. put-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 e aws: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. aws:SourceAccountÉ o proprietário do CodeBuild projeto e o aws:SourceArn é o CodeBuild projetoARN.

    Se você quiser restringir sua função de serviço a uma AWS conta, create-role.json pode ter uma aparência semelhante a esta:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": [ "account-ID" ] } } } ] }

    Se você quiser restringir sua função de serviço a um CodeBuild projeto específico, create-role.json pode ter uma aparência semelhante a esta:

    { "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 sabe ou não escolheu um nome para seu CodeBuild projeto e quer uma restrição de política de confiança em um ARN padrão específico, você pode substituir essa parte do ARN por um caractere 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

    Essa política contém declarações que permitem o acesso a um número potencialmente grande de AWS recursos. AWS CodeBuild Para restringir o acesso a AWS recursos específicos, altere o valor da Resource matriz. Para obter mais informações, consulte a documentação de segurança do AWS serviço.

  3. 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 e CodeBuildServiceRolePolicy, 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