Cuentas de servicio y claves

En este documento, se explican las cuentas de servicio y las claves de Google Cloud que necesitas para crear clústeres en tu implementación de Google Distributed Cloud.

Las instrucciones que aparecen aquí están completas. Para obtener una introducción más corta sobre el uso de una cuenta de servicio, consulta Configura una infraestructura mínima.

Antes de comenzar

Crea proyectos de Google Cloud.

Descripción general de las cuentas de servicio

Antes de crear tus clústeres de administrador y de usuario, debes tener estas cuentas de servicio:

  • Cuenta de servicio de acceso a componentes
  • Cuenta de servicio del registro de Connect
  • Cuenta de servicio de supervisión de registros

Según las funciones que desees habilitar, es posible que también debas tener algunas cuentas de servicio opcionales.

Información sobre las cuentas de servicio y los proyectos de Google Cloud

Cuando creas una cuenta de servicio, la asocias a un proyecto de Google Cloud. Este proyecto de Google Cloud se denomina proyecto superior de la cuenta de servicio.

Puedes determinar el proyecto superior de una cuenta de servicio si observas la dirección de correo electrónico de la cuenta de servicio. Por ejemplo, esta es la dirección de correo electrónico de una cuenta de servicio llamada logger. El proyecto superior es alice-123.

logger@alice-123.iam.gserviceaccount.com

Cuando otorgas una función de administración de identidades y accesos (IAM) a una cuenta de servicio, otorgas la función a la cuenta de servicio en un proyecto particular de Google Cloud. Esto sigue el patrón general de otorgar una función a un principio en un recurso.

Por ejemplo, puedes otorgar la función bigquery.dataEditor a la cuenta de servicio logger@alice-123.iam.gserviceaccount.com en el proyecto bob-456. En este caso, la cuenta de servicio es el principio y el proyecto de Google Cloud es el recurso.

Es importante comprender que puedes otorgar una función a una cuenta de servicio en un proyecto de Google Cloud que no sea el proyecto superior de la cuenta de servicio.

Permisos para otorgar funciones a las cuentas de servicio

A cada una de tus cuentas de servicio se le deben otorgar ciertas funciones en el proyecto de Google Cloud relevante. Por ejemplo, tu cuenta de servicio del registro de conexión debe tener la función gkehub.editor en tu proyecto host de flota.

Para otorgar funciones en un proyecto de Google Cloud, debes tener ciertos permisos en el proyecto. Para obtener más información, consulta roles/resourcemanager.projectIamAdmin en Información sobre las funciones.

Si tienes los permisos necesarios, puedes otorgar las funciones tú mismo. De lo contrario, alguien de tu organización deberá otorgar las funciones por ti.

Usa gkeadm para crear cuentas de servicio automáticamente

En esta página, se muestra cómo crear cuentas de servicio de forma manual y cómo otorgar funciones a cuentas de servicio. Como alternativa para realizar estos pasos de forma manual, puedes hacer que gkeadm cree algunas de las cuentas de servicio y otorgar funciones por ti cuando creas una estación de trabajo de administrador. Para obtener más información, consulta Crea tu estación de trabajo de administrador.

Cuenta de servicio de acceso a componentes

Google Distributed Cloud usa esta cuenta de servicio para descargar componentes del clúster en tu nombre desde Container Registry.

Para crear una cuenta de servicio de acceso a componentes, haz lo siguiente:

gcloud iam service-accounts create component-access-sa \
    --display-name "Component Access Service Account" \
    --project PROJECT_ID

Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud que deseas que sea el proyecto superior de tu cuenta de servicio.

A fin de crear una clave JSON para tu cuenta de servicio de acceso a los componentes, haz lo siguiente:

gcloud iam service-accounts keys create component-access-key.json \
   --iam-account SERVICE_ACCOUNT_EMAIL

Reemplaza SERVICE_ACCOUNT_EMAIL por la dirección de correo electrónico de la cuenta de servicio de acceso a los componentes.

Otorga funciones a tu cuenta de servicio de acceso a componentes

Tu cuenta de servicio de acceso a los componentes debe tener los siguientes roles de IAM en tu proyecto host de la flota. Estas funciones son necesarias para que Google Distributed Cloud pueda realizar comprobaciones preliminares:

  • serviceusage.serviceUsageViewer
  • iam.roleViewer
  • iam.serviceAccountViewer
  • compute.viewer

Para otorgar las funciones, sigue estos pasos:

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/serviceusage.serviceUsageViewer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/iam.roleViewer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/iam.serviceAccountViewer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/compute.viewer"

Reemplaza lo siguiente:

  • FLEET_HOST_PROJECT_ID: el ID del proyecto host de tu flota.

  • SERVICE_ACCOUNT_EMAIL: la dirección de correo electrónico de tu cuenta de servicio de acceso a componentes.

Cuenta de servicio del registro de Connect

Google Distributed Cloud usa esta cuenta de servicio para registrar tus clústeres en una flota.

Para crear una cuenta de servicio de registro de Connect, sigue estos pasos:

gcloud iam service-accounts create connect-register-sa \
    --project PROJECT_ID

Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud que deseas que sea el superior de tu cuenta de servicio del registro de conexión.

A fin de crear una clave JSON para tu cuenta de servicio de registro de Connect, sigue estos pasos:

gcloud iam service-accounts keys create connect-register-key.json \
   --iam-account SERVICE_ACCOUNT_EMAIL

Reemplaza SERVICE_ACCOUNT_EMAIL por la dirección de correo electrónico de tu cuenta de servicio de registro de Connect.

Tu cuenta de servicio del registro de conexión debe tener la función gkehub.editor en el proyecto host de la flota.

Para otorgar la función gkehub.editor a la cuenta de servicio del registro de Connect:

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/gkehub.editor"

Cuenta de servicio de supervisión de registros

Google Distributed Cloud usa esta cuenta de servicio para exportar registros y métricas de clústeres a Cloud Logging y Cloud Monitoring.

Para crear una cuenta de servicio de registro y supervisión, sigue estos pasos:

gcloud iam service-accounts create logging-monitoring-sa \
    --project=PROJECT_ID

Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud que deseas que sea el superior de tu cuenta de servicio de supervisión de registros.

A fin de crear una clave JSON para tu cuenta de servicio de registro y supervisión, sigue estos pasos:

gcloud iam service-accounts keys create logging-monitoring-key.json \
    --iam-account SERVICE_ACCOUNT_EMAIL

La cuenta de servicio de supervisión y registro debe tener los siguientes roles en tu proyecto host de flota:

  • opsconfigmonitoring.resourceMetadata.writer
  • logging.logWriter
  • monitoring.metricWriter
  • monitoring.dashboardEditor
  • kubernetesmetadata.publisher

Para otorgar las funciones necesarias a tu cuenta de servicio de registro y supervisión, sigue estos pasos:

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/opsconfigmonitoring.resourceMetadata.writer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/logging.logWriter"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/monitoring.metricWriter"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/monitoring.dashboardEditor"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/kubernetesmetadata.publisher"

Reemplaza SERVICE_ACCOUNT_EMAIL por la dirección de correo electrónico de tu cuenta de servicio de registro y supervisión.

Cuentas de servicio opcionales

Cuenta de servicio de registro de auditoría

Google Distributed Cloud usa esta cuenta de servicio para enviar registros de auditoría de Kubernetes desde tu clúster a Cloud Audit Logs.

Para crear una cuenta de servicio de registro de auditoría, sigue estos pasos:

gcloud iam service-accounts create audit-logging-sa \
    --project PROJECT_ID

Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud que deseas que sea el superior de tu cuenta de servicio de registro de auditoría.

A fin de crear una clave JSON para la cuenta de servicio de registro de auditoría, haz lo siguiente:

gcloud iam service-accounts keys create audit-logging-key.json \
   --iam-account SERVICE_ACCOUNT_EMAIL

Reemplaza SERVICE_ACCOUNT_EMAIL por la dirección de correo electrónico de tu cuenta de servicio de registro de auditoría.

No es necesario otorgar funciones a la cuenta de servicio de registro de auditoría.

Cuenta de servicio de medición de uso

Google Distributed Cloud usa esta cuenta de servicio para almacenar datos de uso en un conjunto de datos de BigQuery.

Para crear una cuenta de servicio de medición de uso, sigue estos pasos:

gcloud iam service-accounts create usage-metering-sa \
    --project PROJECT_ID

Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud que deseas que sea el superior de tu cuenta de servicio de medición de uso.

Para crear una clave JSON para su cuenta de servicio de medición de uso, sigue estos pasos:

gcloud iam service-accounts keys create usage-metering-key.json \
   --iam-account SERVICE_ACCOUNT_EMAIL

Reemplaza SERVICE_ACCOUNT_EMAIL por la dirección de correo electrónico de tu cuenta de servicio de medición de uso.

Tu cuenta de servicio de medición de uso debe tener el rol bigquery.dataEditor en el proyecto de medición de uso. Este es el proyecto de Google Cloud en el que quieres ver los datos de uso de tu clúster de usuario.

Para otorgar la función bigquery.dataEditor a la cuenta de servicio de medición de uso:

gcloud projects add-iam-policy-binding USAGE_METERING_PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/bigquery.dataEditor"

Reemplaza USAGE_METERING_PROJECT_ID por el ID del proyecto de medición de uso.

Cuenta de servicio de autorización binaria

Google Distributed Cloud usa esta cuenta de servicio para llamar a la API de Autorización Binaria.

Para obtener información sobre cómo crear una cuenta de servicio de autorización binaria, consulta Autorización binaria en GKE On-Prem.

¿Qué sigue?

Crea una estación de trabajo de administrador.