Crea políticas de IAM

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:

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.

  1. 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
  2. Sigue las instrucciones a fin de autorizar a gcloud para que use tu cuenta de Google Cloud.
  3. Crea una configuración nueva o selecciona una existente.
  4. Elige un proyecto de Google Cloud.
  5. 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/container.admin 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 (roles/iam.serviceAccountUser).

Proyecto
roles/container.clusterAdmin 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 (roles/iam.serviceAccountUser).

Proyecto
roles/container.clusterViewer Visualizador de clústeres de Kubernetes Engine Puede obtener y enumerar clústeres de GKE.
roles/container.developer Desarrollador de Kubernetes Engine Proporciona acceso a los objetos de la API de Kubernetes dentro de los clústeres. Proyecto
roles/container.hostServiceAgentUser 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/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 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 la 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 de usuario de la 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

Función Usuario de agente de servicios de host de Kubernetes Engine

La función Usuario de agente de servicios de host de Kubernetes Engine 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

En el ejemplo anterior, role es 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:

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

    Visitar la página de IAM

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

  3. 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 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.

Pasos siguientes