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úe usándolo CodeBuild, es posible que desee hacer cosas como dar acceso a los grupos y usuarios de IAM de su organización CodeBuild, modificar las funciones de servicio existentes en IAM oAWS KMS keys para acceder CodeBuild, o configurar las estaciones de trabajo deAWS CLI toda la organización para acceder CodeBuild. 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 aún no tiene uno, vaya a http://aws.amazon.com, elija Iniciar sesión en la consola y siga las instrucciones en línea.

Agregar permisos de CodeBuild acceso a un grupo o usuario de IAM

Para accederAWS CodeBuild con un grupo o usuario de IAM, debe añadir permisos de acceso. En esta sección se describe cómo hacerlo con la consola de IAM o elAWS CLI.

Si vas a acceder CodeBuild con tu cuentaAWS raíz (no recomendada) o con un usuario administrador de tuAWS cuenta, entonces no necesitas seguir estas instrucciones.

Para obtener información sobre las cuentasAWS raíz y los usuarios administradores, consulte El usuarioCuenta de AWS raíz y Cómo crear su primer usuario y grupoCuenta de AWS raíz en la Guía del usuario.

Para añadir permisos de CodeBuild acceso a un grupo o 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, consulte El usuarioCuenta de AWS raíz en la Guía del usuario.

    • Un usuario administrador de tuAWS cuenta. Para obtener más información, consulte Crear su primer usuario y grupoCuenta de AWS raíz en la Guía del usuario.

    • Un usuario de tuAWS cuenta 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, consulte Descripción general de las políticas de IAM en la Guía del usuario.

  2. En el panel de navegación, seleccione Policies (Políticas).

  3. Para agregar un conjunto personalizado de permisos deAWS CodeBuild acceso a un grupo o usuario de IAM, vaya al paso 4 de este procedimiento.

    Para agregar un conjunto predeterminado de permisos de CodeBuild acceso a un grupo de IAM o un usuario de IAM, elija Tipo de política, AWSAdministrado y, a continuación, haga lo siguiente:

    • Para agregar permisos de acceso completo CodeBuild, seleccione la casilla denominada AWSCodeBuildAdminAccess, elija Acciones políticas y, a continuación, elija Adjuntar. Seleccione la casilla situada junto al grupo o usuario de IAM de destino y, a continuación, seleccione Adjuntar política. Repita este procedimiento para las políticas denominadas AmazonS3ReadOnlyAccess e IAMFullAccess.

    • Para añadir permisos de acceso CodeBuild para todo, excepto para la administración del proyecto de compilación, seleccione la casilla denominada AWSCodeBuildDeveloperAccess, elija Acciones políticas y, a continuación, elija Adjuntar. Seleccione la casilla situada junto al grupo o usuario de IAM de destino y, a continuación, seleccione Adjuntar política. Repita este procedimiento para la política denominada AmazonS3ReadOnlyAccess.

    • Para añadir permisos de acceso de solo lectura CodeBuild, seleccione las casillas denominadas AWSCodeBuildReadOnlyAccess. Seleccione la casilla situada junto al grupo o usuario de IAM de destino y, a continuación, seleccione Adjuntar política. Repita este procedimiento para la política denominada AmazonS3ReadOnlyAccess.

    Ahora ha agregado un conjunto predeterminado de permisos de CodeBuild acceso a un grupo o 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 CodeBuild las acciones y a una cantidad potencialmente grande deAWS recursos. Para restringir los permisos a CodeBuild acciones específicas, cambie el valor decodebuild:* en la declaración CodeBuild de política. Para obtener más información, consulte Administración de identidades y accesos. Para restringir el acceso a recursos de AWS específicos, cambie el valor del objeto Resource. Para obtener más información, consulte Administración de identidades y accesos.

    LaCodeBuildRolePolicy declaración es necesaria para permitir la creación o modificación de un proyecto de construcción.

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

  9. En la lista de grupos o usuarios, elija el nombre del grupo o usuario de IAM al que desee añadir permisos de CodeBuild acceso.

  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 la página Adjuntar política, seleccione y CodeBuildAccessPolicy, a continuación, elija Adjuntar política.

    Para un usuario, en la página Agregar permisos, elija Adjuntar políticas existentes directamente. Seleccione CodeBuildAccessPolicy, elija Siguiente: Revisar y, a continuación, elija Agregar permisos.

Para añadir permisos de CodeBuild acceso a un grupo o usuario de IAM (AWS CLI)
  1. Asegúrese de haber configurado elAWS CLI con la clave deAWS acceso y la clave de accesoAWS secreta que corresponden a una de las entidades de IAM, tal como se describe 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 de permisos deAWS CodeBuild 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 de permisos de CodeBuild acceso a un grupo de IAM o un usuario de IAM, haga lo siguiente:

    Ejecute uno de los siguientes comandos en función de si desea agregar permisos a un grupo o usuario 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, sustituyendo el nombre del grupo o el nombre de usuario por el nombre del grupo o el nombre de usuario de IAM y reemplazando policy-arn una vez por cada uno de los siguientes nombres de recursos de Amazon (ARN) de la política:

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

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

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

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

    • Para añadir permisos de acceso CodeBuild para todo, excepto para la administración del proyecto de compilación, utilice los siguientes ARN de políticas:

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

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

    • Para añadir permisos de acceso de solo lectura CodeBuild, utilice los siguientes ARN de políticas:

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

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

    Ahora ha agregado un conjunto predeterminado de permisos de CodeBuild acceso a un grupo o 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 CodeBuild las acciones y a una cantidad potencialmente grande deAWS recursos. Para restringir los permisos a CodeBuild acciones específicas, cambie el valor decodebuild:* en la declaración CodeBuild de política. Para obtener más información, consulte Administración de identidades y accesos. Para restringir el acceso a recursos de AWS específicos, cambie el valor del objeto Resource relacionado. Para obtener más información, consulte Administración de identidades y accesos o la documentación de seguridad del servicio de AWS específico.

    LaCodeBuildRolePolicy declaración es necesaria para permitir la creación o modificación de un proyecto de construcció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 :

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

    En los comandos anteriores, sustituya el nombre del grupo o el nombre de usuario por el nombre del grupo o usuario de IAM de destino.

Crear un rol CodeBuild de servicio

Necesita un rolAWS CodeBuild de servicio para CodeBuild poder interactuar conAWS los servicios dependientes en su nombre. Puede crear un rol CodeBuild de servicio mediante lasAWS CodePipeline consolas CodeBuild or. Para obtener información, consulte:

Si no tiene previsto utilizar estas consolas, en esta sección se describe cómo crear un rol de CodeBuild servicio con la consola de IAM o laAWS CLI.

importante

CodeBuild utiliza 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 agregar permisos adicionales en función de su caso de uso.

Para crear un rol CodeBuild de servicio (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, consulte El usuarioCuenta de AWS raíz en la Guía del usuario.

    • Un usuario administrador de tuAWS cuenta. Para obtener más información, consulte Crear su primer usuario y grupoCuenta de AWS raíz en la Guía del usuario.

    • Un usuario de tuAWS cuenta 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, consulte Descripción general de las políticas de IAM en la Guía del usuario.

  2. En el panel de navegación, seleccione Policies (Políticas).

  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 (Crear rol).

  9. En la página Crear rol, con AWSServicio ya seleccionado, elija y CodeBuild, a continuación, elija Siguiente: Permisos.

  10. En la página Adjuntar políticas de permisos, seleccione y CodeBuildServiceRolePolicy, a continuación, elija Siguiente: Revisar.

  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 CodeBuild de servicio (AWS CLI)
  1. Asegúrese de haber configurado elAWS CLI con la clave deAWS acceso y la clave de accesoAWS secreta que corresponden a una de las entidades de IAM, tal como se describe 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

Creación y configuración de una clave administrada por el cliente para CodeBuild

AWS CodeBuildPara cifrar sus artefactos de salida de compilación, necesita acceso a una clave de KMS. De forma predeterminada, CodeBuild usa la opciónClave administrada por AWS para Amazon S3 en suAWS cuenta.

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

Para obtener información sobre las claves administradas por el cliente, consulte AWS Key Management ServiceConceptos y creación de claves en la Guía paraAWS KMS desarrolladores.

Para configurar una clave gestionada por el cliente para que la utilice CodeBuild, siga las instrucciones de la sección «Cómo modificar una política de claves» de la Guía paraAWS KMS 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", ... } ] }
  • El identificador de región representa el identificador de laAWS región a la que se CodeBuild encuentran los buckets de Amazon S3 asociados (por ejemplo,us-east-1).

  • El ID de cuenta representa el ID de laAWS cuenta de que es propietaria de la clave administrada por el cliente.

  • CodeBuild-service-role representa el nombre del rol de CodeBuild servicio que creó o identificó anteriormente en este tema.

nota

Para crear o configurar una clave gestionada por el cliente a través de la consola de IAM, primero debe iniciar sesión enAWS Management Console ella mediante una de las siguientes opciones:

Instalación y configuración de AWS CLI

Para accederAWS CodeBuild, puede usar laAWS CLI consola, la CodeBuild consola o los CodePipeline AWS SDK, o en lugar de ella. Para instalar y configurar elAWS CLI, consulte Configuración con elAWS Command Line Interface en la Guía delAWS Command Line Interface usuario.

  1. Ejecute el comando siguiente para confirmar si la instalación de losAWS CLI soportes es compatible con 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.