Permisos de acceso en GKE


En esta página se describen los ámbitos de acceso predeterminados que se conceden a los nodos de los clústeres de Google Kubernetes Engine (GKE). En esta página se explica cuáles son los permisos de acceso predeterminados que se conceden a los clústeres y cómo puede configurar permisos de acceso personalizados, si es necesario.

Esta página está dirigida a especialistas y operadores de seguridad que crean y gestionan clústeres, y que deben conocer el acceso predeterminado que se concede a los clústeres y cómo modificarlo si es necesario. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido, consulta Roles y tareas habituales de los usuarios de GKE. Google Cloud

¿Qué son los permisos de acceso?

Los permisos de acceso son el método antiguo de conceder permisos a tus nodos y a las cargas de trabajo que se ejecutan en ellos si las cargas de trabajo usan credenciales de aplicación predeterminadas (ADC). Los ámbitos de acceso definen los ámbitos de OAuth que se usan en las llamadas a la API desde las bibliotecas de cliente o la CLI de gcloud.

Te recomendamos que no especifiques tus propios ámbitos de acceso. En su lugar, debes usar permisos de gestión de identidades y accesos o el control de acceso basado en roles (RBAC) de Kubernetes para conceder acceso a cuentas de servicio de gestión de identidades y accesos o cuentas de servicio de Kubernetes específicas.

Permisos de acceso predeterminados

Cuando creas un clúster de GKE, Google Cloud asigna un conjunto predeterminado de ámbitos de acceso a los nodos en función de la cuenta de servicio que utilicen. Estos ámbitos de acceso habilitan funciones específicas de GKE. También puedes definir los ámbitos de acceso manualmente con la marca --scopes cuando crees clústeres estándar, clústeres Autopilot o grupos de nodos. No puedes modificar los ámbitos de acceso de los grupos de nodos que ya tengas. En su lugar, crea un grupo de nodos con los nuevos ámbitos y migra las cargas de trabajo a ese grupo.

En las siguientes secciones se describen los permisos de acceso predeterminados que añade GKE a los nodos en función de si especificas una cuenta de servicio personalizada y de si especificas manualmente los permisos de acceso.

Clústeres de Autopilot

Cuenta de servicio ¿Has especificado manualmente los permisos de acceso? Permisos de acceso que añade 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 añade si Cloud Logging está habilitado
  • https://www.googleapis.com/auth/monitoring: se añade si Cloud Monitoring está habilitado
Permisos especificados manualmente
Cuenta de servicio personalizada No https://www.googleapis.com/auth/cloud-platform
Permisos especificados manualmente

Clústeres estándar

Cuenta de servicio ¿Permisos de acceso especificados manualmente? 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 añade si Cloud Logging está habilitado
  • https://www.googleapis.com/auth/monitoring: se añade si Cloud Monitoring está habilitado
  • Permisos especificados manualmente
  • https://www.googleapis.com/auth/monitoring.write
  • https://www.googleapis.com/auth/logging.write: se añade si Cloud Logging está habilitado
  • https://www.googleapis.com/auth/monitoring: se añade 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 manualmente
  • https://www.googleapis.com/auth/monitoring.write
  • https://www.googleapis.com/auth/logging.write: se añade si Cloud Logging está habilitado
  • https://www.googleapis.com/auth/monitoring: se añade si Cloud Monitoring está habilitado

Configurar una cuenta de servicio personalizada para las cargas de trabajo

IAM es el sistema de control de acceso que se usa para asignar roles autorizados a usuarios y cuentas de servicio de tuGoogle Cloud proyecto. Una cuenta de servicio es una cuenta de Google especial que realiza tareas, como implementar aplicaciones, en tu nombre. Usas IAM para crear una cuenta de servicio y, a continuación, usas enlaces de políticas de IAM para proteger la cuenta.

Si tus cargas de trabajo requieren acceso a Compute Engine, concede al servicio la función Administrador de Compute Engine. Si tus cargas de trabajo necesitan extraer imágenes privadas de Artifact Registry, consulta el artículo sobre cómo configurar el control de acceso para los repositorios de Artifact Registry.

Crear 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'`

Conceder roles mínimos

Para configurar la cuenta de servicio con los roles y permisos mínimos necesarios para que funcione tu nodo de GKE, ejecuta los siguientes comandos, donde $PROJECT es tu ID de 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

Conceder roles adicionales

Para conceder el rol 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 saber cómo conceder acceso a cuentas de servicio a imágenes privadas almacenadas en Artifact Registry, consulta Conceder acceso a clústeres de Google Kubernetes Engine.

Crear un clúster o un grupo de nodos con la cuenta de servicio 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, sigue estos pasos:

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