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 aprovisionamiento, creación de roles
Las herramientas de infraestructura como código (IaaC), como AWS CloudFormation 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 variedad de AWS recursos, resulta difícil crear políticas de privilegios mínimos para las plantillas de IaaC, especialmente cuando los recursos que gestionan esas plantillas pueden cambiar más adelante. Por ejemplo, en las últimas modificaciones de una plantilla gestionada por, se añade un recurso de base de datos de AWS Proton RDS.
La configuración de los permisos correctos ayuda a facilitar las implementaciones de su iAC. AWS Proton CodeBuild El aprovisionamiento ejecuta comandos CLI arbitrarios proporcionados por el cliente en CodeBuild un 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 despliega un AWS recurso cuya plantilla utiliza CodeBuild Provisioning, AWS se iniciará una compilación en un proyecto gestionado por. CodeBuild AWS Se pasa una función a CodeBuild, que se CodeBuild supone que ejecuta comandos. Esta función, denominada función de CodeBuild aprovisionamiento, la proporciona el cliente y contiene los permisos necesarios para aprovisionar la infraestructura. Se supone que solo debe asumirlo, CodeBuild y ni siquiera AWS Proton puede asumirlo.
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
También se 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:
-
Para una entidad de confianza, seleccione AWS servicio y, a continuación, seleccione CodeBuild.
-
En el paso Añadir permisos, seleccione
AWSProtonCodeBuildProvisioningBasicAccess
y cualquier otra política que desee asociar.
Acceso de administrador
Si adjuntas la AdministratorAccess
política a la función de CodeBuild aprovisionamiento, se garantizará 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 con un alcance mínimo
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 lo utilizas AWS CDK con AWS Proton cada cuenta o región del entorno y lo has ejecutado cdk bootstrap
en cada uno de ellos, significa que ya existe un rol para él. cdk deploy
En este caso, asocie 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 ejecutar 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