Saltar al contenido

¿Cómo soluciono el error "Your current user or role does not have access to Kubernetes objects on this EKS cluster" en Amazon EKS?

7 minutos de lectura
0

He intentado acceder a mi clúster de Amazon Elastic Kubernetes Service (Amazon EKS). Sin embargo, he recibido el mensaje de error "Your current user or role does not have access to Kubernetes objects on this EKS cluster".

Descripción corta

Aparece un error de acceso cuando una identidad de AWS Identity and Access Management (IAM) no tiene permisos de control de acceso basado en roles (RBAC) para Kubernetes. Para acceder a la API de Kubernetes, debes tener permisos de RBAC. Para obtener más información sobre RBAC, consulta Using RBAC authorization (Uso de la autorización RBAC) en el sitio web de Kubernetes. Para ver los recursos de Kubernetes en la Consola de administración de AWS, tu identidad de IAM debe estar asignada al ConfigMap de aws-auth en tu clúster de Amazon EKS.

Importante: La siguiente resolución usa el ConfigMap de aws-auth para alinearse con el enfoque de Kubernetes para acceder a los permisos de RBAC. Se recomienda migrar las entradas existentes del ConfigMap de aws-auth para acceder a las entradas.

Resolución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.

Si eres el usuario creador o administrador del clúster, puedes usar kubectl o eksctl para actualizar el ConfigMap de aws-auth. Continúa con la adición del usuario o rol de IAM a la configuración de RBAC. De lo contrario, debes obtener el nombre de recurso de Amazon (ARN) de la identidad de IAM que requiere acceso al clúster.

Obtención del ARN de la identidad de IAM que requiere acceso al clúster

Identifica el usuario o rol de IAM que requiere acceso al clúster.

Nota: La identidad de IAM puede ser diferente de la identidad de IAM que utilizas al ejecutar la AWS CLI. El autenticador de AWS IAM para Kubernetes no permite una ruta en el ARN del rol que utilizas en el ConfigMap de aws-auth. Para obtener más información, consulta aws-iam-authenticator en el sitio web de GitHub.

Si tienes acceso a la AWS CLI para el usuario o rol de IAM, ejecuta el siguiente comando get-caller-identity de la AWS CLI:

aws sts get-caller-identity --query "Arn"

Nota: Si no tienes acceso a la AWS CLI, elimina las comillas de Arn y ejecuta el comando anterior en AWS CloudShell.

Resultado de ejemplo:

"arn:aws:iam::111122223333:role/testrole"

Si el resultado del comando muestra un ARN de rol de IAM, confirma que está en el formato ARN correcto: arn:aws:iam::111122223333:role/example.

Si el ARN incluye el rol asumido, debes obtener el ARN del rol de IAM al que estás concediendo los permisos de RBAC. Por ejemplo, el ARN del rol asumido arn:aws:sts::123456:assumed-role/MyRole/your_username está asociado al ARN del rol arn:aws:sts::123456:role/MyRole.

Proporciona el ARN al administrador del clúster y, a continuación, solicita que el administrador agregue el ARN del rol al ConfigMap de aws-auth. Para ver los pasos para agregar el ARN al ConfigMap de aws-auth, ve a Agregar el usuario o rol de IAM a la configuración de RBAC.

Confirma que el usuario o rol de IAM tenga los permisos para ver los nodos y las cargas de trabajo de todos los clústeres en la Consola de administración de AWS.

Identificación del creador del clúster

Importante: Solo la entidad de IAM asociada a la creación del clúster tiene acceso a los recursos del clúster. Solo el creador del clúster puede editar el ConfigMap de aws-auth y proporcionar acceso a otras entidades de IAM.

Identifica el rol de creador o administrador del clúster que tiene los permisos principales para configurar el clúster. En primer lugar, consulta el historial de eventos de AWS CloudTrail para ver la llamada a la API CreateCluster. A continuación, comprueba el campo userIdentity.

Si el nombre del creador del clúster aparece como Eliminado en CloudTrail, crea un nuevo usuario o rol de IAM con el mismo nombre. La nueva identidad de IAM tiene el mismo ARN que el creador del clúster original, por lo que la nueva identidad hereda el mismo acceso de administrador al clúster.

Nota: CloudTrail no proporciona el nombre del creador del clúster para los clústeres que tienen más de 90 días.

Para usar la AWS CLI para obtener la identidad de IAM del creador del clúster, ejecuta el siguiente comando get-caller-identity:

aws sts get-caller-identity

Resultado de ejemplo:

{    
    "UserId": "AIDACKCEVSQ6C2EXAMPLE",
    "Account": "111122223333",
    "Arn": "arn:aws:iam:: 111122223333:user/testuser"
}

Agregar el usuario o el rol de IAM a la configuración de RBAC

Si has instalado eksctl, ejecuta el siguiente comando eksctl create iamidentitymapping para actualizar el ConfigMap de aws-auth:

eksctl create iamidentitymapping --cluster your_cluster_name --region=your_region --arn your_IAM_ARN --group system:masters --username admin

Nota: Sustituye your_cluster_name por el nombre de tu clúster de EKS, your_region por la región de AWS y your_IAM_ARN por tu rol de IAM o ARN de usuario.

Para usar kubectl para actualizar e ConfigMap de aws-auth, sigue estos pasos:

  1. Ejecuta el siguiente comando para abrir el ConfigMap de aws-auth en tu editor de texto predeterminado:

    kubectl edit configmap aws-auth -n kube-system

    Nota: La consola muestra el ConfigMap actual. Si no puedes conectarte al clúster, actualiza el archivo kubeconfig. La identidad de IAM que crea el clúster siempre tiene acceso al clúster.

  2. Ejecuta el siguiente comando update-kubeconfig para configurar kubectl de manera que puedas conectarte a tu clúster:

    aws eks update-kubeconfig --region region_code --name your_cluster_name

    Nota: Sustituye region_code por tu región y your_cluster_name por el nombre de tu clúster. Los comandos kubectl deben conectarse al punto de enlace del servidor de Amazon EKS. Si el punto de enlace del servidor de la API es público, deberás tener acceso a Internet para conectarte al punto de enlace. Si el punto de enlace es privado, conéctate al punto de enlace del servidor desde la nube virtual privada (VPC) en la que se ejecuta el clúster.

  3. En el editor de texto que se abre, introduce el siguiente código para agregar un usuario de IAM:

    mapUsers: |  
        - userarn: arn:aws:iam::111122223333:user/testuser
        username: testuser
        groups:
        - system:bootstrappers
        - system:nodes

    Nota: Sustituye 111122223333 por el ID de tu cuenta de AWS y testuser por tu usuario de IAM.

    O bien, introduce el siguiente código para agregar un rol de IAM:

    mapRoles: |  
        - rolearn: arn:aws:iam::111122223333:role/testrole
        username: testrole
        groups:
        - system:bootstrappers
        - system:nodes

    Nota: Sustituye 111122223333 por el ID de tu cuenta y testrole por tu rol de IAM.

Si creas un clúster, tu identidad de IAM recibirá automáticamente los permisos system:masters en la configuración de RBAC del clúster. De forma predeterminada, el grupo system:masters está vinculado al rol de clúster cluster-admin.

No se recomienda usar los permisos system:masters en un entorno de producción. Los permisos system:masters brindan a los usuarios acceso total a todos los recursos de Kubernetes del clúster. En su lugar, se recomienda crear un rol que solo tenga acceso a un espacio de nombres específico con solo los permisos necesarios.

Verificar el acceso al clúster

Sigue estos pasos:

  1. Abre la consola de Amazon EKS.
  2. En el panel de navegación, selecciona Clústeres.
  3. Selecciona tu clúster.
  4. Comprueba si hay errores en las pestañas Información general y Cargas de trabajo.

Si ves errores, consulta Solución de problemas de IAM. Por ejemplo, si has configurado el acceso RBAC para un espacio de nombres específico, es posible que recibas el siguiente mensaje de error:

"Error loading Deployments : deployments.apps is forbidden: User "AIDACKCEVSQ6C2EXAMPLE" cannot list resource "deployments" in API group "apps" at the cluster scope or in the namespace "EXAMPLENAMESPACE"

Para resolver el error del espacio de nombres, debes crear o actualizar el rol de RBAC o el rol de clúster con los enlaces de rol o rol de clúster apropiados. Para obtener más información, consulta RoleBinding and ClusterRoleBinding (RoleBinding y ClusterRoleBinding) en el sitio web de Kubernetes.

OFICIAL DE AWSActualizada hace 6 meses