Configuração avançada - 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á.

Configuração avançada

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. Contudo, ao continuar usando o CodeBuild, é recomendável realizar algumas ações, como conceder acesso ao CodeBuild a grupos e usuários do IAM da organização; modificar perfis de serviço existentes no IAM ou em AWS KMS keys para acesso ao CodeBuild ou configurar o AWS CLI nas estações de trabalho da organização para acesso ao CodeBuild. Este tópico descreve como executar as etapas de configuração relacionadas.

Supomos que você já tenha uma conta AWS. No entanto, se ainda não tiver uma conta, acesse http://aws.amazon.com, selecione Faça login no console e siga as instruções on-line.

Adicionar permissões de acesso do CodeBuild a um grupo ou um usuário do IAM

Para acessar o AWS CodeBuild com um grupo ou um usuário do IAM, é necessário adicionar permissões de acesso. Esta seção descreve como fazer isso pelo console do IAM ou a AWS CLI.

Se você acessar o CodeBuild com a conta raiz da AWS (não recomendado) ou um usuário administrador na conta da AWS, não é necessário seguir estas instruções.

Para obter informações sobre contas raiz da AWS e usuários administradores, consulte The Conta da AWS root user e Creating Your First Conta da AWS root user and Group no Guia do usuário.

Como adicionar permissões de acesso do CodeBuild a um grupo ou um usuário do IAM (console)
  1. Abra o console do IAM em https://console.aws.amazon.com/iam/.

    Você já deverá estar conectado no AWS Management 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:AttachGroupPolicy iam:AttachUserPolicy iam:CreatePolicy iam:ListAttachedGroupPolicies iam:ListAttachedUserPolicies iam:ListGroups iam:ListPolicies iam:ListUsers

      Para obter mais informações, consulte Overview of IAM Policies no Guia do usuário.

  2. No painel de navegação, escolha Policies (Políticas).

  3. Para adicionar um conjunto personalizado de permissões de acesso do AWS CodeBuild a um grupo ou um usuário do IAM, vá para a etapa 4 deste procedimento.

    Para adicionar um conjunto padrão de permissões de acesso do CodeBuild a um grupo ou um usuário do IAM, selecione Tipo de política, Gerenciada da AWS e, depois, faça o seguinte:

    • Para adicionar permissões de acesso total ao CodeBuild, selecione a caixa chamada AWSCodeBuildAdminAccess e escolha Ações de política e Anexar. Selecione a caixa ao lado do grupo ou do usuário do IAM de destino e, depois, escolha Anexar política. Repita isso para as políticas AmazonS3ReadOnlyAccess e IAMFullAccess.

    • Para adicionar permissões de acesso ao CodeBuild para todos os recursos, exceto a administração de projetos de compilação, marque a caixa AWSCodeBuildDeveloperAccess, escolha Ações de política e Anexar. Selecione a caixa ao lado do grupo ou do usuário do IAM de destino e, depois, escolha Anexar política. Repita isso para a política AmazonS3ReadOnlyAccess.

    • Para adicionar permissões de acesso somente leitura ao CodeBuild, selecione as caixas denominadas AWSCodeBuildReadOnlyAccess. Selecione a caixa ao lado do grupo ou do usuário do IAM de destino e, depois, escolha Anexar política. Repita isso para a política AmazonS3ReadOnlyAccess.

    Agora você adicionou um conjunto padrão de permissões de acesso do CodeBuild a um grupo ou um usuário do IAM. Ignore as etapas seguintes deste procedimento.

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

  5. Na página Create Policy, próximo a Create Your Own Policy, escolha Select.

  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, CodeBuildAccessPolicy). Se você usar um nome diferente, certifique-se de usá-lo durante todo este procedimento.

  7. Em Policy Document (Documento de política), insira o seguinte e selecione Create Policy (Criar política):

    { "Version": "2012-10-17", "Statement": [ { "Sid": "CodeBuildAccessPolicy", "Effect": "Allow", "Action": [ "codebuild:*" ], "Resource": "*" }, { "Sid": "CodeBuildRolePolicy", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::account-ID:role/role-name" }, { "Sid": "CloudWatchLogsAccessPolicy", "Effect": "Allow", "Action": [ "logs:FilterLogEvents", "logs:GetLogEvents" ], "Resource": "*" }, { "Sid": "S3AccessPolicy", "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:GetObject", "s3:List*", "s3:PutObject" ], "Resource": "*" }, { "Sid": "S3BucketIdentity", "Effect": "Allow", "Action": [ "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource": "*" } ] }
    nota

    Essas políticas permitem acesso a todas as ações do CodeBuild e a uma grande variedade de recursos da AWS. Para restringir permissões para ações específicas do CodeBuild, altere o valor codebuild:* na declaração de política do CodeBuild. Para obter mais informações, consulte Gerenciamento de identidade e acesso. Para restringir acesso a recursos específicos da AWS, altere o valor do objeto Resource. Para obter mais informações, consulte Gerenciamento de identidade e acesso.

    A declaração CodeBuildRolePolicy é necessária para permitir que um projeto de compilação seja criado ou modificado.

  8. No painel de navegação, selecione Groups ou Users.

  9. Na lista de grupos ou usuários, escolha o nome do grupo ou do usuário do IAM ao qual você deseja adicionar permissões de acesso do CodeBuild.

  10. Para um grupo, na página de configurações do grupo, na guia Permissions (Permissões), expanda Managed Policies (Políticas gerenciadas) e escolha Attach Policy (Anexar política).

    Para um usuário, na página de configurações do usuário, na guia Permissions, escolha Add permissions.

  11. Em um grupo, na página Anexar política, selecione CodeBuildAccessPolicy e escolha Anexar política.

    Para um usuário, na página Adicionar permissões, escolha Anexar políticas existentes diretamente. Selecione CodeBuildAccessPolicy, escolha Próximo: Revisão e Adicionar permissões.

Como adicionar permissões de acesso do CodeBuild a um grupo ou um usuário do IAM (AWS CLI)
  1. 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.

  2. Para adicionar um conjunto personalizado de permissões de acesso do AWS CodeBuild a um grupo ou um usuário do IAM, vá para a etapa 3 deste procedimento.

    Para adicionar um conjunto padrão de permissões de acesso do CodeBuild a um grupo ou um usuário do IAM, faça o seguinte:

    Execute os seguintes comandos, dependendo se deseja adicionar permissões a um grupo ou um usuário do IAM:

    aws iam attach-group-policy --group-name group-name --policy-arn policy-arn aws iam attach-user-policy --user-name user-name --policy-arn policy-arn

    É necessário executar o comando três vezes, substituindo group-name ou user-name pelo usuário ou nome do usuário do IAM e substituindo policy-arn uma vez para cada um dos seguintes nomes do recurso da Amazon (ARNs) de políticas:

    • Para adicionar permissões de acesso completo ao CodeBuild, use os seguintes ARNs de políticas:

      • arn:aws:iam::aws:policy/AWSCodeBuildAdminAccess

      • arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess

      • arn:aws:iam::aws:policy/IAMFullAccess

    • Para adicionar permissões de acesso ao CodeBuild para todos os recursos, exceto a administração de projetos de compilação, use os seguintes ARNs de políticas:

      • arn:aws:iam::aws:policy/AWSCodeBuildDeveloperAccess

      • arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess

    • Para adicionar permissões de acesso somente-leitura ao CodeBuild, use os seguintes ARNs de políticas:

      • arn:aws:iam::aws:policy/AWSCodeBuildReadOnlyAccess

      • arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess

    Agora você adicionou um conjunto padrão de permissões de acesso do CodeBuild a um grupo ou um usuário do IAM. Ignore as etapas seguintes deste procedimento.

  3. Em um diretório vazio na estação de trabalho ou instância local onde a AWS CLI esteja instalada, crie um arquivo chamado put-group-policy.json ou put-user-policy.json. Se você escolher um nome de arquivo diferente, certifique-se de usá-lo durante todo este procedimento.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "CodeBuildAccessPolicy", "Effect": "Allow", "Action": [ "codebuild:*" ], "Resource": "*" }, { "Sid": "CodeBuildRolePolicy", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::account-ID:role/role-name" }, { "Sid": "CloudWatchLogsAccessPolicy", "Effect": "Allow", "Action": [ "logs:FilterLogEvents", "logs:GetLogEvents" ], "Resource": "*" }, { "Sid": "S3AccessPolicy", "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:GetObject", "s3:List*", "s3:PutObject" ], "Resource": "*" }, { "Sid": "S3BucketIdentity", "Effect": "Allow", "Action": [ "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource": "*" } ] }
    nota

    Essas políticas permitem acesso a todas as ações do CodeBuild e a uma grande variedade de recursos da AWS. Para restringir permissões para ações específicas do CodeBuild, altere o valor codebuild:* na declaração de política do CodeBuild. Para obter mais informações, consulte Gerenciamento de identidade e acesso. Para restringir o acesso a recursos específicos da AWS, altere o valor do objeto relacionado Resource. Para obter mais informações, consulte Gerenciamento de identidade e acesso ou a documentação específica de segurança do serviço AWS.

    A declaração CodeBuildRolePolicy é necessária para permitir que um projeto de compilação seja criado ou modificado.

  4. Navegue até o diretório onde você salvou o arquivo e execute um dos seguintes comandos. Você pode usar valores diferentes para CodeBuildGroupAccessPolicy e CodeBuildUserAccessPolicy. Se você usar valores diferentes, certifique-se de usá-los aqui.

    Para um grupo IAM:

    aws iam put-group-policy --group-name group-name --policy-name CodeBuildGroupAccessPolicy --policy-document file://put-group-policy.json

    Para um usuário do :

    aws iam put-user-policy --user-name user-name --policy-name CodeBuildUserAccessPolicy --policy-document file://put-user-policy.json

    Nos comandos anteriores, substitua group-name ou user-name pelo nome do grupo ou do usuário do IAM de destino.

Criar um perfil de serviço do CodeBuild

Você precisa de um perfil de serviço do AWS CodeBuild para que o CodeBuild possa interagir com serviços dependentes da AWS em seu nome. É 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 a função 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)
  1. 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.

  2. No painel de navegação, escolha Policies (Políticas).

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

  4. Na página Create Policy, escolha JSON.

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

  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 perfil, com Serviço da AWS já selecionado, escolha CodeBuild e, depois, selecione Próximo: Permissões.

  10. Na página Anexar políticas de permissões, selecione CodeBuildServiceRolePolicy e, depois, escolha Próximo: Revisar.

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

Como criar um perfil de serviço do CodeBuild (AWS CLI)
  1. 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.

  2. 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 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. O aws:SourceAccount é o proprietário do projeto do CodeBuild e o aws: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.

  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

Criar e configurar uma chave gerenciada pelo cliente para o CodeBuild

Para o AWS CodeBuild criptografar os artefatos de saída de compilação, ele precisa ter acesso a uma chave do KMS. Por padrão, o CodeBuild usa a Chave gerenciada pela AWS para o Amazon S3 na conta da AWS.

Se você não quiser usar a Chave gerenciada pela AWS, deverá criar e configurar uma chave gerenciada pelo cliente por conta própria. Esta seção descreve como fazer isso pelo console do IAM.

Para obter informações sobre chaves gerenciadas pelo cliente, consulte AWS Key Management Service Concepts e Creating Keys no Guia do desenvolvedor do AWS KMS.

Para configurar uma chave gerenciada pelo cliente para uso pelo CodeBuild, siga as instruções da seção “How to Modify a Key Policy” de Modifying a Key Policy no Guia do desenvolvedor do AWS KMS. Em seguida, adicione as seguintes declarações (entre ### BEGIN ADDING STATEMENTS HERE ### e ### END ADDING STATEMENTS HERE ###) à política de chaves. As elipses (...) são usadas para agilizar e para ajudá-lo a encontrar onde adicionar as declarações. Não remova nenhuma declaração e não digite essas elipses nas políticas de chaves.

{ "Version": "2012-10-17", "Id": "...", "Statement": [ ### BEGIN ADDING STATEMENTS HERE ### { "Sid": "Allow access through Amazon S3 for all principals in the account that are authorized to use Amazon S3", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "s3.region-ID.amazonaws.com", "kms:CallerAccount": "account-ID" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-ID:role/CodeBuild-service-role" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, ### END ADDING STATEMENTS HERE ### { "Sid": "Enable IAM User Permissions", ... }, { "Sid": "Allow access for Key Administrators", ... }, { "Sid": "Allow use of the key", ... }, { "Sid": "Allow attachment of persistent resources", ... } ] }
  • region-ID representa o ID da região da AWS onde os buckets do Amazon S3 associados ao CodeBuild estão localizados (por exemplo, us-east-1).

  • account-ID representa o ID da conta da AWS proprietária da chave gerenciada pelo cliente.

  • CodeBuild-service-role representa o nome do perfil de serviço do CodeBuild que você criou ou identificou anteriormente neste tópico.

nota

Para criar ou configurar uma chave gerenciada pelo cliente pelo console do IAM, é necessário primeiro fazer login no AWS Management Console por uma das seguintes maneiras:

Instalar e configurar a AWS CLI

Para acessar o AWS CodeBuild, é possível usar a AWS CLI com ou em vez do console do CodeBuild, o console do CodePipeline ou os AWS SDKs. Para instalar e configurar a AWS CLI, consulte Getting Set Up with the AWS Command Line Interface no Guia do usuário da AWS Command Line Interface.

  1. Execute o seguinte comando para confirmar se a instalação da AWS CLI é compatível com o CodeBuild:

    aws codebuild list-builds

    Se bem-sucedido, informações semelhantes a estas serão exibidas como resultado:

    { "ids": [] }

    Os colchetes vazios indicam que você ainda não executou nenhuma compilação.

  2. Se for exibido um erro, você deve desinstalar a versão atual do AWS CLI e, então, instalar a versão mais recente. Para obter mais informações, consulte Desinstalação da AWS CLI e Instalação da AWS Command Line Interface no Guia do usuário do AWS Command Line Interface.