Configuración avanzada - AWS CodeBuild

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configuración avanzada

Si sigue los pasos de Primeros pasos con la consola para acceder a AWS CodeBuild por primera vez, lo más probable es que no necesite la información de este tema. Sin embargo, a medida que continúas usandoCodeBuild, es posible que desee hacer cosas como dar acceso a grupos y usuarios de IAM de su organización aCodeBuild, modificar los roles de servicio existentes en IAM oAWS KMS keysPara obtener acceso aCodeBuildo configure laAWS CLIen las estaciones de trabajo de su organización para accederCodeBuild. En este tema se describe cómo realizar los pasos de configuración relacionados.

En él se presupone que ya tiene una cuenta de AWS. Sin embargo, si todavía no tiene una, vaya ahttp://aws.amazon.com, eligeIniciar sesión en la consolay siga las instrucciones en línea.

AñadirCodeBuildpermisos de acceso a un grupo de IAM o a un usuario de IAM

Para obtener acceso aAWS CodeBuildcon un grupo de IAM o un usuario de IAM, debe añadir permisos de acceso. En esta sección se describe cómo hacer esto con la consola de IAM o laAWS CLI.

Si vas a accederCodeBuildcon suAWScuenta raíz (no recomendada) o un usuario de IAM administrador en suAWS, entonces no es necesario que siga estas instrucciones.

Para obtener información sobreAWScuentas raíz y usuarios de IAM de administrador, consulteEl usuario raíz de la cuenta deyCreación del primer grupo y usuario administrador de IAMen laIAM User Guide.

Para añadirCodeBuildpermisos de acceso a un grupo de IAM o a un usuario de IAM (consola)

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

    Debe haber iniciado sesión en la AWS Management Console con alguna de las entidades siguientes:

    • Su cuenta raíz de AWS. No se recomienda. Para obtener más información, consulteEl usuario raíz de la cuenta deen laIAM User Guide.

    • Un usuario de IAM administrador en suAWSaccount. Para obtener más información, consulte Creación del primer grupo y usuario administrador de IAM en la Guía del usuario de IAM.

    • Un usuario de IAM en suAWScuenta de con permiso para realizar el siguiente conjunto mínimo de acciones:

      iam:AttachGroupPolicy iam:AttachUserPolicy iam:CreatePolicy iam:ListAttachedGroupPolicies iam:ListAttachedUserPolicies iam:ListGroups iam:ListPolicies iam:ListUsers

      Para obtener más información, consulteInformación general sobre las políticas de IAMen laIAM User Guide.

  2. En el panel de navegación, seleccione Policies.

  3. Para añadir un conjunto personalizado deAWS CodeBuildpermisos de acceso a un grupo de IAM o a un usuario de IAM, vaya al paso 4 de este procedimiento.

    Para añadir un conjunto predeterminado deCodeBuildpermisos de acceso a un grupo de IAM o usuario de IAM, elijaTipo de política,AWSadministradoy luego haga lo siguiente:

    • Para añadir permisos de acceso completo aCodeBuild, seleccione la casilla denominadaAWSCodeBuildAdminAccess, eligeAcciones de políticay luego seleccioneAdjuntar. Seleccione la casilla situada junto al grupo de IAM de o usuario de IAM de destino y, a continuación, elijaAsociar política. Repita esta operación para las políticas.Amazon S3ReadOnlyAccesoyIAMFullAccess.

    • Para añadir permisos de acceso aCodeBuildPara todo salvo para administrar proyectos de compilación, seleccione la casilla denominadaAWSCodeBuildDeveloperAccess, eligeAcciones de políticay luego seleccioneAdjuntar. Seleccione la casilla situada junto al grupo de IAM de o usuario de IAM de destino y, a continuación, elijaAsociar política. Repita esta operación para la política.Amazon S3ReadOnlyAcceso.

    • Para añadir permisos de solo lectura aCodeBuild, seleccione las casillas denominadasAWSCodeBuildReadOnlyAccess. Seleccione la casilla situada junto al grupo de IAM de o usuario de IAM de destino y, a continuación, elijaAsociar política. Repita esta operación para la política.Amazon S3ReadOnlyAcceso.

    Habrá añadido un conjunto predeterminado deCodeBuildpermisos de acceso a un grupo de IAM o a un usuario de IAM Omita el resto de los pasos de este procedimiento.

  4. Elija Create Policy (Crear política).

  5. En la página Create Policy, junto a Create Your Own Policy, elija Select.

  6. En la página Review Policy (Revisar política), en Policy Name (Nombre de política), escriba un nombre para la política (por ejemplo, CodeBuildAccessPolicy). Si elige otro nombre, no olvide utilizarlo durante todo este procedimiento.

  7. En Policy Document (Documento de la política), escriba lo siguiente y elija Create Policy (Crear 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

    Esta política permite el acceso a todas las acciones de CodeBuild y a un número potencialmente grande de recursos de AWS. Para restringir los permisos a acciones de CodeBuild específicas, cambie el valor de codebuild:* en la instrucción de política CodeBuild. Para obtener más información, consulte Identity and Access Management. Para restringir el acceso a recursos de AWS específicos, cambie el valor del objeto Resource. Para obtener más información, consulte Identity and Access Management.

    LaCodeBuildRolePolicyes necesaria para permitir la creación o modificación de un proyecto de compilación.

  8. En el panel de navegación, elija Groups o Users.

  9. En la lista de grupos de o usuarios, elija el nombre del grupo de IAM o usuario de IAM al que desea añadirCodeBuildpermisos de acceso de.

  10. Si se trata de un grupo, en la página de configuración del grupo, en la pestaña Permissions (Permisos), expanda Managed Policies (Políticas administradas) y elija Attach Policy (Asociar política).

    Para un usuario, en la página de configuración del usuario, en la pestaña Permissions, seleccione Add permissions.

  11. Para un grupo, en elAsociar políticapage, seleccioneCodeBuildAccessPolicyy luego seleccioneAsociar política.

    Para un usuario, en elAdición de permisospage, elijaAdjuntar políticas existentes directamente. SelectCodeBuildAccessPolicy, eligeSiguiente: Review (Revisar)y luego seleccioneAdición de permisos.

Para añadirCodeBuildpermisos de acceso a un grupo de IAM o a un usuario de IAM (AWS CLI)

  1. Asegúrese de configurar laAWS CLIconAWSclave de acceso yAWSclave de acceso secreta de correspondientes a alguna de las entidades de IAM, tal y como se ha descrito en el procedimiento anterior. Para obtener más información, consulte Configuración inicial de la AWS Command Line Interface en la Guía del usuario de AWS Command Line Interface.

  2. Para añadir un conjunto personalizado deAWS CodeBuildpermisos de acceso a un grupo de IAM o a un usuario de IAM, vaya al paso 3 de este procedimiento.

    Para añadir un conjunto predeterminado deCodeBuildpermisos de acceso a un grupo de IAM o a un usuario de IAM, haga lo siguiente:

    Ejecute uno de los siguientes comandos, en función de si desea añadir permisos a un usuario de IAM o a un grupo de 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

    Debe ejecutar el comando tres veces, reemplazandogroup-nameouser-namecon el nombre de grupo de IAM o el nombre de usuario de IAM y sustituirpolítica-arnuna vez para cada una de las siguientes políticas de Amazon Resource Names (ARN):

    • Para añadir permisos de acceso completo a CodeBuild, use los siguientes ARN de política:

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

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

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

    • Para añadir permisos de acceso a CodeBuild para todo excepto para administrar proyectos de compilación, use los siguientes ARN de política:

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

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

    • Para añadir permisos de solo lectura a CodeBuild, use los siguientes ARN de política:

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

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

    Habrá añadido un conjunto predeterminado deCodeBuildpermisos de acceso a un grupo de IAM o a un usuario de IAM Omita el resto de los pasos de este procedimiento.

  3. En un directorio vacío de la estación de trabajo o la instancia local en la que esté instalada la AWS CLI, cree un archivo denominado put-group-policy.json o put-user-policy.json. Si elige otro nombre de archivo, no olvide utilizarlo durante todo este procedimiento.

    { "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

    Esta política permite el acceso a todas las acciones de CodeBuild y a un número potencialmente grande de recursos de AWS. Para restringir los permisos a acciones de CodeBuild específicas, cambie el valor de codebuild:* en la instrucción de política CodeBuild. Para obtener más información, consulte Identity and Access Management. Para restringir el acceso a recursos de AWS específicos, cambie el valor del objeto Resource relacionado. Para obtener más información, consulte Identity and Access Management o la documentación de seguridad del servicio de AWS específico.

    LaCodeBuildRolePolicyes necesaria para permitir la creación o modificación de un proyecto de compilación.

  4. Cambie al directorio donde ha guardado el archivo y, a continuación, ejecute uno de los siguientes comandos. Puede utilizar diferentes valores para CodeBuildGroupAccessPolicy y CodeBuildUserAccessPolicy. Si emplea valores diferentes, asegúrese de usarlos aquí.

    Para un grupo de IAM:

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

    Para un usuario de IAM:

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

    En los comandos anteriores, reemplacegroup-nameouser-namecon el nombre del grupo de IAM de destino o del usuario de IAM.

Crear un rol de servicio de CodeBuild

Necesita un rol de servicio de AWS CodeBuild para que CodeBuild pueda interactuar en su nombre con los servicios de AWS dependientes. Puede crear un rol de servicio de CodeBuild utilizando las consolas de CodeBuild o AWS CodePipeline. Para obtener información, consulte:

Si no tiene intención de utilizar estas consolas, en esta sección se describe cómo crear unaCodeBuildfunción de servicio con la consola de IAM o elAWS CLI.

importante

CodeBuildutiliza la función de servicio para todas las operaciones que se realizan en su nombre. Si el rol incluye permisos que el usuario no debería tener, puede escalar involuntariamente los permisos de un usuario. Asegúrese de que el rol concede privilegios mínimos.

El rol de servicio que se describe en esta página contiene una política que concede los permisos mínimos necesarios para utilizar CodeBuild. Es posible que tenga que añadir permisos adicionales, en función del caso de uso.

Para crear un rol de servicio de CodeBuild (consola)

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

    Debe haber iniciado sesión en la consola con alguna de las entidades siguientes:

    • Su cuenta raíz de AWS. No se recomienda. Para obtener más información, consulteEl usuario raíz de la cuenta deen laIAM User Guide.

    • Un usuario de IAM administrador en suAWSaccount. Para obtener más información, consulte Creación del primer grupo y usuario administrador de IAM en la Guía del usuario de IAM.

    • Un usuario de IAM en suAWScuenta de con permiso para realizar el siguiente conjunto mínimo de acciones:

      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 obtener más información, consulteInformación general sobre las políticas de IAMen laIAM User Guide.

  2. En el panel de navegación, seleccione Policies.

  3. Elija Create Policy (Crear política).

  4. En la página Create Policy, elija JSON.

  5. En la política JSON, escriba lo siguiente y elija Review Policy (Consultar 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

    Esta política contiene instrucciones que permiten tener acceso a número potencialmente grande de recursos de AWS. Para restringir el acceso de AWS CodeBuild a recursos de AWS específicos, cambie el valor de la matriz Resource. Para obtener más información, consulte la documentación de seguridad del servicio de AWS.

  6. En la página Review Policy (Consultar política), en Policy Name (Nombre de la política), escriba un nombre para la política (por ejemplo, CodeBuildServiceRolePolicy) y elija Create policy (Crear política).

    nota

    Si elige otro nombre, no olvide utilizarlo durante todo este procedimiento.

  7. Seleccione Roles en el panel de navegación.

  8. Elija Create role.

  9. En la páginaCreación de un rolpage, conAWSService (Servicio)ya seleccionado, eligeCodeBuildy luego seleccioneSiguiente: permisos.

  10. En la páginaAsociar políticas de permisospage, seleccioneCodeBuildServiceRolePolítica dey luego seleccioneSiguiente: Consulte.

  11. En la página Create role and review (Crear función y revisar), en Role name (Nombre del rol), escriba un nombre para el rol (por ejemplo, CodeBuildServiceRole) y elija Create role (Crear rol).

Para crear un rol de servicio de CodeBuild (AWS CLI)

  1. Asegúrese de configurar laAWS CLIconAWSclave de acceso yAWSclave de acceso secreta de correspondientes a alguna de las entidades de IAM, tal y como se ha descrito en el procedimiento anterior. Para obtener más información, consulte Configuración inicial de la AWS Command Line Interface en la Guía del usuario de AWS Command Line Interface.

  2. En un directorio vacío de la estación de trabajo o la instancia local donde se ha instalado la AWS CLI, cree dos archivos llamados create-role.json y put-role-policy.json. Si elige nombres de archivo diferentes, no olvide utilizarlos durante todo este procedimiento.

    create-role.json:

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

    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

    Esta política contiene instrucciones que permiten tener acceso a número potencialmente grande de recursos de AWS. Para restringir el acceso de AWS CodeBuild a recursos de AWS específicos, cambie el valor de la matriz Resource. Para obtener más información, consulte la documentación de seguridad del servicio de AWS.

  3. Cambie al directorio donde guardó los archivos anteriores y, a continuación, ejecute los dos comandos siguientes, uno cada vez, en este orden. Puede utilizar valores diferentes para CodeBuildServiceRole y CodeBuildServiceRolePolicy, pero no olvide emplearlos aquí.

    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

Cree y configure una clave administrada por el cliente paraCodeBuild

ParaAWS CodeBuildPara cifrar sus artefactos de salida de la compilación, necesita acceso a una clave de KMS. Por defecto,CodeBuildutiliza laClave administrada por AWSpara Amazon S3 en suAWSaccount.

Si no desea utilizar laClave administrada por AWS, debe crear y configurar usted mismo una clave administrada por el cliente. En esta sección se describe cómo hacer esto con la consola de IAM

Para obtener información sobre las claves administradas por el cliente, consulteAWS Key Management ServiceConceptosyCreación de clavesen laAWS KMSGuía para desarrolladores.

Para configurar una clave administrada por el cliente para que la useCodeBuild, siga las instrucciones de la sección «Cómo modificar una política de claves» deModificación de una política de clavesen laAWS KMSGuía para desarrolladores. A continuación, añada las siguientes instrucciones (entre ### BEGIN ADDING STATEMENTS HERE ### y ### END ADDING STATEMENTS HERE ###) a la política de la clave. Los puntos suspensivos (...) se usan por motivos de brevedad y para ayudarle a encontrar el lugar donde debe añadir las instrucciones. No elimine ninguna instrucción ni incluya estos puntos suspensivos en la política de la clave.

{ "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", ... } ] }
  • ID de regiónrepresenta el ID de laAWSregión de donde los buckets de Amazon S3 asociados aCodeBuildse encuentran (por ejemplo,us-east-1).

  • account-idrepresenta el ID delAWScuenta de que es propietaria de la clave administrada por el cliente.

  • función-servicio-CodeBuild representa el nombre de la función de servicio de CodeBuild que se creó o identificó anteriormente en este tema.

nota

Para crear o configurar una clave administrada por el cliente a través de la consola de IAM, primero debe iniciar sesión en laAWS Management Consolemediante una de las operaciones siguientes:

Instalación y configuración de AWS CLI

Para obtener acceso a AWS CodeBuild, puede utilizar la AWS CLI con (o en lugar de) la consola de CodeBuild, la consola de CodePipeline o los SDK de AWS. Para instalar y configurar laAWS CLI, consulteConfiguración inicial deAWS Command Line Interfaceen laAWS Command Line InterfaceGuía del usuario de.

  1. Ejecute el siguiente comando para confirmar si la instalación de la AWS CLI admite CodeBuild:

    aws codebuild list-builds

    Si el comando se ejecuta correctamente, aparecerá información similar a la siguiente en el resultado:

    { "ids": [] }

    Los corchetes vacíos indican que aún no ha ejecutado ninguna compilación.

  2. Si se produce un error, debe desinstalar la versión actual de la AWS CLI y, a continuación, instalar la versión más reciente. Para obtener más información, consulte el tema acerca de cómo desinstalar la AWS CLI y cómo instalar la AWS Command Line Interface en la Guía del usuario de AWS Command Line Interface.