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 siga usando CodeBuild, puede que quiera hacer cosas como permitir que este interactúe con otros servicios de AWS.
Para que CodeBuild pueda interactuar en su nombre con los servicios de AWSdependientes, necesita un rol de servicio de AWS CodeBuild. 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 un rol de servicio de CodeBuild con la consola de IAM o la AWS CLI.
importante
CodeBuild utiliza el rol 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)
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 usuario raíz de Cuenta de AWS en la Guía del usuario.
-
Un usuario administrador en su cuenta de AWS. Para obtener más información, consulte Creación del primer usuario raíz y grupo de Cuenta de AWS en la Guía del usuario.
-
Un usuario en su cuenta de AWS con permiso para realizar el conjunto mínimo de acciones siguiente:
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 Información general sobre las políticas de IAM en la Guía del usuario.
-
-
En el panel de navegación, seleccione Políticas.
-
Seleccione Crear política.
-
En la página Create Policy, elija JSON.
-
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. -
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.
-
Seleccione Roles en el panel de navegación.
-
Elija Crear rol.
-
En la página Crear rol, con la opción Servicio AWS seleccionada, elija CodeBuild y después elija Siguiente: Permisos.
-
En la página Asociar políticas de permisos, seleccione SerCodeBuildServiceRolePolicy y Siguiente: Revisión.
-
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).
Crear un rol de servicio de CodeBuild (AWS CLI)
-
Asegúrese de que ha configurado la AWS CLI con la clave de acceso de AWS y la clave de acceso secreta de AWS 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.
-
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
yput-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" } ] }
nota
Le recomendamos que utilice las claves de condición
aws:SourceAccount
yaws:SourceArn
para protegerse contra el problema del suplente confuso. Por ejemplo, podría editar la política de confianza anterior con los bloques de condición siguientes.aws:SourceAccount
es el propietario del proyecto de CodeBuild yaws:SourceArn
es el ARN del proyecto de CodeBuild.Si desea restringir su rol de servicio a una cuenta de AWS,
create-role.json
podría tener un aspecto similar al siguiente:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": [ "
account-ID
" ] } } } ] }Si desea restringir su rol de servicio a un proyecto específico de CodeBuild,
create-role.json
podría tener un aspecto similar al siguiente:{ "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
Si no conoce o no ha elegido un nombre para su proyecto de CodeBuild y desea una restricción de la política de confianza para un patrón de ARN en particular, puede reemplazar esa parte del ARN por un comodín (*). Después de crear el proyecto, puede actualizar la política de confianza.
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. -
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
yCodeBuildServiceRolePolicy
, 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