Comptes de service et clés

Ce document présente les clés et les comptes de service Google Cloud dont vous avez besoin pour créer des clusters dans votre implémentation Google Distributed Cloud.

Ces instructions sont complètes. Pour une introduction plus courte à l'utilisation d'un compte de service, consultez la section Configurer une infrastructure minimale.

Avant de commencer

Créez des Google Cloud projets.

Présentation des comptes de service

Avant de créer vos clusters d'administrateur et d'utilisateur, vous devez disposer des comptes de service suivants :

  • Compte de service d'accès au composant
  • Compte de service connect-register
  • Compte de service logging-monitoring

En fonction des fonctionnalités que vous souhaitez activer, vous devrez peut-être disposer de comptes de service facultatifs.

Comprendre les comptes de service et les Google Cloud projets

Lorsque vous créez un compte de service, vous l'associez à un Google Cloud projet. Ce projet Google Cloud est appelé projet parent du compte de service. Dans ce document, toutes les commandes gcloud iam service-accounts create utilisent la variable d'espace réservé PROJECT_ID, qui correspond à l'ID du projet parent du compte de service.

Vous pouvez déterminer le projet parent d'un compte de service en consultant l'adresse e-mail du compte de service. Par exemple, voici l'adresse e-mail d'un compte de service nommé logger. Le projet parent est alice-123.

[email protected]

Lorsque vous attribuez un rôle de gestion de l'authentification et de l'accès (IAM) à un compte de service, vous attribuez le rôle au compte de service sur un projetGoogle Cloud particulier. Ceci suit le modèle général d'attribution d'un rôle à un compte principal sur une ressource.

Par exemple, vous pouvez attribuer le rôle bigquery.dataEditor au compte de service [email protected] sur le projet bob-456. Dans ce cas, le compte de service est le compte principal et le projet Google Cloud est la ressource.

Vous pouvez attribuer un rôle à un compte de service sur un projet Google Cloud qui n'est pas le projet parent du compte de service, ou les projets peuvent être les mêmes. Pour permettre cette flexibilité, dans ce document, les commandes gcloud projects add-iam-policy-binding pour le compte de service d'accès au composant, le compte de service connect-register et le compte de service de surveillance et de journalisation utilisent la variable d'espace réservé FLEET_HOST_PROJECT_ID. Il s'agit de l'ID du projet hôte du parc. L'ID que vous spécifiez en tant que FLEET_HOST_PROJECT_ID dans les commandes gcloud projects add-iam-policy-binding doit être identique.

Autorisations requises pour l'attribution de rôles aux comptes de service

Chacun de vos comptes de service doit disposer de certains rôles sur le projetGoogle Cloud concerné. Par exemple, votre compte de service connect-register doit disposer du rôle gkehub.editor sur votre projet hôte de parc.

Pour attribuer des rôles à un projet Google Cloud , vous devez disposer de certaines autorisations sur le projet. Pour en savoir plus, consultez la section roles/resourcemanager.projectIamAdmin de la section Comprendre les rôles.

Si vous disposez des autorisations requises, vous pouvez attribuer les rôles vous-même. Sinon, un autre membre de votre organisation doit attribuer les rôles à votre place.

Utiliser gkeadm pour créer automatiquement des comptes de service

Cette page explique comment créer manuellement des comptes de service et leur attribuer des rôles. Au lieu d'effectuer manuellement ces étapes, vous pouvez demander à l'outil de ligne de commande gkeadm de créer certains des comptes de service et d'attribuer des rôles lorsque vous créez un poste de travail administrateur. Même si vous autorisez gkeadm à créer des comptes de service, vous devez créer manuellement le compte de service d'accès au composant et attribuer les rôles IAM requis, comme décrit dans la section suivante. Pour en savoir plus sur les comptes de service que gkeadm peut créer, consultez la section Créer votre poste de travail administrateur.

Compte de service d'accès au composant

Google Distributed Cloud utilise ce compte de service pour télécharger des composants de cluster, en votre nom, à partir d'Artifact Registry.

  1. Créez un compte de service d'accès au composant:

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

    Remplacez PROJECT_ID par l'ID du projet Google Cloud que vous souhaitez utiliser comme projet parent de votre compte de service.

  2. Obtenez l'adresse e-mail du compte de service d'accès aux composants nouvellement créé:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. Pour créer une clé JSON pour votre compte de service d'accès aux composants, procédez comme suit :

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

    Remplacez COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL par l'adresse e-mail de votre compte de service d'accès aux composants.

Attribuer des rôles à votre compte de service d'accès au composant

Votre compte de service d'accès au composant doit disposer des rôles IAM suivants sur votre projet. Ces rôles sont nécessaires pour que Google Distributed Cloud puisse effectuer des vérifications préliminaires:

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

Pour accorder les rôles, procédez comme suit :

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"

Remplacez FLEET_HOST_PROJECT_ID par l'ID de votre projet hôte de parc. Il peut s'agir du même projet dans lequel le compte de service a été créé ou d'un projet différent. L'ID de projet que vous spécifiez ici doit être le même que celui que vous spécifiez lorsque vous attribuez des rôles IAM au compte de service connect-register et au compte de service logging-monitoring.

Compte de service connect-register

Google Distributed Cloud utilise ce compte de service pour enregistrer vos clusters dans un parc.

  1. Créez un compte de service connect-register:

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

    Remplacez PROJECT_ID par l'ID du projetGoogle Cloud que vous souhaitez utiliser comme parent de votre compte de service connect-register.

  2. Obtenez l'adresse e-mail du compte de service connect-register nouvellement créé:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. Créez une clé JSON pour votre compte de service connect-register:

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

    Remplacez CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL par l'adresse e-mail de votre compte de service connect-register.

  4. Attribuez le rôle gkehub.editor à votre compte de service connect-register :

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

    L'ID de projet que vous spécifiez ici doit être le même que celui que vous spécifiez lorsque vous attribuez des rôles IAM au compte de service d'accès au composant et au compte de service de surveillance des journaux.

Compte de service logging-monitoring

Google Distributed Cloud utilise ce compte de service pour exporter les journaux et les métriques des clusters vers Cloud Logging et Cloud Monitoring.

  1. Créez un compte de service logging-monitoring:

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

    Remplacez PROJECT_ID par l'ID du projetGoogle Cloud que vous souhaitez utiliser comme parent de votre compte de service logging-monitoring.

  2. Obtenez l'adresse e-mail du compte de service logging-monitoring nouvellement créé:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. Créez une clé JSON pour votre compte de service logging-monitoring:

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

    Remplacez LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL par l'adresse e-mail de votre compte de service logging-monitoring.

Attribuer des rôles à votre compte de service logging-monitoring

Votre compte de service de journalisation et de surveillance doit disposer des rôles suivants sur votre projet:

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

Pour attribuer les rôles requis à votre compte de service logging-monitoring, procédez comme suit :

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"

L'ID de projet que vous spécifiez ici doit être le même que celui que vous spécifiez lorsque vous attribuez des rôles IAM au compte de service d'accès au composant et au compte de service connect-register.

Comptes de service facultatifs

Les comptes de service décrits dans cette section sont facultatifs.

Compte de service de journalisation d'audit

Google Distributed Cloud utilise ce compte de service pour envoyer les journaux d'audit Kubernetes de votre cluster vers Cloud Audit Logs.

Si vous prévoyez de créer des clusters avec la fonctionnalité de cluster avancé activée (ce qui est nécessaire pour configurer des domaines de topologie), utilisez le compte de service logging-monitoring et la clé pour la journalisation d'audit au lieu de créer un autre compte de service.

  1. Créez un compte de service de journalisation d'audit:

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

    Remplacez PROJECT_ID par l'ID du projetGoogle Cloud que vous souhaitez utiliser comme parent de votre compte de service de journalisation d'audit.

  2. Obtenez l'adresse e-mail du compte de service de journalisation d'audit que vous venez de créer:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. Créez une clé JSON pour votre compte de service de journalisation d'audit :

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

    Remplacez AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL par l'adresse e-mail de votre compte de service de journalisation d'audit.

Vous n'avez pas besoin d'accorder de rôles à votre compte de service de journalisation d'audit.

Compte de service d'autorisation binaire

Google Distributed Cloud utilise ce compte de service pour appeler l'API d'autorisation binaire.

Pour plus d'informations sur la création d'un compte de service d'autorisation binaire, consultez la section Autorisation binaire dans GKE On-Prem.

Étapes suivantes

Créer un poste de travail administrateur