

Aviso de fin del 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 obsolescencia y migración del servicio](https://docs.aws.amazon.com/proton/latest/userguide/proton-end-of-support.html).

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
<a name="ag-env-codebuild-provisioning-role-creation"></a>

Las herramientas de infraestructura como código (IaaC), como 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 el`AWSProtonCodeBuildProvisioningBasicAccess`, 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 AWS servicio y, a continuación, seleccione CodeBuild.

1. 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html).
+ 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](https://docs.aws.amazon.com/proton/latest/userguide/vpc-codebuild-custom-support.html), 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](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/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
```