Autenticarse en GKE on AWS con identidades externas

La federación de identidades de los trabajadores concede acceso a los servicios deGoogle Cloud a identidades que no son de Google. En el contexto de GKE en AWS, esto significa que puedes usar identidades externas ya creadas para crear o acceder a un clúster de GKE sin depender de las credenciales de Google.

Estas son las ventajas de usar la federación de identidades para los trabajadores:

  • De esta forma, no tendrás que crear cuentas duplicadas en diferentes plataformas o proveedores.
  • Solo tienes que definir los permisos una vez, sin necesidad de configurar varias plataformas.
  • Simplificas el acceso de los usuarios, ya que se necesitan menos inicios de sesión y contraseñas.

Antes de empezar

Para poder permitir que los usuarios o grupos externos accedan a los clústeres de GKE, debes seguir estos pasos:

  1. Para que los usuarios o grupos externos puedan usar la API de GKE en AWS, configura la federación de identidades de los empleados:

  2. Asigna el rol gkemulticloud.viewer a tus usuarios o grupos externos para que puedan acceder a los clústeres. Asigna el rol container.clusterViewer para ver los clústeres en la consola Google Cloud .

    Ten en cuenta que los roles son conjuntos de permisos. Cuando asignas un rol a una entidad (usuario, grupo o cuenta de servicio), le das a esa entidad todos los permisos que contiene el rol.

    Usuarios

    En el caso de usuarios concretos, debe asignar el rol gkemulticloud.viewer:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.viewer" \
      --member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"
    

    Haz los cambios siguientes:

    • PROJECT_ID: el ID de tu proyecto de Google Cloud .
    • WORKFORCE_POOL_ID: el ID que identifica de forma única tu grupo de identidades de Workforce en Google Cloud. Cuando dé formato al ID, asegúrese de seguir las directrices recomendadas que se indican en la documentación de IAM, en la sección Parámetros de consulta.
    • SUBJECT_VALUE: el ID que identifica de forma única a un usuario externo. Por ejemplo, el ID puede ser una dirección de correo electrónico, como alex@cymbalgroup.com.

    Grupos

    En el caso de los grupos, debes asignar el rol gkemulticloud.viewer:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.viewer" \
      --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
    

    Haz los cambios siguientes:

    • PROJECT_ID: el ID de tu proyecto de Google Cloud .
    • WORKFORCE_POOL_ID: el ID que identifica de forma única tu grupo de identidades de Workforce en Google Cloud. Cuando dé formato al ID, asegúrese de seguir las directrices recomendadas que se indican en la documentación de gestión de identidades y accesos, en la sección Parámetros de consulta.
    • GROUP_ID: ID que identifica de forma única a un grupo externo.
  3. Opcional: Asigna a tus usuarios o grupos externos los roles de gestión de identidades y accesos (IAM) adecuados. Este paso solo es necesario si quieres conceder a usuarios o grupos la capacidad de crear o actualizar clústeres. No es necesario para acceder a un clúster.

    Usuarios

    En el caso de usuarios concretos, debe asignar el rol gkemulticloud.admin:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.admin" \
      --member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"
    

    Haz los cambios siguientes:

    • PROJECT_ID: el ID de tu proyecto de Google Cloud .
    • WORKFORCE_POOL_ID: el ID que identifica de forma única tu grupo de identidades de Workforce en Google Cloud. Cuando dé formato al ID, asegúrese de seguir las directrices recomendadas que se indican en la documentación de IAM, en la sección Parámetros de consulta.
    • SUBJECT_VALUE: el ID que identifica de forma única a un usuario externo. Por ejemplo, el ID puede ser una dirección de correo electrónico, como alex@cymbalgroup.com.

    Grupos

    En el caso de los grupos, debes asignar el rol gkemulticloud.admin:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.admin" \
      --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
    

    Haz los cambios siguientes:

    • PROJECT_ID: el ID de tu proyecto de Google Cloud .
    • WORKFORCE_POOL_ID: el ID que identifica de forma única tu grupo de identidades de Workforce en Google Cloud. Cuando dé formato al ID, asegúrese de seguir las directrices recomendadas que se indican en la documentación de gestión de identidades y accesos, en la sección Parámetros de consulta.
    • GROUP_ID: ID que identifica de forma única a un grupo externo.

Para obtener más información sobre los roles y permisos de API necesarios para GKE en AWS, consulta Roles y permisos de API.

Conceder acceso externo a clústeres de GKE

Hay dos métodos para configurar la federación de identidades de Workforce de forma que los usuarios o grupos externos puedan acceder a tus clústeres de GKE.

El método 1 requiere que definas un archivo RBAC y lo apliques al clúster. Este método ofrece un control preciso sobre los permisos, como permitir que los usuarios tengan acceso de solo lectura a los recursos sin concederles un acceso más amplio.

El método 2 requiere que especifiques el acceso para identidades externas al crear o actualizar un clúster. Este método concede privilegios de administrador completos a los usuarios o grupos especificados.

Elige el método que mejor se adapte al nivel de control de acceso que quieras: método 1 para obtener permisos más detallados o método 2 para conceder derechos de administrador del clúster completos.

Método 1: usar un archivo RBAC

El primer método para conceder acceso externo a clústeres de GKE consiste en usar un archivo RBAC. Sigue estos pasos:

  1. Define un archivo YAML de RBAC que incluya los sujetos (usuarios o grupos) y los permisos que quieras concederles en el clúster de GKE. A continuación, se muestran ejemplos de configuraciones YAML de control de acceso basado en roles para usuarios concretos y para grupos:

    Usuarios

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: gateway-cluster-admin-user
    subjects:
    - kind: User
      name: principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE
    roleRef:
      kind: ClusterRole
      name: cluster-admin
      apiGroup: rbac.authorization.k8s.io
    

    Haz los cambios siguientes:

    • WORKFORCE_POOL_ID: el ID que identifica de forma única tu grupo de identidades de Workforce en Google Cloud. Cuando dé formato al ID, asegúrese de seguir las directrices recomendadas que se indican en la documentación de gestión de identidades y accesos, en la sección Parámetros de consulta.
    • SUBJECT_VALUE: el ID que identifica de forma única a un usuario externo. Por ejemplo, el ID puede ser una dirección de correo electrónico, como alex@cymbalgroup.com.

    Grupos

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: gateway-cluster-admin-group
    subjects:
    - kind: Group
      name: principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID
    roleRef:
      kind: ClusterRole
      name: cluster-admin
      apiGroup: rbac.authorization.k8s.io
    

    Haz los cambios siguientes:

    • WORKFORCE_POOL_ID: el ID que identifica de forma única tu grupo de identidades de Workforce en Google Cloud. Cuando dé formato al ID, asegúrese de seguir las directrices recomendadas que se indican en la documentación de gestión de identidades y accesos, en la sección Parámetros de consulta.
    • GROUP_ID: ID que identifica de forma única a un grupo externo.
  2. Identifica el clúster de GKE que quieras configurar y defínelo como contexto activo con el siguiente comando:

      kubectl config use-context CLUSTER_CONTEXT
    

    Sustituye CLUSTER_CONTEXT por el nombre de contexto adecuado para tu clúster.

  3. Con el clúster de GKE que quieras configurado como contexto activo, aplica la configuración de RBAC al clúster con el siguiente comando:

    kubectl apply -f RBAC_PATH
    

    Sustituye RBAC_PATH por la ruta al archivo RBAC que has creado o editado.

    Cuando ejecutas este comando, los usuarios o grupos especificados en la configuración de RBAC tienen los permisos para acceder al clúster de GKE de destino y gestionarlo, tal como se define en las reglas de RBAC.

  4. Si necesitas hacer cambios posteriores en los permisos, modifica el archivo RBAC y vuelve a aplicarlo al clúster repitiendo los pasos anteriores.

Método 2: Dar acceso a identidades externas durante la creación o actualización de un clúster

El método 2 concede acceso a identidades externas durante el proceso de creación o actualización del clúster.

Para crear un clúster, sigue los pasos que se indican en Crear un clúster. Para actualizar un clúster, sigue los pasos que se indican en Actualizar un clúster.

Cuando ejecutes el comando gcloud para crear o actualizar un clúster, especifica los parámetros admin-users o admin-groups de la siguiente manera:

gcloud container aws clusters [create|update] CLUSTER_NAME \
    --location=LOCATION
    --admin-users=principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject SUBJECT_VALUE \
    --admin-groups=principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID

Haz los cambios siguientes:

  • CLUSTER_NAME: el nombre de tu clúster.
  • LOCATION: la región en la que se gestiona tu clúster. Google Cloud
  • WORKFORCE_POOL_ID: el ID que identifica de forma única tu grupo de identidades de Workforce en Google Cloud. Cuando dé formato al ID, asegúrese de seguir las directrices recomendadas que se indican en la documentación de gestión de identidades y accesos, en la sección Parámetros de consulta.
  • SUBJECT_VALUE: el ID que identifica de forma única a un usuario externo. Por ejemplo, el ID puede ser una dirección de correo electrónico, como alex@cymbalgroup.com.
  • GROUP_ID: ID que identifica de forma única a un grupo externo.

Resumen de la concesión de acceso a clústeres de GKE a IDs externos

Después de seguir el método 1 o el método 2, los usuarios o grupos externos especificados podrán usar Google Cloud console para conectarse y ver los detalles del clúster. También pueden usar kubectl con la identidad de la CLI de gcloud para gestionar, manipular y comunicarse con el clúster.

Para ejecutar comandos kubectl en clústeres de GKE, consulta cómo generar una entrada kubeconfig.