Crea políticas de permisos de IAM


En esta página, se explica cómo crear políticas de permisos de administración de identidades y accesos (IAM) para la autorización en Google Kubernetes Engine (GKE).

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 IAM a fin de administrar quién tiene acceso a tu proyecto y qué puede hacer. Los permisos de IAM funcionan junto con RBAC de Kubernetes, que proporciona controles de acceso detallados para objetos específicos dentro de un clúster o un espacio de nombres. IAM se enfoca más en los permisos a nivel de proyecto y de la organización, aunque proporciona varias funciones predefinidas específicas a 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, también puedes usar IAM para administrar qué usuarios y cuentas de servicio tienen acceso y pueden realizar operaciones en tus clústeres.

Antes de comenzar

Antes de comenzar, asegúrate de haber realizado las siguientes tareas:

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si deseas usar Google Cloud CLI para esta tarea, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta gcloud components update para obtener la versión más reciente.

Interacción con RBAC de Kubernetes

Kubernetes tiene un mecanismo de control de acceso integrado, control de acceso basado en roles (RBAC). RBAC controla el acceso en el nivel de clúster y espacio de nombres, mientras que IAM funciona a nivel de proyecto.

IAM y RBAC pueden trabajar en conjunto. Una entidad debe tener suficientes permisos de RBAC y de IAM para trabajar con recursos en tu clúster.

Roles de IAM

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

Funciones predefinidas de GKE

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

IAM ofrece las siguientes funciones predefinidas para GKE.

Role Title Description Lowest resource
roles/container.admin Kubernetes Engine Admin

Provides access to full management of clusters and their Kubernetes API objects.

To set a service account on nodes, you must also have the Service Account User role (roles/iam.serviceAccountUser) on the user-managed service account that your nodes will use.

  • Project
roles/container.cloudKmsKeyUser Kubernetes Engine KMS Crypto Key User Allow the Kubernetes Engine service agent in the cluster project to call KMS with user provided crypto keys to sign payloads.
roles/container.clusterAdmin Kubernetes Engine Cluster Admin

Provides access to management of clusters.

To set a service account on nodes, you must also have the Service Account User role (roles/iam.serviceAccountUser) on the user-managed service account that your nodes will use.

  • Project
roles/container.clusterViewer Kubernetes Engine Cluster Viewer

Provides access to get and list GKE clusters.

roles/container.defaultNodeServiceAccount Kubernetes Engine Default Node Service Account Least privilege role to use as the default service account for GKE Nodes.
roles/container.developer Kubernetes Engine Developer

Provides access to Kubernetes API objects inside clusters.

  • Project
roles/container.hostServiceAgentUser Kubernetes Engine Host Service Agent User

Allows the Kubernetes Engine service account in the host project to configure shared network resources for cluster management. Also gives access to inspect the firewall rules in the host project.

roles/container.viewer Kubernetes Engine Viewer

Provides read-only access to resources within GKE clusters, such as nodes, pods, and GKE API objects.

  • Project

Para obtener una lista completa de los permisos individuales en cada función, consulta Funciones de Google Kubernetes Engine. También puedes ver los permisos en cada rol de IAM mediante la CLI de gcloud o la consola de Google Cloud. Para obtener instrucciones, consulta Visualiza los permisos que otorgan los roles de IAM.

Funciones de IAM básicas

Las funciones de IAM básicas permiten que los usuarios tengan 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.

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

Función de 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 iam.serviceAccountUser a un usuario para un proyecto, se le concederán todas las funciones otorgadas a todas las cuentas de servicio del proyecto, incluidas las cuentas de servicio que puedan crearse en el futuro.

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

Esta función incluye los siguientes permisos:

  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.get
  • iam.serviceAccounts.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list

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

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

gcloud iam service-accounts add-iam-policy-binding \
  SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
  --member=user:USER \
  --role=roles/iam.serviceAccountUser

Reemplaza lo siguiente:

  • SA_NAME: Es el nombre de la cuenta de servicio.
  • PROJECT_ID: El ID del proyecto de Google Cloud.
  • USER: Es la dirección de correo electrónico del usuario.

Función de usuario de agente de servicios de host

La función de usuario de agente de servicio del host solo se usa en clústeres de VPC compartida. Esta función incluye los siguientes permisos:

  • compute.firewalls.get
  • container.hostServiceAgent.*
  • dns.networks.bindDNSResponsePolicy
  • dns.networks.bindPrivateDNSPolicy
  • dns.networks.bindPrivateDNSZone

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.

Visualiza los permisos que otorgan los roles de IAM

Puedes ver los permisos otorgados por cada función con gcloud CLI o la consola de Google Cloud.

gcloud

Para ver los permisos que otorga una función específica, ejecuta el siguiente comando:

gcloud iam roles describe roles/ROLE

Reemplaza ROLE por cualquier función de IAM. Las funciones de GKE tienen el prefijo roles/container, como gcloud iam roles describe roles/container.admin.

Console

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

  1. Ve a la sección Roles de la página IAM y administración en la consola de Google Cloud.

    Ir a IAM y administración

  2. Para ver las funciones de GKE, en el campo Filtrar tabla, ingresa Kubernetes Engine.

  3. Selecciona la función que deseas ver. Se muestran la descripción de la función y una lista de los permisos asignados.

Administra funciones de IAM

Si deseas obtener más información a fin de administrar las funciones y los permisos de IAM para usuarios, consulta Otorga, cambia y revoca el acceso de los miembros al proyecto en la documentación de 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 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 la consola de Google Cloud. 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.

¿Qué sigue?