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/ |
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/ |
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/ |
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/ |
Kubernetes Engine Cluster Viewer |
Provides access to get and list GKE clusters. |
|
roles/ |
Kubernetes Engine Default Node Service Account | Least privilege role to use as the default service account for GKE Nodes. | |
roles/ |
Kubernetes Engine Developer |
Provides access to Kubernetes API objects inside clusters. |
|
roles/ |
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/ |
Kubernetes Engine Viewer |
Provides read-only access to resources within GKE clusters, such as nodes, pods, and GKE API objects. |
|
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:
Ve a la sección Roles de la página IAM y administración en la consola de Google Cloud.
Para ver las funciones de GKE, en el campo Filtrar tabla, ingresa
Kubernetes Engine
.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 permisocontainer.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?
- Lee la descripción general de control de acceso.
- Obtén más información para administrar el acceso a los recursos de Google Cloud
- Obtén más información sobre las políticas de permisos.
- Más información sobre las políticas de denegación