

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.

# Permisos para Beanstalk Cluster
<a name="beanstalk-cluster-permissions"></a>

Un entorno de Beanstalk Cluster no utiliza el perfil de instancia de Amazon Elastic Compute Cloud (Amazon EC2) de Beanstalk Standard. Usted proporciona las funciones de IAM que Amazon EKS requiere para su clúster y sus nodos, y la función que Elastic Beanstalk utiliza para publicar las métricas, los registros y los seguimientos del entorno. Si lo desea, puede proporcionar un rol de aplicación para la aplicación en ejecución. Elastic Beanstalk usa un rol vinculado a un servicio para su propio funcionamiento del entorno.

## Funciones que usted proporciona
<a name="beanstalk-cluster-permissions-customer-roles"></a>

Un entorno de Beanstalk Cluster utiliza un rol de clúster, un rol de nodo y un rol de observabilidad. Cuando creas un entorno en la consola de Elastic Beanstalk y aceptas la configuración predeterminada de acceso a los servicios, la consola crea los tres automáticamente, con los nombres escritos[Nombre, servicio de confianza y permisos para cada rol](#beanstalk-cluster-permissions-role-details), cuando aún no existen en tu cuenta:
+ **Función de clúster**: Amazon EKS asume esta función para el clúster que crea Elastic Beanstalk. Pase su ARN a la `cluster-role` configuración del espacio de nombres. `aws:elasticbeanstalk:eks`
+ **Función de nodo**: los nodos de Amazon EC2 del clúster asumen esta función, que debe permitirles extraer imágenes de aplicaciones de Amazon ECR. Pase su ARN a la `node-role` configuración del espacio de nombres. `aws:elasticbeanstalk:eks`
+ **Función de observabilidad**: los componentes que publican las métricas, los registros y los seguimientos del entorno asumen esta función a través de Amazon EKS Pod Identity. Pase su ARN a la `observability-role` configuración del espacio de nombres. `aws:elasticbeanstalk:eks:environment`

Si crea estos roles fuera de la consola de Elastic Beanstalk, le recomendamos encarecidamente que los cree exactamente como se especifica en. [Nombre, servicio de confianza y permisos para cada rol](#beanstalk-cluster-permissions-role-details) A continuación, cuando cree un entorno, transfiera el ARN de cada rol a su opción de configuración. Para ver un ejemplo práctico, consulte[Primeros pasos con Beanstalk Cluster](beanstalk-cluster-getting-started.md).

Si proporciona una fuente para que Elastic Beanstalk la incorpore en una imagen de contenedor, también proporciona una función de creación de ** imágenes. ** AWS CodeBuild lo asume para ejecutar la compilación en tu cuenta. Esta función pertenece a la versión de compilación de la aplicación y no al entorno en ejecución. Consulte [Creación de imágenes de contenedores para entornos de Beanstalk Cluster](beanstalk-cluster-app-versions.md).

También puede proporcionar un rol de ** aplicación opcional**, que la aplicación en ejecución utiliza para llamar AWS a los servicios. Consulte [Permisos de aplicación](#beanstalk-cluster-permissions-application).

**importante**  
Usa los nombres de los roles de la tabla siguiente. La consola selecciona los roles existentes por nombre, por lo que no selecciona un rol que hayas creado con un nombre diferente, sino que tienes que elegir ese rol tú mismo. Los nombres también son importantes a la hora de reutilizar los clústeres: Elastic Beanstalk registra los roles de clúster, nodo y observabilidad en el clúster que crea, y un entorno posterior del mismo conjunto de subredes debe proporcionar los mismos tres roles. Elastic Beanstalk rechaza un entorno cuyas funciones son diferentes, en lugar de colocarlo en otro clúster. Consulte [Agrupación de entornos](beanstalk-cluster-concepts.md#beanstalk-cluster-clusters-sharing).

Cada rol confía en un servicio diferente y tiene sus propios permisos:


**Nombre, servicio de confianza y permisos para cada rol**  

| Rol | Nombre del rol | Servicio de confianza | AWS políticas administradas | 
| --- | --- | --- | --- | 
| Rol de del clúster | aws-elasticbeanstalk-eks-cluster-role | eks.amazonaws.com | AmazonEKSClusterPolicy, AmazonEKSNetworkingPolicy, AmazonEKSComputePolicy, AmazonEKSBlockStoragePolicy, AmazonEKSLoadBalancingPolicy, AWSElasticBeanstalkEKSTagging | 
| Función de nodo | aws-elasticbeanstalk-eks-node-role | ec2.amazonaws.com | AmazonEKSWorkerNodeMinimalPolicy, AmazonEC2ContainerRegistryPullOnly, AmazonSSMManagedInstanceCore | 
| Función de observabilidad | aws-elasticbeanstalk-eks-observability-role | pods.eks.amazonaws.com | CloudWatchAgentServerPolicy, AWSElasticBeanstalkEKSObservability | 
| Función de creación de imágenes | aws-elasticbeanstalk-eks-image-build-role | codebuild.amazonaws.com | AWSElasticBeanstalkEKSImageBuild | 
| Función de aplicación (opcional) | Tú eliges el nombre | pods.eks.amazonaws.com | Ninguna. Solo concedes los permisos que necesita tu aplicación. Consulte [Configura un rol de aplicación](#beanstalk-cluster-permissions-application-role). | 

**Para proporcionar las funciones de clúster, nodo y observabilidad**

1. Si crea su entorno en la consola de Elastic Beanstalk, no necesita preparar nada. La consola busca los tres roles por nombre, utilizando los nombres de la tabla anterior, los selecciona cuando ya existen en su cuenta y los crea cuando no existen. Coincide solo en el nombre del rol, no en el ARN completo, y dado que los nombres de los roles de IAM son únicos en una cuenta, la ruta en la que se encuentra un rol no afecta a la coincidencia.

1. Si utiliza la API AWS CLI o la API, cree primero los tres roles. Ninguno de los clientes los crea por ti. Asigne a cada rol el nombre y el servicio de confianza de la tabla anterior y adjunte las políticas enumeradas. Los roles deben estar en la misma AWS cuenta que el entorno.

1. Proporcione los tres ARN en la `cluster-role` `observability-role` configuración y al crear el entorno. `node-role` Proporcione el rol de observabilidad de forma explícita en lugar de confiar en un valor predeterminado, de modo que todos los entornos de un conjunto de subredes registren los mismos roles.

1. Si su aplicación llama a AWS servicios, configure el rol de aplicación opcional tal y como se describe en. [Configura un rol de aplicación](#beanstalk-cluster-permissions-application-role)

El conjunto de subredes por sí solo selecciona el clúster, por lo que debe usar un conjunto de subredes diferente cuando necesite un clúster independiente con diferentes funciones de infraestructura. No puede cambiar las subredes ni las funciones de clúster, nodo y observabilidad de un entorno de Beanstalk Cluster existente. Consulte [Agrupación de entornos](beanstalk-cluster-concepts.md#beanstalk-cluster-clusters-sharing). El rol de aplicación opcional es específico de un entorno y puede diferir de un entorno a otro; consulte. [Configura un rol de aplicación](#beanstalk-cluster-permissions-application-role)

## Permisos para crear el entorno
<a name="beanstalk-cluster-permissions-caller"></a>

Dado que estas funciones se transfieren a Elastic Beanstalk, el director que crea el entorno necesita permiso para transferirlas. Elastic Beanstalk lo verifica antes de aprovisionar nada, por lo que debe conceder lo siguiente a ese director:
+ `iam:GetRole`y `iam:PassRole` en cada rol que transfiera: los roles de clúster, nodo y observabilidad, y también el rol de aplicación y el rol de creación de imágenes, si los usa. Alcance `iam:PassRole` con la clave de `iam:PassedToService` condición. Sus valores son los servicios que reciben las funciones: `eks.amazonaws.com` para la función de clúster, `ec2.amazonaws.com` para la función de nodo, `pods.eks.amazonaws.com` para las funciones de observabilidad y aplicación, `codebuild.amazonaws.com` para la función de creación de imágenes y `elasticbeanstalk.amazonaws.com` porque Elastic Beanstalk transfiere estas funciones en su nombre.
+ `iam:CreateServiceLinkedRole`, que el primer entorno de Beanstalk Cluster de una cuenta necesita para que Elastic Beanstalk y Amazon EKS puedan crear sus funciones vinculadas a servicios. Limítelo con la clave de condición, cuyos valores son y`iam:AWSServiceName`. `elasticbeanstalk.amazonaws.com` `eks.amazonaws.com`

La siguiente política garantiza todo esto. Sustituye el identificador de la cuenta por el tuyo, usa el nombre del rol de la aplicación y elimina cualquier rol que no hayas aprobado. Los nombres de los roles que se muestran son los de la tabla anterior, que la consola crea y selecciona.

A diferencia de la consola, que selecciona un rol por su nombre, una política relaciona un rol por su ARN completo, por lo que cada `Resource` entrada debe incluir la ruta de IAM del rol. Los roles que crea la consola son `/service-role/` los siguientes: Si creaste un rol de otra forma, es posible que no tenga ninguna ruta, en cuyo caso su ARN es`arn:aws:iam::{{111122223333}}:role/{{role-name}}`. Para leer el ARN de un rol, ejecuta. `aws iam get-role --role-name {{role-name}} --query Role.Arn --output text`

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "InspectTheRoles",
      "Effect": "Allow",
      "Action": "iam:GetRole",
      "Resource": [
        "arn:aws:iam::{{111122223333}}:role/service-role/aws-elasticbeanstalk-eks-cluster-role",
        "arn:aws:iam::{{111122223333}}:role/service-role/aws-elasticbeanstalk-eks-node-role",
        "arn:aws:iam::{{111122223333}}:role/service-role/aws-elasticbeanstalk-eks-observability-role",
        "arn:aws:iam::{{111122223333}}:role/service-role/aws-elasticbeanstalk-eks-image-build-role",
        "arn:aws:iam::{{111122223333}}:role/{{my-application-role}}"
      ]
    },
    {
      "Sid": "PassTheRolesToBeanstalk",
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": [
        "arn:aws:iam::{{111122223333}}:role/service-role/aws-elasticbeanstalk-eks-cluster-role",
        "arn:aws:iam::{{111122223333}}:role/service-role/aws-elasticbeanstalk-eks-node-role",
        "arn:aws:iam::{{111122223333}}:role/service-role/aws-elasticbeanstalk-eks-observability-role",
        "arn:aws:iam::{{111122223333}}:role/service-role/aws-elasticbeanstalk-eks-image-build-role",
        "arn:aws:iam::{{111122223333}}:role/{{my-application-role}}"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": [
            "eks.amazonaws.com",
            "ec2.amazonaws.com",
            "pods.eks.amazonaws.com",
            "codebuild.amazonaws.com",
            "elasticbeanstalk.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "CreateServiceLinkedRolesOnFirstEnvironment",
      "Effect": "Allow",
      "Action": "iam:CreateServiceLinkedRole",
      "Resource": "arn:aws:iam::{{111122223333}}:role/aws-service-role/*",
      "Condition": {
        "StringEquals": {
          "iam:AWSServiceName": [
            "elasticbeanstalk.amazonaws.com",
            "eks.amazonaws.com"
          ]
        }
      }
    }
  ]
}
```

`iam:GetRole`está en su propia sentencia porque la clave de `iam:PassedToService` condición solo existe en una `PassRole` solicitud. Aplicarlo `iam:GetRole` en la misma declaración impediría en absoluto que se concediera ese permiso.

Esta política cubre únicamente la transferencia de funciones. No otorga las acciones de Elastic Beanstalk que requiere la creación de una aplicación y un entorno.

Sin estos permisos, `CreateEnvironment` produce un `AccessDenied` error al asignar un nombre a la acción que no pudo realizar. Para obtener más información, consulte [ Otorgar un permiso principal para transferir un rol a un AWS servicio ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) y [`CreateEnvironment`](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateEnvironment.html).

## Funciones que administra Elastic Beanstalk
<a name="beanstalk-cluster-permissions-service-roles"></a>

Elastic Beanstalk opera un entorno de Beanstalk Cluster a través del rol vinculado al `AWSServiceRoleForElasticBeanstalk` servicio, que crea en su cuenta. Este rol no se crea, se configura ni se transfiere. Amazon EKS también utiliza su propia función vinculada a un servicio. `AWSServiceRoleForAmazonEKS` Para saber cómo Elastic Beanstalk usa los roles vinculados a servicios, consulte. [Uso de roles vinculados a servicios para Elastic Beanstalk](using-service-linked-roles.md)

## Confirme las funciones que usa el entorno
<a name="beanstalk-cluster-permissions-verify"></a>

Cuando el entorno alcance el `Ready` estado, lea su configuración resuelta:

```
$ aws elasticbeanstalk describe-configuration-settings \
    --application-name my-app \
    --environment-name my-cluster-env \
    --query "ConfigurationSettings[0].OptionSettings[?OptionName=='cluster-role' || OptionName=='node-role' || OptionName=='observability-role'].[Namespace,OptionName,Value]" \
    --output table
```

Confirme que las entradas de clúster, nodo y rol de observabilidad contengan los ARN proporcionados durante la creación. Si el entorno usa un rol de aplicación, ejecute la verificación de credenciales e identidad [Configura un rol de aplicación](#beanstalk-cluster-permissions-application-role) y confirme que el ARN devuelto identifica el rol seleccionado. En el caso de una versión de aplicación basada en el código fuente, espere a que aparezca la versión`PROCESSED`; ese estado confirma que AWS CodeBuild podría usar el rol de compilación y completar la creación de la imagen. Consulte [Creación de imágenes de contenedores para entornos de Beanstalk Cluster](beanstalk-cluster-app-versions.md).

## Permisos de aplicación
<a name="beanstalk-cluster-permissions-application"></a>

Utilice un rol de aplicación cuando la aplicación en ejecución deba llamar a AWS los servicios. Configure el rol antes de crear el entorno y conceda solo los permisos que requiere la aplicación. La aplicación recibe el rol a través de Amazon EKS Pod Identity y no a través de un perfil de instancia de Amazon EC2.

Pase el ARN del rol a la `application-role` configuración del espacio de `aws:elasticbeanstalk:eks:environment` nombres o seleccione el rol en la consola de Elastic Beanstalk al crear el entorno.

El rol de la aplicación también es el rol que lee las credenciales de un backend de observabilidad externo. Si configuras cualquier backend de observabilidad en`custom`, otorga la función a la aplicación `secretsmanager:GetSecretValue` y `secretsmanager:DescribeSecret` al secreto de Secrets Manager nombrado por. `custom-credentials` Consulte [Enviar datos de observabilidad a un backend de terceros](monitoring-cluster-environments.md#monitoring-cluster-environments-custom-backend).

### Configura un rol de aplicación
<a name="beanstalk-cluster-permissions-application-role"></a>

Cree el rol de la aplicación antes de crear el entorno. Otorgue al rol solo las acciones y los recursos que requiere la aplicación. Configure su política de confianza para Amazon EKS Pod Identity, incluida `sts:AssumeRole` y `sts:TagSession` para el principal del `pods.eks.amazonaws.com` servicio:

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "pods.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
```

1. Cree el rol con la política de confianza anterior.

1. Adjunte una política basada en la identidad que otorgue solo las acciones de servicio y los recursos que requiere la aplicación.

1. En la consola de Elastic Beanstalk, inicie el flujo de trabajo de creación del entorno y amplíe el acceso al servicio. ** **

1. Elija el rol en Rol de ** aplicación: opcional. ** Complete la configuración restante del entorno y, a continuación, cree el entorno.

   Con la API AWS CLI o la API, elija el rol; en su lugar, añada la `application-role` opción a su `create-environment` solicitud:

   ```
   --option-settings \
       Namespace=aws:elasticbeanstalk:eks:environment,OptionName=application-role,Value={{arn:aws:iam::111122223333:role/my-application-role}}
   ```

1. Una vez implementada la aplicación, llama al AWS servicio requerido desde la aplicación. Para verificar la identidad de las credenciales independientemente de la política de servicio, llame AWS STS `GetCallerIdentity` y confirme que el ARN devuelto identifica el rol de la aplicación seleccionado.

Si la aplicación lo recibe`AccessDenied`, comprueba que has seleccionado el rol deseado durante la creación del entorno, que su política de confianza permite la identidad de los pods de Amazon EKS y que su política basada en la identidad permite la acción y el recurso solicitados. Corrija la política de confianza o de permisos y repita la comprobación de identidad y credenciales y la llamada al servicio de la solicitud. Si se seleccionó el rol incorrecto, cree un entorno de reemplazo con el rol deseado en lugar de agregar permisos de aplicación al rol incorrecto. Utilice funciones de aplicación independientes cuando los entornos requieran un acceso diferente. No conceda permisos de aplicación al rol de clúster o nodo.

## Diagnostique errores de rol
<a name="beanstalk-cluster-permissions-diagnosis"></a>

Comience con los eventos de Elastic Beanstalk para el entorno. `operation_start`Establezca la marca de tiempo registrada inmediatamente antes de la solicitud fallida:

```
$ operation_start='{{timestamp-recorded-before-the-request}}'
$ aws elasticbeanstalk describe-events \
    --environment-name my-cluster-env \
    --severity ERROR \
    --start-time "$operation_start" \
    --max-items 20
```

La creación de un entorno rechaza una función de infraestructura  
Confirme que el rol esté en la cuenta de entorno, que su política de confianza y las políticas adjuntas coincidan con las directrices actuales del modo automático de Amazon EKS y que su ARN esté completo. Si el conjunto de subredes solicitado ya tiene un clúster registrado, utilice sus funciones de clúster y nodo registrados. El error de operación identifica valores conflictivos entre los valores solicitados y registrados. Corrija la solicitud y vuelva a crear el entorno. No puede reemplazar estas funciones en un entorno existente.

No se puede recuperar la imagen de la aplicación  
Compruebe que el rol de nodo cuente con la política de confianza y permisos de recuperación de Amazon ECR documentada. Compruebe también el URI de la imagen y cualquier política de repositorio que restrinja el acceso. Corrija la política del rol o del repositorio y, a continuación, vuelva a implementar la versión de la aplicación.

Una fuente genera informes `FAILED`  
Verifique el rol de compilación en la configuración de compilación de la versión de la aplicación e inspeccione los diagnósticos de compilación. Corrija la política de permisos o confianza del rol antes de crear una nueva versión de la aplicación. Consulte [Creación de imágenes de contenedores para entornos de Beanstalk Cluster](beanstalk-cluster-app-versions.md).

La aplicación en ejecución recibe `AccessDenied`  
Utilice el rol de la aplicación para registrarse. [Configura un rol de aplicación](#beanstalk-cluster-permissions-application-role) Confirme primero la identidad de la credencial y, a continuación, compare la acción y el recurso denegados en los registros de la aplicación y el CloudTrail evento con la política de roles.