View a markdown version of this page

CodeBuild creación de roles de aprovisionamiento - AWS Proton

Aviso de fin de soporte: el 7 de octubre de 2026, AWS finalizará el soporte para AWS Proton. Después del 7 de octubre de 2026, ya no podrás acceder a la AWS Proton consola ni a AWS Proton los recursos. La infraestructura implementada permanecerá intacta. Para obtener más información, consulte la Guía AWS Proton de desaprobación y migración del servicio.

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.

CodeBuild creación de roles de aprovisionamiento

Las herramientas de infraestructura como código (IaaC), como Terraform CloudFormation y Terraform, requieren permisos para los diferentes tipos de recursos. AWS Por ejemplo, si una plantilla de IaC declara un bucket de Amazon S3, necesitará permisos para crear, leer, actualizar y eliminar buckets de Amazon S3. Se considera una buena práctica de seguridad limitar los roles a los permisos mínimos necesarios. Dada la amplitud de AWS los recursos, es difícil crear políticas de privilegios mínimos para las plantillas de IaaC, especialmente cuando los recursos que administran esas plantillas pueden cambiar más adelante. Por ejemplo, en las últimas modificaciones de una plantilla que administra, se agrega un recurso de base de datos de AWS Proton RDS.

La configuración de los permisos correctos ayuda a que las implementaciones de su iAC sean fluidas. AWS Proton CodeBuild El aprovisionamiento ejecuta comandos CLI arbitrarios proporcionados por el cliente en un CodeBuild proyecto ubicado en la cuenta del cliente. Por lo general, estos comandos crean y eliminan la infraestructura mediante una herramienta de infraestructura como código (IaC), como AWS CDK. Cuando se implementa un AWS recurso cuya plantilla usa el CodeBuild aprovisionamiento, AWS se iniciará una compilación en un proyecto administrado por. CodeBuild AWS Se pasa un rol a CodeBuild, que CodeBuild asume la ejecución de comandos. Este rol, denominado rol de CodeBuild aprovisionamiento, lo proporciona el cliente y contiene los permisos necesarios para aprovisionar la infraestructura. Está pensada para que solo la asuma CodeBuild e incluso no AWS Proton puede asumirla.

Creación del rol

La función de CodeBuild aprovisionamiento se puede crear en la consola de IAM o en. AWS CLI Para crearlo en la AWS CLI:

aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version": "2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AWSProtonCodeBuildProvisioningBasicAccess

Esto también adjunta elAWSProtonCodeBuildProvisioningBasicAccess, que contiene los permisos mínimos que necesita el CodeBuild servicio para ejecutar una compilación.

Si prefiere utilizar la consola, asegúrese de lo siguiente al crear el rol:

  1. Para una entidad de confianza, seleccione el AWS servicio y, a continuación, seleccione CodeBuild.

  2. En el paso Añadir permisos, seleccione AWSProtonCodeBuildProvisioningBasicAccess y cualquier otra política que desee asociar.

Acceso de administrador

Si asocias la AdministratorAccess política a la función de CodeBuild aprovisionamiento, garantizarás que ninguna plantilla de IaaC falle por falta de permisos. También significa que cualquier persona que pueda crear una plantilla de entorno o una plantilla de servicio puede realizar acciones a nivel de administrador, incluso si ese usuario no es administrador. AWS Proton no recomienda su uso AdministatorAccess con la función de aprovisionamiento CodeBuild . Si decide utilizarla AdministratorAccess con la función de CodeBuild aprovisionamiento, hágalo en un entorno aislado.

Para crear un rol con AdministratorAccess, puede utilizar la consola de IAM, o bien ejecutar este comando:

aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version": "2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
Creación de un rol Minimally-Scoped

Si desea crear un rol con permisos mínimos, hay disponibles varios enfoques:

  • Implemente el rol con permisos de administrador y, a continuación, limite los permisos del rol. Recomendamos utilizar el Analizador de acceso de IAM.

  • Utilice políticas administradas para dar acceso a los servicios que planee utilizar.

AWS CDK

Si utiliza AWS CDK con AWS Proton y ha ejecutado cdk bootstrap en cada entorno account/Region, entonces ya existe un rol paracdk deploy. En este caso, adjunte la siguiente política a la función de CodeBuild aprovisionamiento:

{ "Action": "sts:AssumeRole", "Resource": [ "arn:aws:iam::account-id:role/cdk-*-deploy-role-*", "arn:aws:iam::account-id:role/cdk-*-file-publishing-role-*" ], "Effect": "Allow" }
VPC personalizada

Si decides ejecutarlo CodeBuild en una VPC personalizada, necesitarás los siguientes permisos en tu CodeBuild rol:

{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:region:account-id:network-interface/*", "arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:security-group/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DeleteNetworkInterface" ], "Resource": [ "arn:aws:ec2:region:account-id:*/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterfacePermission" ], "Resource": "arn:aws:ec2:region:account-id:network-interface/*", "Condition": { "StringEquals": { "ec2:AuthorizedService": "codebuild.amazonaws.com" } } }

También puede utilizar la política administrada AmazonEC2FullAccess, aunque incluye permisos que quizás no necesite. Para asociar la política administrada mediante la CLI:

aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version": "2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AdministratorAccess