Administración de usuarios o roles de IAM para su clúster - Amazon EKS

Administración de usuarios o roles de IAM para su clúster

Cuando se crea un clúster de Amazon EKS, al usuario de entidad de IAM o al rol, como un usuario federado que crea el clúster, se le conceden permisos de system:masters de forma automática en la configuración RBAC del clúster en el panel de control. Esta entidad de IAM no aparece en el ConfigMap, ni en ninguna otra configuración visible, así que asegúrese de realizar un seguimiento de la entidad de IAM que creó originalmente el clúster. Para permitir que otros usuarios o roles de AWS interactúen con el clúster, debe editar el ConfigMap de aws-auth desde Kubernetes.

nota

Para obtener más información acerca de las diferentes identidades de IAM, consulte Identidades (usuarios, grupos y roles) en la Guía del usuario de IAM. Para obtener más información sobre la configuración de RBAC de Kubernetes, consulte Utilización de la autorización de RBAC. Para todos los ajustes del mapa de configuración, consulte Formato de configuración completa en GitHub.

El mapa de configuración aws-auth se aplica como parte de la guía de Introducción a Amazon EKS, que proporciona una explicación completa desde la creación de un clúster de Amazon EKS hasta la implementación de una aplicación Kubernetes de ejemplo. Se crea inicialmente para permitir que los nodos se unan al clúster, pero este mapa de configuración también se utiliza para agregar acceso RBAC a los usuarios y los roles de IAM. Si no ha lanzado los nodos ni ha aplicado el mapa de configuración aws-auth, puede hacerlo con el siguiente procedimiento.

Para aplicar el mapa de configuración aws-auth a su clúster

  1. Compruebe si ya ha aplicado el mapa de configuración aws-auth.

    kubectl describe configmap -n kube-system aws-auth

    Si recibe un error que indica “Error from server (NotFound): configmaps "aws-auth" not found”, continúe con los siguientes pasos para aplicar el mapa de configuración de stock.

  2. Descargue, edite y aplique el mapa de configuración del autenticador de AWS.

    1. Descargue el mapa de configuración.

      curl -o aws-auth-cm.yaml https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm.yaml
    2. Abra el archivo con el editor de texto que prefiera. Reemplace <ARN of instance role (not instance profile)> con el nombre de recurso de Amazon (ARN) del rol de IAM asociado a sus nodos y guarde el archivo. No modifique ninguna otra línea de este archivo.

      importante

      El ARN de rol no puede incluir una ruta de acceso. El formato del ARN del rol debe ser arn:aws:iam::<123456789012>:role/<role-name>. Para obtener más información, consulte aws-auth ConfigMap no concede acceso al clúster.

      apiVersion: v1 kind: ConfigMap metadata: name: aws-auth namespace: kube-system data: mapRoles: | - rolearn: <ARN of instance role (not instance profile)> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes

      Puede inspeccionar las salidas de la pila de AWS CloudFormation para sus grupos de nodos de trabajo y buscar los siguientes valores:

      • InstanceRoleARN (para grupos de nodos que se crearon con eksctl)

      • NodeInstanceRole (para grupos de nodos que se crearon con plantillas de Amazon EKS incluidas en AWS CloudFormation en la AWS Management Console)

    3. Aplique la configuración. Este comando puede tardar varios minutos en finalizar.

      kubectl apply -f aws-auth-cm.yaml
      nota

      Si recibe cualquier error de tipo de recurso o autorización, consulte Acceso denegado o no autorizado (kubectl) en la sección de solución de problemas.

  3. Observe el estado de los nodos y espere a que aparezca el estado Ready.

    kubectl get nodes --watch

Para agregar un usuario o rol de IAM a un clúster de Amazon EKS

  1. Asegúrese de que las credenciales de AWS que utiliza kubectl ya tienen autorización para el clúster. El usuario de IAM que ha creado el clúster tiene esos permisos de forma predeterminada.

  2. Abra el mapa de configuración aws-auth.

    kubectl edit -n kube-system configmap/aws-auth
    nota

    Si recibe un error que indica “Error from server (NotFound): configmaps "aws-auth" not found”, use el procedimiento anterior para aplicar el mapa de configuración de stock.

    Ejemplo de mapa de configuración:

    apiVersion: v1 data: mapRoles: | - groups: - system:bootstrappers - system:nodes rolearn: arn:aws:iam::111122223333:role/eksctl-my-cluster-nodegroup-standard-wo-NodeInstanceRole-1WP3NUE3O6UCF username: system:node:{{EC2PrivateDNSName}} kind: ConfigMap metadata: creationTimestamp: "2020-09-30T21:09:18Z" name: aws-auth namespace: kube-system resourceVersion: "1021" selfLink: /api/v1/namespaces/kube-system/configmaps/aws-auth uid: dcc31de5-3838-11e8-af26-02e00430057c
  3. Agregue los usuarios o roles de IAM, o las cuentas de AWS, al mapa de configuración. No puede agregar grupos de IAM al mapa de configuración.

    • Para agregar un rol de IAM (por ejemplo, para usuarios federados): agregue los detalles del rol a la sección mapRoles del mapa de configuración, en data. Agregue esta sección si no existe todavía en el archivo. Cada entrada admite los parámetros siguientes:

      • rolearn: ARN del rol de IAM que se va a agregar.

      • username: nombre del usuario de Kubernetes al que se mapea el rol de IAM.

      • groups: lista de los grupos de Kubernetes mapeados al rol. Para obtener más información, consulte Roles predeterminados y enlaces de roles en la documentación de Kubernetes.

    • Para agregar un usuario de IAM: agregue los detalles del usuario a la sección mapUsers del mapa de configuración, en data. Agregue esta sección si no existe todavía en el archivo. Cada entrada admite los parámetros siguientes:

      • userarn: ARN del usuario de IAM que se va a agregar.

      • username: nombre de usuario dentro de Kubernetes al que se mapea el usuario de IAM.

      • groups: lista de los grupos de Kubernetes mapeados al usuario. Para obtener más información, consulte Roles predeterminados y enlaces de roles en la documentación de Kubernetes.

    Por ejemplo, el bloque siguiente contiene:

    • Una sección mapRoles que agrega el rol de la instancia de nodos para que los nodos puedan registrarse en el clúster.

    • Una sección mapUsers con el usuario admin de AWS de la cuenta de AWS predeterminada y el usuario ops-user de otra cuenta de AWS. Ambos usuarios se agregan al grupo system:masters.

    Reemplace todos los <example-values> (incluido <>) con sus propios valores.

    # Please edit the object below. Lines beginning with a '#' will be ignored, # and an empty file will abort the edit. If an error occurs while saving this file will be # reopened with the relevant failures. # apiVersion: v1 data: mapRoles: | - rolearn: <arn:aws:iam::111122223333:role/eksctl-my-cluster-nodegroup-standard-wo-NodeInstanceRole-1WP3NUE3O6UCF> username: <system:node:{{EC2PrivateDNSName}}> groups: - <system:bootstrappers> - <system:nodes> mapUsers: | - userarn: <arn:aws:iam::111122223333:user/admin> username: <admin> groups: - <system:masters> - userarn: <arn:aws:iam::111122223333:user/ops-user> username: <ops-user> groups: - <system:masters>
  4. Guarde el archivo y salga del editor de texto.

  5. Asegúrese de que el usuario o grupo de Kubernetes al que mapeó el usuario o el rol de IAM está vinculado a un rol de Kubernetes con una RoleBinding o ClusterRoleBinding. Para obtener más información, consulte Utilización de la autorización de RBAC en la documentación de Kubernetes. Puede descargar los siguientes manifiestos de ejemplo que crean un clusterrole y clusterrolebinding o un role y rolebinding:

    • Ver recursos de Kubernetes en todos los espacios de nombres: el nombre del grupo en el archivo es eks-console-dashboard-full-access-group, que es el grupo al que debe asignarse el usuario o rol de IAM en el mapa de configuración de aws-auth. Si lo desea, puede cambiar el nombre del grupo antes de aplicarlo al clúster y, a continuación, asignar el usuario o rol de IAM a ese grupo en el mapa de configuración. Descargue el archivo desde:

      https://s3.us-west-2.amazonaws.com/amazon-eks/docs/eks-console-full-access.yaml
    • Ver recursos de Kubernetes en un espacio de nombres específico: el espacio de nombres en este archivo es default, por lo que si desea especificar un espacio de nombres diferente, edite el archivo antes de aplicarlo al clúster. El nombre del grupo en el archivo es eks-console-dashboard-restricted-access-group, que es el grupo al que debe asignarse el usuario o rol de IAM en el mapa de configuración de aws-auth. Si lo desea, puede cambiar el nombre del grupo antes de aplicarlo al clúster y, a continuación, asignar el usuario o rol de IAM a ese grupo en el mapa de configuración. Descargue el archivo desde:

      https://s3.us-west-2.amazonaws.com/amazon-eks/docs/eks-console-restricted-access.yaml
  6. (Opcional) Si desea que los usuarios que ha agregado al mapa de configuración puedan Vista de los nodos o Visualizar cargas de trabajo en la AWS Management Console, el usuario o el rol deben tener estos dos tipos de permisos: