Claves y cuentas de servicio

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 se indican aquí son completas. Para obtener una introducción más breve sobre cómo usar una cuenta de servicio, consulta Configurar una infraestructura mínima.

Antes de empezar

Crea Google Cloud proyectos.

Descripción general de las cuentas de servicio

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

  • Cuenta de servicio de acceso a componentes
  • Cuenta de servicio de conexión y registro
  • Cuenta de servicio de registro y monitorización

En función de las funciones que quieras habilitar, es posible que también necesites 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 a un Google Cloud proyecto. Este proyecto Google Cloud se denomina proyecto principal 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 principal de la cuenta de servicio.

Para determinar el proyecto principal de una cuenta de servicio, consulta su dirección de correo. Por ejemplo, esta es la dirección de correo de una cuenta de servicio llamada logger. El proyecto superior es alice-123.

logger@alice-123.iam.gserviceaccount.com

Cuando asignas un rol de Gestión de Identidades y Accesos (IAM) a una cuenta de servicio, le asignas el rol en un proyecto concreto.Google Cloud Sigue el patrón general de asignar un rol a un principal en un recurso.

Por ejemplo, puede asignar el rol bigquery.dataEditor a la cuenta de servicio logger@alice-123.iam.gserviceaccount.com del proyecto bob-456. En este caso, la cuenta de servicio es la entidad y el Google Cloud proyecto es el recurso.

Puedes asignar un rol a una cuenta de servicio en un Google Cloud proyecto que no sea el proyecto principal 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 de la cuenta de servicio de acceso a componentes, la cuenta de servicio de conexión y registro, y la cuenta de servicio de registro y monitorización usan la variable de marcador de posición FLEET_HOST_PROJECT_ID. Es el ID del proyecto host de la flota. El ID que especifique como FLEET_HOST_PROJECT_ID en los comandos gcloud projects add-iam-policy-binding debe ser el mismo.

Permisos para asignar roles a cuentas de servicio

A cada una de tus cuentas de servicio se le deben conceder determinados roles en el proyectoGoogle Cloud correspondiente. Por ejemplo, a tu cuenta de servicio de connect-register se le debe conceder el rol gkehub.editor en tu proyecto host de la flota.

Para asignar roles en un proyecto, debes tener ciertos permisos en el proyecto. Google Cloud Para obtener más información, consulta roles/resourcemanager.projectIamAdmin en Descripción de los roles.

Si tienes los permisos necesarios, puedes conceder los roles tú mismo. De lo contrario, otra persona de tu organización deberá asignarte los roles.

Usar gkeadm para crear cuentas de servicio automáticamente

En esta página se explica cómo crear cuentas de servicio manualmente y cómo asignar roles a cuentas de servicio. Como alternativa a estos pasos, puedes usar la herramienta de línea de comandos gkeadm para crear algunas de las cuentas de servicio y asignar roles al crear una estación de trabajo de administrador. Aunque permitas que gkeadm cree cuentas de servicio, debes crear manualmente la cuenta de servicio de acceso a componentes y conceder los roles de gestión de identidades y accesos necesarios, tal como se describe en la siguiente sección. Para obtener más información sobre las cuentas de servicio que puede crear gkeadm, consulta el artículo Crear 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 de 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
    

    Sustituye PROJECT_ID por el ID del Google Cloud proyecto que quieras que sea el proyecto principal de tu cuenta de servicio.

  2. Obtén la dirección de correo de la cuenta de servicio de acceso al componente que acabas de crear:

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

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

    Sustituye COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL por la dirección de correo de tu cuenta de servicio de acceso a componentes.

Concede roles a tu cuenta de servicio de acceso a componentes

A la cuenta de servicio de acceso a componentes se le deben conceder los siguientes roles de gestión de identidades y accesos en tu proyecto. Estos roles son necesarios para que Google Distributed Cloud pueda realizar comprobaciones previas:

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

Para conceder los roles, sigue estos pasos:

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"

Sustituye FLEET_HOST_PROJECT_ID por el ID de tu proyecto host de flota. Puede ser el mismo proyecto en el que se creó la cuenta de servicio o un proyecto diferente. El ID de proyecto que especifiques aquí debe ser el mismo que especifiques cuando asignes roles de gestión de identidades y accesos a la cuenta de servicio connect-register y a la cuenta de servicio logging-monitoring.

Cuenta de servicio de conexión y registro

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

  1. Crea una cuenta de servicio de conexión y registro:

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

    Sustituye PROJECT_ID por el ID delGoogle Cloud proyecto que quieras que sea el principal de tu cuenta de servicio connect-register.

  2. Obtén la dirección de correo de la cuenta de servicio connect-register que acabas de crear:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. Crea una clave JSON para tu cuenta de servicio connect-register:

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

    Sustituye CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL por la dirección de correo de tu cuenta de servicio connect-register.

  4. Asigna el rol gkehub.editor a tu cuenta de servicio connect-register:

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

    El ID de proyecto que especifiques aquí debe ser el mismo que especifiques cuando asignes roles de gestión de identidades y accesos a la cuenta de servicio de acceso a componentes y a la cuenta de servicio de registro y monitorización.

Cuenta de servicio de registro y monitorización

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 registro y monitorización:

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

    Sustituye PROJECT_ID por el ID delGoogle Cloud proyecto que quieras que sea el principal de tu cuenta de servicio de registro y monitorización.

  2. Obtén la dirección de correo de la cuenta de servicio de registro y monitorización que acabas de crear:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. Crea una clave JSON para tu cuenta de servicio de registro y monitorización:

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

    Sustituye LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL por la dirección de correo de tu cuenta de servicio de registro y monitorización.

Conceder roles a tu cuenta de servicio de registro y monitorización

A la cuenta de servicio de registro y monitorización se le deben conceder los siguientes roles en tu proyecto:

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

Para conceder los roles necesarios a tu cuenta de servicio de registro y monitorizació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 de proyecto que especifiques aquí debe ser el mismo que especifiques cuando asignes roles de gestión de identidades y accesos 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 a Cloud Audit Logs.

Si tienes previsto crear clústeres con la opción de clúster avanzado habilitada (que es necesaria para configurar dominios de topología), usa la cuenta de servicio y la clave de registro y monitorización 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
    

    Sustituye PROJECT_ID por el ID delGoogle Cloud proyecto que quieras que sea el principal de tu cuenta de servicio de registro de auditoría.

  2. Obtén la dirección de correo de la cuenta de servicio de registro de auditoría que acabas de crear:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. Crea una clave JSON para tu cuenta de servicio de registro de auditoría:

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

    Sustituye AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL por la dirección de correo de tu cuenta de servicio de registro de auditoría.

No es necesario que concedas ningún rol a tu 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 Binary Authorization.

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

Siguientes pasos

Crear una estación de trabajo de administrador