En esta página, se explica cómo crear políticas 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 manera 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 en un clúster o un espacio de nombres. IAM se enfoca más en los permisos a nivel de proyecto y organización de Google Cloud, 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, 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:
- 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 la configuración de gcloud
predeterminada mediante uno de los siguientes métodos:
- Usa
gcloud init
si deseas ver una explicación sobre cómo configurar parámetros predeterminados. - Usa
gcloud config
para establecer el ID, la zona y la región del proyecto de manera individual.
Usa gcloud init
Si recibes el error One of [--zone, --region] must be supplied: Please specify
location
, completa esta sección.
-
Ejecuta
gcloud init
y sigue las instrucciones:gcloud init
Si usas SSH en un servidor remoto, usa la marca
--console-only
para evitar que el comando abra un navegador:gcloud init --console-only
- Sigue las instrucciones a fin de autorizar a
gcloud
para que use tu cuenta de Google Cloud. - Crea una configuración nueva o selecciona una existente.
- Elige un proyecto de Google Cloud.
- Elige una zona predeterminada de Compute Engine.
Usa gcloud config
- 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 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, y una entidad debe tener permisos suficientes en cualquier nivel a fin de trabajar con recursos en el clúster.
Funciones 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:
Función | Título | Descripción | Recurso más bajo |
---|---|---|---|
roles/ |
Administrador de Kubernetes Engine |
Proporciona acceso a la administración completa de los clústeres y sus objetos de la API de Kubernetes. Para configurar una cuenta de servicio en los nodos, también debes otorgar la función de usuario de la cuenta de servicio ( |
Proyecto |
roles/ |
Administrador de clústeres de Kubernetes Engine |
Proporciona acceso a la administración de los clústeres. Para configurar una cuenta de servicio en los nodos, también debes otorgar la función de usuario de la cuenta de servicio ( |
Proyecto |
roles/ |
Visualizador de clústeres de Kubernetes Engine | Puede obtener y enumerar clústeres de GKE. | |
roles/ |
Desarrollador de Kubernetes Engine | Proporciona acceso a los objetos de la API de Kubernetes dentro de los clústeres. | Proyecto |
roles/ |
Usuario de agente de servicios de host de Kubernetes Engine | Permite que la cuenta de servicio de Kubernetes Engine en el proyecto host configure los recursos de red compartida de la administración de los clústeres. También brinda acceso para inspeccionar las reglas de firewall del proyecto host. | |
roles/ |
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 IAM, consulta Permisos que otorgan las funciones 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.*
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 las funciones de IAM
Puedes ver los permisos otorgados por cada función mediante 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:
gcloud iam roles describe roles/ROLE
Reemplaza ROLE
por cualquier función de IAM.
Las funciones de GKE tienen el prefijo roles/container.
:
Por ejemplo:
gcloud iam roles describe roles/container.admin
Console
Para ver los permisos otorgados por una función específica, sigue estos pasos:
Visita la sección Funciones de la página de IAM en Cloud Console.
Para ver las funciones de GKE, en el campo Filtrar tabla, ingresa
Kubernetes Engine
.Selecciona la función deseada. 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 Google Cloud Console. 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 sobre algunas prácticas recomendadas para las políticas de IAM.