Cuentas de servicio y claves

En este documento, se explican las Google Cloud cuentas de servicio y las claves 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

Crear Google Cloud proyectos.

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 Google Cloud proyectos

Cuando creas una cuenta de servicio, la asocias con un Google Cloud proyecto. Este Google Cloud proyecto se llama el proyecto superior de la cuenta de servicio. En este documento, todos los comandos gcloud iam service-accounts create usan la variable de marcador de posición PROJECT_ID, que es el ID del 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, le otorgas la función a la cuenta de servicio en un proyecto Google Cloud en particular. Esto sigue este patrón general según el cual se otorga una función a un principal 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 principal, y el Google Cloud proyecto es el recurso.

Puedes otorgar una función a una cuenta de servicio en un Google Cloud proyecto que no sea el proyecto superior de la cuenta de servicio, o bien los proyectos pueden ser el mismo. Para permitir esta flexibilidad, en este documento, los comandos gcloud projects add-iam-policy-binding para la cuenta de servicio de acceso a componentes, la cuenta de servicio de registro de Connect y la cuenta de servicio de supervisión de registros usan la variable de marcador de posición FLEET_HOST_PROJECT_ID. Este es el ID del proyecto host de la flota. El ID que especifiques como FLEET_HOST_PROJECT_ID en los comandos gcloud projects add-iam-policy-binding debe ser el mismo.

Permisos para otorgar funciones a las cuentas de servicio

Cada una de tus cuentas de servicio debe tener ciertas funciones en el proyecto pertinente Google Cloud . Por ejemplo, tu cuenta de servicio de registro de Connect debe tener la función gkehub.editor en tu proyecto host de flota.

Para otorgar funciones en un Google Cloud proyecto, 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 roles a cuentas de servicio. Como alternativa para realizar estos pasos de forma manual, puedes hacer que la herramienta de línea de comandos gkeadm cree algunas de las cuentas de servicio y otorgue funciones cuando creas una estación de trabajo de administrador. Incluso si permites que gkeadm cree cuentas de servicio, debes crear manualmente la cuenta de servicio de acceso a componentes y otorgar las funciones de IAM necesarias, como se describe en la siguiente sección. Para obtener más información sobre las cuentas de servicio que gkeadm pueden crear, 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 Artifact Registry.

  1. Crea una cuenta de servicio de acceso a componentes:

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

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

  2. Obtén la dirección de correo electrónico de la cuenta de servicio de acceso a componentes recién creada:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. Crea una clave JSON para tu cuenta de servicio de acceso a los componentes:

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

    Reemplaza COMPONENT_ACCESS_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. Estas funciones son obligatorias para que Google Distributed Cloud pueda realizar comprobaciones previas:

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

Para otorgar los roles:

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

Reemplaza FLEET_HOST_PROJECT_ID por el ID del proyecto host de tu flota. Puede ser el mismo proyecto en el que se creó la cuenta de servicio o puede ser un proyecto diferente. El ID del proyecto que especifiques aquí debe ser el mismo que especifiques cuando otorgues roles de IAM a la cuenta de servicio de registro de Connect y a la cuenta de servicio de supervisión de registros.

Cuenta de servicio del registro de Connect

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

  1. Crea una cuenta de servicio de registro de Connect:

    gcloud iam service-accounts create connect-register-sa \
        --display-name "Connect-register Service Account" \
        --project PROJECT_ID
    

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

  2. Obtén la dirección de correo electrónico de la cuenta de servicio de registro de Connect recién creada:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. 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 CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL
    

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

  4. Otorga la función gkehub.editor a la cuenta de servicio de conexión-registro:

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

    El ID del proyecto que especifiques aquí debe ser el mismo que especifiques cuando otorgues roles de IAM a la cuenta de servicio de acceso a componentes y a la cuenta de servicio de supervisión de registros.

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.

  1. Crea una cuenta de servicio de supervisión de registros:

    gcloud iam service-accounts create logging-monitoring-sa \
        --display-name "Logging-monitoring Service Account" \
        --project=PROJECT_ID
    

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

  2. Obtén la dirección de correo electrónico de la cuenta de servicio de supervisión de registros recién creada:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. A fin de crear una clave JSON para tu cuenta de servicio de supervisión de registros, sigue estos pasos:

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

    Reemplaza LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL por la dirección de correo electrónico de tu cuenta de servicio de supervisión de registros.

Otorga funciones a tu cuenta de servicio de supervisión de registros

A la cuenta de servicio de supervisión y registro se le deben otorgar los siguientes roles en el proyecto:

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

Para otorgar los roles necesarios 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:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/opsconfigmonitoring.resourceMetadata.writer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/logging.logWriter"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/monitoring.metricWriter"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/monitoring.dashboardEditor"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/kubernetesmetadata.publisher"

El ID del proyecto que especifiques aquí debe ser el mismo que especifiques cuando otorgues roles de IAM a la cuenta de servicio de acceso a componentes y a la cuenta de servicio de registro de Connect.

Cuentas de servicio opcionales

Las cuentas de servicio que se describen en esta sección son 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 hacia los registros de auditoría de Cloud.

Si planeas crear clústeres con el clúster avanzado habilitado, (que es necesario para configurar dominios de topología), usa la cuenta de servicio y la clave de supervisión de registros para el registro de auditoría en lugar de crear otra cuenta de servicio.

  1. Crea una cuenta de servicio de registro de auditoría:

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

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

  2. Obtén la dirección de correo electrónico de la cuenta de servicio de registro de auditoría recién creada:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. 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 AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL
    

    Reemplaza AUDIT_LOGGING_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 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