Configura la puerta de enlace de Connect con Grupos de Google

Esta guía está dirigida a los administradores de la plataforma que necesitan configurar la puerta de enlace de Connect para que la usen las cuentas de usuarios del proyecto a través de Grupos de Google para la autorización. Antes de leer esta página, asegúrate de estar familiarizado con los conceptos de nuestra descripción general. Para autorizar cuentas individuales, consulta la configuración predeterminada.

Esta configuración permite que los usuarios accedan a los clústeres de flotas configurados a través de Google Cloud CLI, la puerta de enlace de Connect y la consola de Google Cloud .

Esta función usa Grupos de Google asociados con Google Workspace o cualquier edición de Cloud Identity.

Tipos de clústeres compatibles

Puedes configurar el control de acceso con Grupos de Google a través de la puerta de enlace de Connect para los siguientes tipos de clústeres:

Para usar esta función con entornos que no se encuentren en la lista anterior, comunícate con la Atención al cliente de Cloud o con el equipo de la puerta de enlace de Connect.

Cómo funciona

Como se describe en la descripción general, suele ser útil poder brindar a los usuarios acceso a los clústeres según su pertenencia a Grupos de Google, es decir, grupos creados en Google Workspace. La autorización basada en la membresía del grupo significa que no tienes que configurar una autorización distinta para cada cuenta, lo que simplifica la administración de las políticas y facilita su auditoría. Por ejemplo, puedes compartir con facilidad el acceso al clúster a un equipo, sin la necesidad de agregar o quitar usuarios individuales de los clústeres cuando se unen al equipo o salen de él. Puedes configurar la puerta de enlace de Connect para obtener información de la pertenencia a Grupos de Google para cada usuario que acceda al clúster. Luego, puedes usar esta información en tus políticas de control de acceso.

A continuación, se muestra el flujo típico de un usuario que se autentica y ejecuta comandos en un clúster con este servicio habilitado. Para que este flujo funcione correctamente, debe existir una política de RBAC en el clúster para un grupo que cumpla con lo siguiente:

  1. Contiene al usuario alice@example.com como miembro.

  2. Es un grupo anidado de gke-security-groups@example.com.

Diagrama en el que se muestra el flujo de los Grupos de Google de puertas de enlace

  1. El usuario alice@example.com accede con su identidad de Google y, si planea usar el clúster desde la línea de comandos, obtiene la puerta de enlace del clúster kubeconfig como se describe en Usa la puerta de enlace de Connect.
  2. El usuario envía una solicitud a través de la ejecución de un comando kubectl o la apertura de las páginas Cargas de trabajo o Navegador de objetos de Google Kubernetes Engine en laGoogle Cloud consola.
  3. El servicio de Connect, que realiza una verificación de autorización con IAM, recibe la solicitud.
  4. El servicio de Connect reenvía la solicitud al agente de Connect que se ejecuta en el clúster. La solicitud se acompaña de la información de credenciales del usuario para su uso en la autenticación y autorización en el clúster.
  5. El agente de Connect reenvía la solicitud al servidor de la API de Kubernetes.
  6. El servidor de la API de Kubernetes reenvía la solicitud al Pod anthos-identity-service en el clúster, que valida la solicitud.
  7. El Pod anthos-identity-service devuelve la información del usuario y el grupo al servidor de la API de Kubernetes. El servidor de la API de Kubernetes puede usar esta información para autorizar la solicitud en función de las políticas de RBAC configuradas del clúster.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud . Si es la primera vez que usas Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. Instala Google Cloud CLI.

  3. Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

  4. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  5. Verifica que tengas los permisos necesarios para completar esta guía.

  6. Habilita las APIs de Connect Gateway, GKE Connect, GKE Hub, Anthos Identity Service y Cloud Resource Manager, si aún no están habilitadas:

    Roles necesarios para habilitar las APIs

    Para habilitar las APIs, necesitas el permiso serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtener este permiso a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén más información para otorgar roles.

    gcloud services enable connectgateway.googleapis.com gkeconnect.googleapis.com gkehub.googleapis.com anthosidentityservice.googleapis.com cloudresourcemanager.googleapis.com
  7. Instala Google Cloud CLI.

  8. Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

  9. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  10. Verifica que tengas los permisos necesarios para completar esta guía.

  11. Habilita las APIs de Connect Gateway, GKE Connect, GKE Hub, Anthos Identity Service y Cloud Resource Manager, si aún no están habilitadas:

    Roles necesarios para habilitar las APIs

    Para habilitar las APIs, necesitas el permiso serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtener este permiso a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén más información para otorgar roles.

    gcloud services enable connectgateway.googleapis.com gkeconnect.googleapis.com gkehub.googleapis.com anthosidentityservice.googleapis.com cloudresourcemanager.googleapis.com
  12. Para los clústeres fuera de Google Cloud, los componentes de autenticación de tu clúster deben llamar a la API de Cloud Identity. Verifica si tienes políticas de red que requieran que el tráfico de salida de tu clúster pase por un proxy.

Roles obligatorios

Para obtener los permisos que necesitas para configurar la puerta de enlace de Connect y tus clústeres, pídele a tu administrador que te otorgue el rol de IAM de Editor (roles/editor) en el proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

Configura los usuarios y grupos

Asegúrate de que los grupos que deseas usar con esta función estén configurados de la siguiente manera:

  1. Asegúrate de que haya un grupo en Google Workspace de tu organización con el formato gke-security-groups@YOUR-DOMAIN. Si no tienes ese grupo, sigue las instrucciones que se indican en Crea un grupo en tu organización para crear el grupo con la Consola del administrador de Google.
  2. Sigue las instrucciones en Agrega un grupo a otro grupo para agregar los grupos que deseas usar para el control de acceso como grupos anidados de gke-security-groups. No agregues usuarios individuales como miembros de gke-security-groups.

Las cuentas de usuario que desees utilizar con esta función deben usar el mismo nombre de dominio que el de su grupo.

Configura la compatibilidad con grupos

La puerta de enlace de Connect usa componentes de autenticación en tu clúster para recuperar información de pertenencia a grupos. Para habilitar los componentes necesarios, consulta uno de los siguientes documentos según el tipo de clúster:

En las siguientes secciones, se muestra cómo actualizar el recurso personalizado ClientConfig para habilitar la compatibilidad con grupos. Estas secciones se aplican solo a los clústeres de Google Distributed Cloud. Para otros tipos de clústeres, como GKE en Google Cloud, GKE en AWS y GKE en Azure, ve a la sección Otorga roles de IAM a grupos.

En Distributed Cloud, puedes configurar la compatibilidad con grupos para clústeres individuales o para una flota. El tipo de clúster que uses determina cómo configurar la compatibilidad con grupos, de la siguiente manera:

  • Distributed Cloud conectado: Solo clústeres individuales. No se admite la configuración a nivel de la flota.
  • Google Distributed Cloud (solo software) en VMware y equipos físicos: Clústeres o flotas individuales

Configura la compatibilidad con grupos con la API de Fleet de GKE

En el caso de Google Distributed Cloud (solo software) en VMware y equipos físicos, puedes configurar la compatibilidad con grupos a nivel de la flota. Si ya configuraste la autenticación a nivel de la flota, como para un proveedor de identidad diferente, la autenticación de grupos ya está habilitada. Sin embargo, si tu política de red requiere que el tráfico de salida pase por un proxy, debes actualizar la configuración existente con información sobre ese proxy.

Para configurar la compatibilidad con grupos a nivel de la flota, selecciona una de las siguientes opciones:

Console

  1. En la consola de Google Cloud , ve a la página Servicio de identidad de GKE.

    Ir al Servicio de identidad de GKE

  2. Haz clic en Habilitar el servicio de identidad.

  3. Selecciona los clústeres de Google Distributed Cloud (solo software) en VMware y equipos físicos que deseas configurar.

  4. Haz clic en Actualizar configuración. Se abrirá el panel Editar la configuración de los clústeres del servicio de identidad.

  5. En la sección Configure Identity Providers, puedes optar por retener, agregar, actualizar o quitar un proveedor de identidad.

  6. Haz clic en Continuar para ir al siguiente paso de configuración. Si seleccionaste al menos un clúster apto para esta configuración, se mostrará la sección Google Authentication.

  7. Selecciona Habilitar para habilitar la autenticación de Google en los clústeres seleccionados. Si necesitas acceder al proveedor de identidad de Google a través de un proxy, ingresa los detalles del proxy.

  8. Haz clic en Actualizar configuración. Esto aplica la configuración de identidad en los clústeres seleccionados.

gcloud

  1. Habilita la función de servicio de identidad a nivel de la flota y configura los clústeres, como se describe en Configura la administración de la autenticación a nivel de la flota.
  2. En el archivo auth-config.yaml que contiene la especificación de ClientConfig, agrega el siguiente campo:

    spec:
      authentication:
      - name: google-authentication-method
        google:
          disable: false
    

    El valor de false en el campo google.disable habilita la compatibilidad con grupos. Para inhabilitar la compatibilidad con grupos, modifica este valor a true.

  3. Opcional: Si necesitas acceder al proveedor de Google Identity a través de un proxy, agrega el campo proxy a la configuración anterior:

    spec:
      authentication:
      - name: google-authentication-method
        google:
          disable: false
        proxy: PROXY_URL
    

    Reemplaza PROXY_URL por la dirección del servidor proxy para conectarte a la identidad de Google. Por ejemplo: http://user:password@10.10.10.10:8888

  4. Aplica la configuración a un clúster de tu flota:

    gcloud container fleet identity-service apply \
    --membership=CLUSTER_NAME \
    --config=/path/to/auth-config.yaml

    Reemplaza CLUSTER_NAME por el nombre de membresía único del clúster dentro de la flota.

Después de configurar la compatibilidad con grupos a nivel de la flota, el controlador de la flota administra la configuración. La configuración a nivel de la flota reemplaza cualquier cambio local que realices en la configuración de un clúster específico.

Configura la compatibilidad con grupos para clústeres individuales

Para todos los clústeres de Distributed Cloud, incluido Distributed Cloud conectado, habilita la compatibilidad con grupos actualizando el objeto default ClientConfig en cada clúster:

  1. Obtén los detalles de la membresía del clúster:

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get memberships membership -o yaml
    

    Reemplaza USER_CLUSTER_KUBECONFIG por la ruta de acceso al archivo kubeconfig del clúster. Si hay varios contextos en kubeconfig, se usa el contexto actual. Es posible que debas restablecer el contexto actual en el clúster correcto antes de ejecutar el comando.

    En la respuesta, consulta el campo spec.owner.id para recuperar los detalles de la membresía del clúster. El identificador de membresía tiene el formato //gkehub.googleapis.com/projects/PROJECT_NUMBER/locations/global/memberships/MEMBERSHIP.

    El resultado es similar a lo siguiente:

    id: //gkehub.googleapis.com/projects/123456789/locations/global/memberships/xy-ab12cd34ef
    
  2. Abre el ClientConfig default en tu clúster para editarlo:

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n kube-public edit clientconfig default
    
  3. Para habilitar la compatibilidad con grupos, agrega el campo google al campo spec.authentication:

    spec:
      internalServer: https://kubernetes.default.svc
      authentication:
      - google:
          audiences:
          - "CLUSTER_IDENTIFIER"
        name: google-authentication-method
    

    Reemplaza CLUSTER_IDENTIFIER por los detalles de membresía de tu clúster.

    Asegúrate de que el campo internalServer tenga un valor de https://kubernetes.default.svc.

  4. Opcional: Si necesitas acceder al proveedor de Google Identity a través de un proxy, agrega el campo proxy a la configuración anterior:

    spec:
      internalServer: https://kubernetes.default.svc
      authentication:
      - google:
          audiences:
          - "CLUSTER_IDENTIFIER"
        name: google-authentication-method
        proxy: PROXY_URL
    

    Reemplaza PROXY_URL por la dirección del servidor proxy para conectarte a la identidad de Google. Por ejemplo: http://user:password@10.10.10.10:8888

Otorga funciones de IAM a Grupos de Google

Los grupos necesitan los siguientes roles adicionales de Google Cloud para interactuar con los clústeres conectados a través de la puerta de enlace:

  • roles/gkehub.gatewayAdmin: Este rol permite que los miembros del grupo accedan a la API de la puerta de enlace de Connect.
    • Si los miembros del grupo necesitan únicamente acceso de solo lectura a los clústeres conectados, se puede usar roles/gkehub.gatewayReader en su lugar.
    • Si los miembros del grupo necesitan acceso de lectura/escritura a los clústeres conectados, se puede usar roles/gkehub.gatewayEditor en su lugar.
  • roles/gkehub.viewer: Este rol permite a los miembros del grupo veer las membresías registradas a los clústeres.

Debes otorgar estas funciones mediante el comando gcloud projects add-iam-policy-binding, de la siguiente manera:

gcloud projects add-iam-policy-binding --member=group:GROUP_NAME@DOMAIN --role=GATEWAY_ROLE PROJECT_ID
gcloud projects add-iam-policy-binding --member=group:GROUP_NAME@DOMAIN --role=roles/gkehub.viewer PROJECT_ID

donde

  • GROUP_NAME es el grupo de Google al que deseas otorgar la función.
  • DOMAIN es tu dominio de Google Workspace.
  • GROUP_NAME@DOMAIN es un grupo anidado en gke-security-groups@DOMAIN
  • GATEWAY_ROLE es uno de roles/gkehub.gatewayAdmin, roles/gkehub.gatewayReader o gkehub.gatewayEditor.
  • PROJECT_ID es tu proyecto.

Para obtener más información sobre cómo otorgar permisos y roles de IAM, consulta Otorga, cambia y revoca el acceso a los recursos.

Configura políticas de control de acceso basado en roles (RBAC)

Por último, el servidor de la API de Kubernetes de cada clúster debe poder autorizar los comandos de kubectl que provienen de la puerta de enlace de los grupos que especificaste. Para cada clúster, debes agregar una política de permisos RBAC que especifique qué permisos tiene el grupo en el clúster.

En el siguiente ejemplo, verás cómo otorgar a los miembros del grupo cluster-admin-team permisos cluster-admin en el clúster, guardar el archivo de política como /tmp/admin-permission.yaml y aplicarlo al clúster asociado con el contexto actual. Asegúrate de incluir también el grupo cluster-admin-team en el grupo gke-security-groups.

cat <<EOF > /tmp/admin-permission.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: gateway-cluster-admin-group
subjects:
- kind: Group
  name: cluster-admin-team@example.com
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io
EOF
# Apply permission policy to the cluster.
kubectl apply --kubeconfig=KUBECONFIG_PATH -f /tmp/admin-permission.yaml

Puedes obtener más información sobre cómo especificar permisos de RBAC en Usa la autorización de RBAC.

Próximos pasos