Autentícate en GKE en Azure con identidades externas
La federación de Workforce Identity otorga acceso a identidades que no son de Google a los servicios de Google Cloud. En el contexto de GKE en Azure, esto significa que puedes usar identidades externas preexistentes para crear un clúster de GKE o acceder a él sin depender de las credenciales de Google.
Los beneficios de usar la federación de Workforce Identity son los siguientes:
- Eliminas la necesidad de tener cuentas duplicadas en diferentes plataformas o proveedores.
- Puedes establecer permisos solo una vez, sin necesidad de realizar configuraciones en varias plataformas.
- Simplificas el acceso de los usuarios, ya que se requieren menos accesos y contraseñas.
Antes de comenzar
Antes de poder habilitar usuarios o grupos externos para acceder a clústeres de GKE, debes realizar los siguientes pasos:
Para que los usuarios o grupos externos puedan usar GKE en la API de Azure, configura la federación de identidades de personal:
- Para los usuarios de Azure, consulta Configura la federación de Workforce Identity con Azure AD.
- Para los usuarios de Okta, consulta Configura la federación de identidades de personal con Okta.
- Para usuarios de otras plataformas, consulta Configura la federación de identidades de personal.
Asigna a tus usuarios o grupos externos la función
gkemulticloud.viewer
para que puedan acceder a los clústeres. Asigna el rolcontainer.clusterViewer
para ver los clústeres en la consola de Google Cloud.Ten en cuenta que los roles son colecciones de permisos. Cuando asignas un rol a una entidad (usuario, grupo o cuenta de servicio), le otorgas a esa entidad todos los permisos que contiene la función.
Usuarios
Para los usuarios individuales, debes 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"
Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyecto de Google Cloud.WORKFORCE_POOL_ID
: el ID que identifica de forma única tu grupo de identidades de personal en Google Cloud. Cuando formatees el ID, asegúrate de seguir los lineamientos recomendados 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, comoalex@cymbalgroup.com
.
Grupos
Para 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"
Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyecto de Google Cloud.WORKFORCE_POOL_ID
: el ID que identifica de forma única tu grupo de identidades de personal en Google Cloud. Cuando formatees el ID, asegúrate de seguir los lineamientos recomendados que se proporcionan en la documentación de IAM en Parámetros de consulta.GROUP_ID
: un ID que identifica de forma única un grupo externo.
Opcional: Asigna a tus usuarios o grupos externos los roles de administración de identidades y accesos (IAM) adecuadas. Este paso solo es necesario si deseas conceder a los usuarios o grupos la capacidad de crear o actualizar clústeres; no es necesario solo para acceder a un clúster.
Usuarios
Para los usuarios individuales, debes 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"
Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyecto de Google Cloud.WORKFORCE_POOL_ID
: el ID que identifica de forma única tu grupo de identidades de personal en Google Cloud. Cuando formatees el ID, asegúrate de seguir los lineamientos recomendados 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, comoalex@cymbalgroup.com
.
Grupos
Para 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"
Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyecto de Google Cloud.WORKFORCE_POOL_ID
: el ID que identifica de forma única tu grupo de identidades de personal en Google Cloud. Cuando formatees el ID, asegúrate de seguir los lineamientos recomendados que se proporcionan en la documentación de IAM en Parámetros de consulta.GROUP_ID
: un ID que identifica de forma única un grupo externo.
Si deseas obtener más información sobre qué roles y permisos de la API son necesarios para GKE en Azure, consulta Roles y permisos de la API.
Otorga acceso externo a los clústeres de GKE
Hay dos métodos para configurar la federación de identidades de personal para que los usuarios o grupos externos puedan acceder a tus clústeres de GKE.
El método n.o 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 a los usuarios acceso de solo lectura a los recursos sin otorgarles un acceso más amplio.
El método n.o 2 requiere que especifiques el acceso para las identidades externas cuando creas o actualizas un clúster. Este método otorga privilegios administrativos completos a los usuarios o grupos especificados.
Elige el método que mejor se alinee con el nivel de control de acceso deseado: el método n.o 1 para obtener permisos más detallados o el método n.o 2 para otorgar todos los derechos de administrador del clúster.
Método n.o 1: usa un archivo RBAC
El primer método para otorgar acceso externo a los clústeres de GKE implica el uso de un archivo RBAC. Lleva a cabo los pasos siguientes:
Define un archivo YAML de RBAC que incluya los sujetos (usuarios o grupos) y los permisos que deseas otorgarles dentro del clúster de GKE. Estos son 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
Reemplaza lo siguiente:
WORKFORCE_POOL_ID
: el ID que identifica de forma única tu grupo de identidades de personal en Google Cloud. Cuando formatees el ID, asegúrate de seguir los lineamientos recomendados 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, comoalex@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
Reemplaza lo siguiente:
WORKFORCE_POOL_ID
: el ID que identifica de forma única tu grupo de identidades de personal en Google Cloud. Cuando formatees el ID, asegúrate de seguir los lineamientos recomendados que se proporcionan en la documentación de IAM en Parámetros de consulta.GROUP_ID
: un ID que identifica de forma única un grupo externo.
Identifica el clúster de GKE que deseas configurar y establécelo como el contexto activo mediante el siguiente comando:
kubectl config use-context CLUSTER_CONTEXT
Reemplaza
CLUSTER_CONTEXT
por el nombre de contexto adecuado para el clúster.Con el clúster de GKE deseado establecido como el contexto activo, aplica la configuración de RBAC al clúster mediante el siguiente comando:
kubectl apply -f RBAC_PATH
Reemplaza
RBAC_PATH
por la ruta de acceso al archivo RBAC que creaste o editaste.Cuando ejecutas 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 objetivo, como se define en las reglas de RBAC.
Si necesitas realizar cambios posteriores en los permisos, modifica el archivo de RBAC y vuelve a aplicarlo al clúster mediante la repetición de los pasos anteriores.
Método n.o 2: otorga acceso a las identidades externas durante la creación o actualización del clúster
El método n.o 2 otorga acceso a identidades externas durante el proceso de creación o actualización del clúster.
Para crear un clúster, sigue los pasos en Crea un clúster. Para actualizar un clúster, sigue los pasos que se indican en Cómo 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 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
Reemplaza lo siguiente:
CLUSTER_NAME
: es el nombre de tu clúster.LOCATION
: Es la región de Google Cloud en la que se administra tu clúster.WORKFORCE_POOL_ID
: el ID que identifica de forma única tu grupo de identidades de personal en Google Cloud. Cuando formatees el ID, asegúrate de seguir los lineamientos recomendados 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, comoalex@cymbalgroup.com
.GROUP_ID
: un ID que identifica de forma única un grupo externo.
Resumen de cómo otorgar acceso a los IDs externos a los clústeres de GKE
Después de realizar los métodos 1 o 2, los usuarios o grupos externos especificados pueden usar la consola de Google Cloud para conectarse y ver los detalles del clúster. Como alternativa, pueden usar kubectl
con la identidad de gcloud CLI para administrar, manipular y comunicarse con el clúster.
Para ejecutar comandos kubectl
en clústeres de GKE, consulta cómo generar una entrada kubeconfig
.