Autenticarse en GKE en Azure con identidades externas

La federación de identidades de la fuerza laboral otorga a las identidades que no son de Google acceso aGoogle Cloud Servicios. En el contexto de GKE en Azure, esto significa que puede usar identidades externas preexistentes para crear o acceder a un clúster de GKE sin depender de las credenciales de Google.

Los beneficios de utilizar la federación de identidad de la fuerza laboral son los siguientes:

  • Elimina la necesidad de tener cuentas duplicadas en diferentes plataformas o proveedores.
  • Establece permisos solo una vez, evitando así la necesidad de realizar configuraciones en múltiples plataformas.
  • Simplifica el acceso de los usuarios porque se requieren menos nombres de usuario y contraseñas.

Antes de empezar

Antes de poder habilitar que usuarios o grupos externos accedan a los clústeres de GKE, debe realizar los siguientes pasos:

  1. Para que los usuarios o grupos externos puedan usar GKE en la API de Azure, configure la federación de identidades de fuerza laboral.

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

    Tenga en cuenta que los roles son conjuntos de permisos. Al asignar un rol a una entidad (usuario, grupo o cuenta de servicio), le otorga todos los permisos que contiene el rol.

    Usuarios

    Para usuarios individuales, 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"
    

    Reemplace lo siguiente:

    • PROJECT_ID : el ID de su Google Cloud proyecto.
    • WORKFORCE_POOL_ID : el ID que identifica de forma única su grupo de identidades de fuerza laboral en Google CloudAl formatear el ID, asegúrese de seguir las pautas recomendadas que se proporcionan en la documentación de IAM en 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

    Para los grupos, debe 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"
    

    Reemplace lo siguiente:

    • PROJECT_ID : el ID de su Google Cloud proyecto.
    • WORKFORCE_POOL_ID : el ID que identifica de forma única su grupo de identidades de fuerza laboral en Google CloudAl formatear el ID, asegúrese de seguir las pautas recomendadas que se proporcionan en la documentación de IAM en Parámetros de consulta .
    • GROUP_ID : un ID que identifica de forma única a un grupo externo.
  3. Opcional: Asigne a sus usuarios o grupos externos los roles de Administración de Identidad y Acceso (IAM) adecuados. Este paso solo es necesario si desea otorgar a los usuarios o grupos la capacidad de crear o actualizar clústeres; no es necesario simplemente para acceder a un clúster .

    Usuarios

    Para usuarios individuales, 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"
    

    Reemplace lo siguiente:

    • PROJECT_ID : el ID de su Google Cloud proyecto.
    • WORKFORCE_POOL_ID : el ID que identifica de forma única su grupo de identidades de fuerza laboral en Google CloudAl formatear el ID, asegúrese de seguir las pautas recomendadas que se proporcionan en la documentación de IAM en 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

    Para los grupos, debe 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"
    

    Reemplace lo siguiente:

    • PROJECT_ID : el ID de su Google Cloud proyecto.
    • WORKFORCE_POOL_ID : el ID que identifica de forma única su grupo de identidades de fuerza laboral en Google CloudAl formatear el ID, asegúrese de seguir las pautas recomendadas que se proporcionan en la documentación de IAM en Parámetros de consulta .
    • GROUP_ID : un ID que identifica de forma única a un grupo externo.

Para obtener más información sobre qué roles y permisos de API son necesarios para GKE en Azure, consulte Roles y permisos de API .

Otorgar acceso externo a los clústeres de GKE

Hay dos métodos para configurar la federación de identidad de fuerza de trabajo para que los usuarios o grupos externos puedan acceder a sus clústeres de GKE.

El método n.° 1 requiere definir un archivo RBAC y aplicarlo al clúster. Este método ofrece un control preciso de los permisos, como permitir a los usuarios acceso de solo lectura a los recursos sin otorgarles un acceso más amplio.

El método n.º 2 requiere especificar el acceso para identidades externas al crear o actualizar un clúster. Este método otorga privilegios administrativos completos a los usuarios o grupos especificados.

Elija el método que mejor se adapte a su nivel deseado de control de acceso: método n.° 1 para permisos más granulares o método n.° 2 para otorgar derechos de administrador de clúster completos.

Método n.° 1: utilizar un archivo RBAC

El primer método para otorgar acceso externo a los clústeres de GKE implica el uso de un archivo RBAC. Siga estos pasos:

  1. Define un archivo YAML de RBAC que incluya los sujetos (usuarios o grupos) y los permisos que quieres otorgarles dentro del clúster de GKE. A continuación, se muestran ejemplos de configuraciones de YAML de RBAC para usuarios individuales y 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
    

    Reemplace lo siguiente:

    • WORKFORCE_POOL_ID : el ID que identifica de forma única su grupo de identidades de fuerza laboral en Google CloudAl formatear el ID, asegúrese de seguir las pautas recomendadas que se proporcionan en la documentación de IAM en 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
    

    Reemplace lo siguiente:

    • WORKFORCE_POOL_ID : el ID que identifica de forma única su grupo de identidades de fuerza laboral en Google CloudAl formatear el ID, asegúrese de seguir las pautas recomendadas que se proporcionan en la documentación de IAM en Parámetros de consulta .
    • GROUP_ID : un ID que identifica de forma única a un grupo externo.
  2. Identifique el clúster de GKE que desea configurar y configúrelo como contexto activo mediante el siguiente comando:

      kubectl config use-context CLUSTER_CONTEXT
    

    Reemplace CLUSTER_CONTEXT con el nombre de contexto apropiado para su clúster.

  3. Con el clúster de GKE deseado establecido como contexto activo, aplique la configuración de RBAC al clúster mediante el siguiente comando:

    kubectl apply -f RBAC_PATH
    

    Reemplace RBAC_PATH con la ruta al archivo RBAC que creó o editó.

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

  4. Si necesita realizar cambios posteriores en los permisos, modifique el archivo RBAC y vuelva a aplicarlo al clúster repitiendo los pasos anteriores.

Método n.° 2: otorgar acceso a identidades externas durante la creación o actualización del clúster

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

Para crear un clúster, siga los pasos de "Crear un clúster" . Para actualizar un clúster, siga los pasos de "Actualizar un clúster" .

Al ejecutar el comando gcloud para crear o actualizar un clúster, especifique los parámetros admin-users y/o admin-groups de la siguiente manera:

gcloud container azure 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

Reemplace lo siguiente:

  • CLUSTER_NAME : el nombre de su clúster.
  • LOCATION : el Google Cloud región donde se administra su clúster.
  • WORKFORCE_POOL_ID : el ID que identifica de forma única su grupo de identidades de fuerza laboral en Google CloudAl formatear el ID, asegúrese de seguir las pautas recomendadas que se proporcionan en la documentación de IAM en 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 : un ID que identifica de forma única a un grupo externo.

Resumen sobre cómo conceder acceso a identificadores externos a los clústeres de GKE

Después de ejecutar el método n.° 1 o el método n.° 2, los usuarios o grupos externos especificados pueden usar Google Cloud Consola para conectarse y ver los detalles del clúster. Como alternativa, pueden usar kubectl con identidad desde la CLI de gcloud para administrar, manipular y comunicarse con el clúster.

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