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
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
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).
Política de confianza para roles de capacidad
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
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:AssumeRolepara 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.
-
-
- 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.
-
Comprobación de un rol de capacidad existente
Puede utilizar el procedimiento siguiente para comprobar si la cuenta ya dispone del rol de IAM de capacidad adecuado para su caso de uso.
-
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
En el panel de navegación izquierdo, elija Roles.
-
Busque el nombre del rol de capacidad en la lista de roles (por ejemplo,
ACKCapabilityRoleoArgoCDCapabilityRole). -
Si existe un rol, selecciónelo para ver las políticas adjuntas y la relación de confianza.
-
Elija Relaciones de confianza y, a continuación, Editar política de confianza.
-
Compruebe que la relación de confianza coincida con la política de confianza de capacidad. Si no coincide, actualice la política de confianza.
-
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
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
-
-
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
Elija Roles y, a continuación, Create role (Crear rol).
-
En Tipo de entidad de confianza, seleccione Política de confianza personalizada.
-
Copie y pegue la política de confianza de capacidad en el editor de políticas de confianza.
-
Elija Siguiente.
-
En la pestaña Agregar permisos, seleccione o cree las políticas adecuadas para su tipo de capacidad (consulte Permisos por tipo de capacidad). En el caso de kro, también puede omitir este paso.
-
Elija Siguiente.
-
En Nombre del rol, ingrese un nombre único para su rol (por ejemplo,
ACKCapabilityRole,ArgoCDCapabilityRoleokroCapabilityRole). -
En Description (Descripción), ingrese texto descriptivo, como
Amazon EKS - ACK capability role. -
Seleccione Crear rol.
-
- AWS CLI
-
-
Copie la política de confianza de capacidad en un archivo denominado
capability-trust-policy.json. -
Creación del rol. Sustituya
ACKCapabilityRolepor el nombre del rol que desee.aws iam create-role \ --role-name ACKCapabilityRole \ --assume-role-policy-document file://capability-trust-policy.json -
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
- 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.
-
Tiene el permiso
iam:PassRolepara 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).
-
- 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
AmazonEKSSecretReaderPolicydefinida 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.