Crea políticas de Cloud IAM

En esta página, se explica cómo crear políticas de Cloud Identity and Access Management (Cloud IAM) para la autorización en Google Kubernetes Engine.

Descripción general

Cada llamada a la API de Google Cloud, GKE y Kubernetes requiere que la cuenta con la que se realiza la solicitud tenga los permisos necesarios. De forma predeterminada, nadie excepto tú puede acceder a tu proyecto o sus recursos. Puedes usar Cloud IAM para administrar quién tiene acceso a tu proyecto y qué puede hacer. Los permisos de Cloud IAM funcionan junto con RBAC de Kubernetes, que proporciona controles de acceso detallados para objetos específicos en un clúster o espacio de nombres. Cloud IAM se enfoca más en los permisos a nivel de proyecto y la organización de Google Cloud, aunque proporciona varias funciones predefinidas específicas de GKE.

Para otorgar a los usuarios y a las cuentas de servicio acceso a tu proyecto de Google Cloud, debes agregarlos como miembros del equipo del proyecto y, luego, asignar funciones a los miembros del equipo. Las funciones definen a qué recursos de Google Cloud puede acceder una cuenta y qué operaciones puede realizar.

En GKE, puedes usar Cloud IAM para administrar qué usuarios y cuentas de servicio pueden acceder y realizar operaciones en tus clústeres.

Antes de comenzar

Sigue estos pasos a fin de prepararte para esta tarea:

  • Asegúrate de que habilitaste la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Asegúrate de que instalaste el SDK de Cloud.
  • Establece tu ID del proyecto predeterminado:
    gcloud config set project [PROJECT_ID]
  • Si trabajas con clústeres zonales, establece tu zona de procesamiento predeterminada:
    gcloud config set compute/zone [COMPUTE_ZONE]
  • Si trabajas con clústeres regionales, establece tu región de procesamiento predeterminada:
    gcloud config set compute/region [COMPUTE_REGION]
  • Actualiza gcloud a la versión más reciente:
    gcloud components update

Interacción con RBAC de Kubernetes

El sistema de control de acceso basado en funciones (RBAC) de Kubernetes también administra el acceso a tu clúster. RBAC controla el acceso a nivel de clúster y espacio de nombres, mientras que Cloud IAM funciona a nivel de proyecto.

Cloud IAM y RBAC pueden trabajar en conjunto, y una entidad debe tener permisos suficientes en cualquier nivel para trabajar con recursos en tu clúster.

Funciones de Cloud IAM

En las siguientes secciones, se describen las funciones de Cloud IAM disponibles en Google Cloud.

Funciones predefinidas de GKE

Cloud IAM proporciona funciones predefinidas que otorgan acceso a recursos específicos de Google Cloud y evitan el acceso no autorizado a otros recursos.

Cloud IAM ofrece las siguientes funciones predefinidas para GKE:

Función Cargo Descripción Recurso más bajo
roles/
container.admin
Administrador de Kubernetes Engine Proporciona acceso a la administración completa de los clústeres del contenedor y sus objetos de la API de Kubernetes. Proyecto
roles/
container.clusterAdmin
Administrador de clústeres de Kubernetes Engine Proporciona acceso a la administración de clústeres del contenedor. Proyecto
roles/
container.clusterViewer
Visualizador de clústeres de Kubernetes Engine Acceso de solo lectura a los clústeres de Kubernetes.
roles/
container.developer
Desarrollador de Kubernetes Engine Proporciona acceso completo a los objetos de la API de Kubernetes dentro de los clústeres del contenedor. Proyecto
roles/
container.hostServiceAgentUser
Usuario de agente de servicios de host de Kubernetes Engine Acceso de uso del agente de servicios de host de Kubernetes Engine.
roles/
container.viewer
Visualizador de Kubernetes Engine Proporciona acceso de solo lectura a los recursos de GKE. Proyecto

Para obtener más información sobre los permisos que otorga cada función de Cloud IAM, consulta Mira los permisos que otorgan las funciones de Cloud Identity and Access Management.

Funciones básicas de Cloud IAM

Las funciones primitivas de Cloud IAM otorgan a los usuarios acceso global a nivel de proyecto a todos los recursos de Google Cloud. Para mantener tu proyecto y tus clústeres seguros, usa las funciones predefinidas siempre que sea posible.

Para obtener más información sobre las funciones básicas, consulta Funciones básicas en la documentación de Cloud IAM.

Función del usuario de cuenta de servicio

La función de usuario de cuenta de servicio otorga a una cuenta de usuario de Google Cloud el permiso para realizar acciones como si lo hiciera una cuenta de servicio.

  • Si se otorga la función de iam.serviceAccountUser a un usuario para un proyecto, el usuario tendrá todas las funciones otorgadas a todas las cuentas de servicio del proyecto, incluidas las cuentas de servicio que se puedan crear en el futuro.

  • Si se otorga la función de iam.serviceAccountUser a un usuario para una cuenta de servicio específica, el usuario tendrá todas las funciones que se le otorguen a esa cuenta de servicio.

Para obtener más información sobre la función de ServiceAccountUser, consulta ServiceAccountUser en la documentación de Cloud IAM.

En el siguiente comando, se muestra la sintaxis para otorgar la función de usuario de cuenta de servicio:

gcloud iam service-accounts add-iam-policy-binding \
  [SA_NAME]@[PROJECT_ID].iam.gserviceaccount.com \
  --member=user:[USER] \
  --role=roles/iam.serviceAccountUser
roles/
iam.serviceAccountUser
Usuario de cuenta de servicio Ejecuta operaciones como cuenta de servicio. iam.serviceAccounts.actAs
iam.serviceAccounts.get
iam.serviceAccounts.list
resourcemanager.projects.get
resourcemanager.projects.list
Cuenta de servicio
Función Título Descripción Permisos Recurso más bajo

Función de usuario de agente de servicio del host

La función de usuario de agente de servicio del host solo se usa en clústeres de VPC compartida.

roles/
container.hostServiceAgentUser
Usuario de agente de servicios de host de Kubernetes Engine Acceso de uso del agente de servicios de host de Kubernetes Engine compute.firewalls.get
container.hostServiceAgent.*
Función Título Descripción Permisos Recurso más bajo

Funciones personalizadas

Si las funciones predefinidas no satisfacen tus necesidades, puedes crear funciones personalizadas con los permisos que definas.

Para obtener más información sobre cómo crear y asignar funciones personalizadas, consulta Crea y administra funciones personalizadas.

Mira los permisos que otorgan las funciones de Cloud IAM

Puedes ver los permisos otorgados por cada función con la herramienta de línea de comandos de gcloud o Cloud Console.

gcloud

Para ver los permisos que otorga una función específica, ejecuta el siguiente comando. [ROLE] es cualquier función de Cloud IAM. Las funciones de GKE tienen el prefijo roles/container.:

gcloud iam roles describe roles/[ROLE]

Por ejemplo:

gcloud iam roles describe roles/container.admin

Console

Para ver los permisos otorgados por una función específica, realiza los siguientes pasos:

  1. Visita la sección Funciones de la página de Cloud IAM de Cloud Console.

    Visitar la página de Cloud IAM

  2. Desde el campo Filtrar tabla, ingresa “GKE”.

  3. Selecciona la función deseada.

Administra funciones de Cloud IAM

Con el fin de obtener más información sobre cómo administrar las funciones y los permisos de Cloud IAM para usuarios humanos, consulta Cómo otorgar, cambiar y revocar el acceso a los recursos en la documentación de Cloud IAM.

Para las cuentas de servicio, consulta Asigna funciones a las cuentas de servicio.

Ejemplos

A continuación, se muestran algunos ejemplos de cómo funciona Cloud IAM con GKE:

  • Un nuevo empleado se une a una empresa. Es necesario agregarlo al proyecto de Google Cloud, pero solo necesita ver los clústeres del proyecto y otros recursos de Google Cloud. El propietario del proyecto le asigna la función de Visualizador de Compute a nivel de proyecto. Esta función proporciona acceso de solo lectura a los nodos de visualización y enumeración, que son recursos de Compute Engine.
  • El empleado está trabajando en operaciones y necesita actualizar un clúster con gcloud o Google Cloud Console. Para esta operación, se requiere el permiso container.clusters.update, por lo que el propietario del proyecto le asigna la función de Administrador de clúster de Kubernetes Engine. Ahora, el empleado tiene los permisos que otorgan las funciones de Administrador de clúster de Kubernetes Engine y Visualizador de Compute.
  • El empleado debe investigar por qué una implementación está teniendo problemas. Debe ejecutar kubectl get pods para ver los pods que se ejecutan en el clúster. Ya tiene la función de Visualizador de Compute, que no es suficiente para ver los pods. El empleado necesita la función de visualizador de Kubernetes Engine.
  • El empleado necesita crear un nuevo clúster. El propietario del proyecto otorga al empleado la función de Usuario de cuenta de servicio para la cuenta de servicio [PROJECT_NUMBER]-compute@developer.gserviceaccount.com, de modo que, con la cuenta del empleado, se pueda acceder a la cuenta de servicio predeterminada de Compute Engine. Esta cuenta de servicio tiene la función de Editor, que proporciona un amplio conjunto de permisos.

Próximos pasos