Permisos de acceso en GKE


En esta página, se describen los permisos de acceso predeterminados otorgados a los nodos en los clústeres de Google Kubernetes Engine (GKE).

¿Qué son los permisos de acceso?

Los permisos de acceso son el método heredado para otorgar permisos a los nodos y las cargas de trabajo que se ejecutan en ellos, en caso de que estas usen las credenciales predeterminadas de la aplicación (ADC). Los permisos de acceso definen los permisos de OAuth que se usan en las llamadas a la API desde las bibliotecas cliente o la CLI de gcloud.

Te recomendamos que no especifiques tus propios permisos de acceso. En su lugar, debes usar permisos de IAM o el control de acceso basado en roles (RBAC) de Kubernetes para otorgar acceso a cuentas de servicio de Kubernetes o de IAM específicas.

Permisos de acceso predeterminados

Cuando creas un clúster de GKE nuevo, Google Cloud asigna un conjunto predeterminado de permisos de acceso a los nodos en función de la cuenta de servicio que usan los nodos. Estos permisos de acceso permiten una funcionalidad específica para GKE. También puedes configurar los permisos de acceso de forma manual con la marca --scopes cuando creas clústeres de Standard. Clústeres de Autopilot o grupos de nodos. No puedes modificar los permisos de acceso en los grupos de nodos existentes. En su lugar, debes crear un grupo de nodos nuevo con los permisos nuevos y migrar las cargas de trabajo a ese grupo de nodos.

En las siguientes secciones, se describen los niveles de acceso predeterminados que GKE agrega a los nodos según si especificas una cuenta de servicio personalizada y si especificas los niveles de acceso de forma manual.

Clústeres de Autopilot

Cuenta de servicio ¿Especificaste manualmente los permisos de acceso? Permisos de acceso que agrega GKE
Cuenta de servicio predeterminada de Compute Engine No
  • https://www.googleapis.com/auth/devstorage.read_only
  • https://www.googleapis.com/auth/service.management.readonly
  • https://www.googleapis.com/auth/servicecontrol
  • https://www.googleapis.com/auth/trace.append
  • https://www.googleapis.com/auth/logging.write: se agrega si Cloud Logging está habilitado
  • https://www.googleapis.com/auth/monitoring: se agrega si Cloud Monitoring está habilitado
Permisos especificados de forma manual
Cuenta de servicio personalizada No https://www.googleapis.com/auth/cloud-platform
Permisos especificados de forma manual

Clústeres estándar

Cuenta de servicio ¿Permisos de acceso especificados de forma manual? Permisos de acceso de GKE
Cuenta de servicio predeterminada de Compute Engine No
  • https://www.googleapis.com/auth/devstorage.read_only
  • https://www.googleapis.com/auth/service.management.readonly
  • https://www.googleapis.com/auth/servicecontrol
  • https://www.googleapis.com/auth/trace.append
  • https://www.googleapis.com/auth/logging.write: se agrega si Cloud Logging está habilitado
  • https://www.googleapis.com/auth/monitoring: se agrega si Cloud Monitoring está habilitado
  • Permisos especificados de forma manual
  • https://www.googleapis.com/auth/monitoring.write
  • https://www.googleapis.com/auth/logging.write: se agrega si Cloud Logging está habilitado
  • https://www.googleapis.com/auth/monitoring: se agrega si Cloud Monitoring está habilitado
Cuenta de servicio personalizada No
  • https://www.googleapis.com/auth/userinfo.email
  • https://www.googleapis.com/auth/cloud-platform
  • Permisos especificados de forma manual
  • https://www.googleapis.com/auth/monitoring.write
  • https://www.googleapis.com/auth/logging.write: se agrega si Cloud Logging está habilitado
  • https://www.googleapis.com/auth/monitoring: se agrega si Cloud Monitoring está habilitado

Configura una cuenta de servicios personalizada para las cargas de trabajo

IAM es el sistema de control de acceso para otorgar roles autorizados a usuarios y cuentas de servicio dentro de tu proyecto de Google Cloud. Una cuenta de servicio es una Cuenta de Google especial que realiza tareas, como la implementación de aplicaciones, en tu nombre. Puedes usar IAM para crear una cuenta de servicio y, luego, usar vinculaciones de políticas de IAM a fin de proteger la cuenta.

Si tus cargas de trabajo requieren acceso a Compute Engine, otórgale la función de Administrador de Compute Engine a la cuenta de servicio. Si tus cargas de trabajo necesitan extraer imágenes privadas de Artifact Registry, consulta Configura el control de acceso para los repositorios de Artifact Registry.

Cree una cuenta de servicio

Para crear una cuenta de servicio personalizada llamada kubernetes-engine-node-sa, ejecuta los siguientes comandos:

export NODE_SA_NAME=kubernetes-engine-node-sa
gcloud iam service-accounts create $NODE_SA_NAME \
  --display-name "GKE Node Service Account"
export NODE_SA_EMAIL=`gcloud iam service-accounts list --format='value(email)' \
  --filter='displayName:GKE Node Service Account'`

Otorga funciones mínimas

A fin de configurar la cuenta de servicio con las funciones y los permisos mínimos necesarios para que funcione el nodo de GKE, ejecuta los siguientes comandos, en los que $PROJECT es tu ID del proyecto:

export PROJECT=`gcloud config get-value project`
gcloud projects add-iam-policy-binding $PROJECT \
  --member serviceAccount:$NODE_SA_EMAIL \
  --role roles/monitoring.metricWriter
gcloud projects add-iam-policy-binding $PROJECT \
  --member serviceAccount:$NODE_SA_EMAIL \
  --role roles/monitoring.viewer
gcloud projects add-iam-policy-binding $PROJECT \
  --member serviceAccount:$NODE_SA_EMAIL \
  --role roles/logging.logWriter

Otorga funciones adicionales

Para otorgar la función de Administrador de Compute Engine a la cuenta de servicio, ejecuta el siguiente comando:

gcloud projects add-iam-policy-binding $PROJECT \
  --member serviceAccount:$NODE_SA_EMAIL \
  --role roles/compute.admin

Para aprender a otorgar acceso a las cuentas de servicio a las imágenes privadas almacenadas en Artifact Registry, consulta Otorga acceso a los clústeres de Google Kubernetes Engine.

Crea un clúster o grupo de nodos con la cuenta de servicios personalizada

Para crear un clúster que use la cuenta de servicio personalizada, ejecuta el siguiente comando:

gcloud container clusters create --service-account=$NODE_SA_EMAIL

Para crear un grupo de nodos en un clúster existente:

gcloud container node-pools create --service-account=$NODE_SA_EMAIL