

 **Ayude a mejorar esta página** 

Para contribuir a esta guía del usuario, elija el enlace **Edit this page on GitHub** que se encuentra en el panel derecho de cada página.

# Rol de IAM de capacidad de Amazon EKS
<a name="capability-role"></a>

Las capacidades de EKS necesitan que se configure un rol de IAM de capacidad (o rol de capacidad). Las capacidades utilizan este rol para llevar a cabo acciones en los servicios de AWS y acceder a los recursos de Kubernetes del clúster mediante entradas de acceso que se crean automáticamente.

Antes de poder especificar un rol de capacidad durante la creación de la capacidad, debe crear el rol de IAM con la política de confianza y los permisos adecuados para el tipo de capacidad. Una vez creado este rol de IAM, se puede reutilizar para cualquier cantidad de recursos de capacidad.

## Requisitos del rol de capacidad
<a name="_capability_role_requirements"></a>

El rol de capacidad debe cumplir los siguientes requisitos:
+ El rol debe estar en la misma cuenta de AWS que el clúster y el recurso de capacidad.
+ El rol debe tener una política de confianza que permita al servicio de las capacidades de EKS asumir el rol.
+ El rol debe tener los permisos adecuados para el tipo de capacidad y los requisitos del caso de uso (consulte [Permisos por tipo de capacidad](#capability-permissions)).

## Política de confianza para roles de capacidad
<a name="capability-trust-policy"></a>

Todos los roles de capacidad deben incluir la siguiente política de confianza:

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

Esta política de confianza permite a EKS hacer lo siguiente:
+ Asumir el rol para llevar a cabo operaciones de API de AWS
+ Etiquetar sesiones con fines de auditoría y seguimiento

## Permisos por tipo de capacidad
<a name="capability-permissions"></a>

Los permisos de IAM necesarios dependen de la capacidad que utilice y del modelo de implementación.

**nota**  
Para las implementaciones de producción que utilizan selectores de roles de IAM con ACK, o cuando se utilizan kro o Argo CD sin integración de servicios de AWS, es posible que el rol de capacidad no necesite ningún permiso de IAM más allá de la política de confianza.

 **kro (Kube Resource Orchestrator)**   
No se necesita ningún permiso de IAM. Puede crear un rol de capacidad sin políticas adjuntas. kro solo necesita los permisos de RBAC de Kubernetes para crear y administrar los recursos de Kubernetes.

 ** AWS Controladores para Kubernetes de (ACK)**   
ACK admite dos modelos de permisos:  
+  **Configuración sencilla (desarrollo y pruebas)**: agregue los permisos de los servicios de AWS directamente al rol de capacidad. Funciona bien para comenzar, para implementaciones de una sola cuenta o cuando todos los usuarios necesitan los mismos permisos.
+  **Práctica recomendada de producción**: utilice los selectores de roles de IAM para implementar el acceso de privilegio mínimo. Con este enfoque, el rol de capacidad solo necesita el permiso `sts:AssumeRole` para asumir roles específicos del servicio. No agregará ningún permiso de servicio de AWS (como S3 o RDS) al propio rol de capacidad, ya que esos permisos se conceden a los roles de IAM individuales que se asignan a espacios de nombres específicos.

  Los selectores de roles de IAM permiten lo siguiente:
  + Aislamiento de permisos del espacio de nombres
  + Administración de recursos entre cuentas
  + Roles de IAM específicos de equipos
  + Modelo de seguridad de privilegio mínimo

    Ejemplo de política de rol de capacidad para el enfoque del selector de roles de IAM:

    ```
    {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "sts:AssumeRole",
          "Resource": [
            "arn:aws:iam::111122223333:role/ACK-S3-Role",
            "arn:aws:iam::111122223333:role/ACK-RDS-Role",
            "arn:aws:iam::444455556666:role/ACKCrossAccountRole"
          ]
        }
      ]
    }
    ```

    Para obtener información detallada sobre la configuración de los permisos de ACK, lo que incluye los selectores de roles de IAM, consulte [Configuración de los permisos de ACK](ack-permissions.md).

 **Argo CD**   
No se necesita ningún permiso de IAM de forma predeterminada. Es posible que se necesiten permisos opcionales para:  
+  **AWS Secrets Manager**: si utiliza Secrets Manager para almacenar las credenciales del repositorio de Git
+  **AWS CodeConnections**: si utiliza CodeConnections para la autenticación del repositorio de Git

  Ejemplo de política de Secrets Manager y CodeConnections:

  ```
  {
    "Version": "2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "secretsmanager:GetSecretValue",
          "secretsmanager:DescribeSecret"
        ],
        "Resource": "arn:aws:secretsmanager:region:account-id:secret:argocd/*"
      },
      {
        "Effect": "Allow",
        "Action": [
          "codeconnections:UseConnection",
          "codeconnections:GetConnection"
        ],
        "Resource": "arn:aws:codeconnections:region:account-id:connection/*"
      }
    ]
  }
  ```

  Para obtener información detallada sobre los requisitos de permisos de Argo CD, consulte [Consideraciones sobre Argo CD](argocd-considerations.md).

## Comprobación de un rol de capacidad existente
<a name="check-capability-role"></a>

Puede utilizar el procedimiento siguiente para comprobar si la cuenta ya dispone del rol de IAM de capacidad adecuado para su caso de uso.

1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

1. En el panel de navegación izquierdo, elija **Roles**.

1. Busque el nombre del rol de capacidad en la lista de roles (por ejemplo, `ACKCapabilityRole` o `ArgoCDCapabilityRole`).

1. Si existe un rol, selecciónelo para ver las políticas adjuntas y la relación de confianza.

1. Elija **Relaciones de confianza** y, a continuación, **Editar política de confianza**.

1. Compruebe que la relación de confianza coincida con la [política de confianza de capacidad](#capability-trust-policy). Si no coincide, actualice la política de confianza.

1. Elija **Permisos** y compruebe que el rol tenga los permisos adecuados para su tipo de capacidad y caso de uso.

## Creación de un rol de IAM de capacidad
<a name="create-capability-role"></a>

Puede utilizar la Consola de administración de AWS o la AWS CLI para crear un rol de capacidad.

 ** Consola de administración de AWS **   

1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

1. Elija **Roles** y, a continuación, **Create role (Crear rol)**.

1. En **Tipo de entidad de confianza**, seleccione **Política de confianza personalizada**.

1. Copie y pegue la [política de confianza de capacidad](#capability-trust-policy) en el editor de políticas de confianza.

1. Elija **Siguiente**.

1. En la pestaña **Agregar permisos**, seleccione o cree las políticas adecuadas para su tipo de capacidad (consulte [Permisos por tipo de capacidad](#capability-permissions)). En el caso de kro, también puede omitir este paso.

1. Elija **Siguiente**.

1. En **Nombre del rol**, ingrese un nombre único para su rol (por ejemplo, `ACKCapabilityRole`, `ArgoCDCapabilityRole` o `kroCapabilityRole`).

1. En **Description** (Descripción), ingrese texto descriptivo, como `Amazon EKS - ACK capability role`.

1. Elija **Creación de rol**.

 ** AWS CLI**   

1. Copie la [política de confianza de capacidad](#capability-trust-policy) en un archivo denominado `capability-trust-policy.json`.

1. Creación del rol. Sustituya `ACKCapabilityRole` por el nombre del rol que desee.

   ```
   aws iam create-role \
     --role-name ACKCapabilityRole \
     --assume-role-policy-document file://capability-trust-policy.json
   ```

1. Asocie las políticas de IAM necesarias al rol. En el caso de ACK, adjunte políticas para los servicios de AWS que desee administrar. En el caso de Argo CD, adjunte políticas para Secrets Manager o CodeConnections si es necesario. En el caso de kro, también puede omitir este paso.

   Ejemplo de ACK con permisos de S3:

   ```
   aws iam put-role-policy \
     --role-name ACKCapabilityRole \
     --policy-name S3Management \
     --policy-document file://s3-policy.json
   ```

## Solución de problemas de roles de capacidad
<a name="troubleshooting-capability-role"></a>

 **Se produce un error en la creación de la capacidad porque el rol de IAM no es válido"**   
Verifique lo siguiente:  
+ El rol existe en la misma cuenta que el clúster.
+ La política de confianza coincide con la [política de confianza de capacidad](#capability-trust-policy). 
+ Tiene el permiso `iam:PassRole` para el rol.

 **La capacidad muestra errores de permisos**   
Verifique lo siguiente:  
+ El rol tiene los permisos de IAM necesarios para el tipo de capacidad.
+ La entrada de acceso existe en el clúster para el rol.
+ Si es necesario, se deben configurar permisos de Kubernetes adicionales (consulte [Permisos de Kubernetes adicionales](capabilities-security.md#additional-kubernetes-permissions)).

 **Los recursos de ACK fallan con errores de permiso denegado**   
Verifique lo siguiente:  
+ El rol tiene los permisos de IAM necesarios para su caso de uso.
+ En el caso de los controladores de ACK que hacen referencia a secretos, asegúrese de haber asociado la política de entrada de acceso `AmazonEKSSecretReaderPolicy` definida a los espacios de nombres adecuados.

Para obtener más orientación sobre la solución de problemas, consulte [Consideraciones sobre la seguridad para las capacidades de EKS](capabilities-security.md).