Comptes de service et clés

Cette page explique quels sont les comptes de service Google Cloud et les clés dont vous avez besoin pour installer GKE On-Prem.

Présentation des comptes de service

Avant d'installer GKE On-Prem, vous devez disposer des comptes de service suivants :

  • Compte de service sur liste d'autorisation
  • Compte de service connect-register
  • Compte de service connect-agent
  • 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 projets Google Cloud

Lorsque vous créez un compte de service, vous le créez dans un projet Google Cloud. Le projet Cloud dans lequel vous créez un compte de service est appelé le projet parent du compte de service. Le compte de service est un membre de son projet parent.

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.

logger@alice-123.iam.gserviceaccount.com

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 projet Cloud particulier. Ceci suit le modèle général d'attribution à une identité un rôle sur une ressource.

Par exemple, vous pouvez attribuer le rôle bigquery.dataEditor au compte de service logger@alice-123.iam.gserviceaccount.com sur le projet bob-456. Dans ce cas, le compte de service est l'identité et le projet Google Cloud est la ressource.

Il est important de comprendre que vous pouvez attribuer un rôle à un compte de service sur un projet qui n'est pas le projet parent du compte de service.

Compte de service sur liste d'autorisation

Vous disposez déjà d'un compte de service sur liste d'autorisation.

Si vous n'avez pas encore créé de fichier de clé JSON pour votre compte de service sur liste d'autorisation, créez-en un maintenant :

gcloud iam service-accounts keys create whitelisted-key.json \
   --iam-account [ALLOWLISTED_SERVICE_ACCOUNT_EMAIL]

[ALLOWLISTED_SERVICE_ACCOUNT_EMAIL] est l'adresse e-mail de votre compte de service sur liste d'autorisation.

Attribuer des rôles à votre compte de service sur liste d'autorisation

Le fichier de configuration GKE On-Prem comporte plusieurs champs qui spécifient un ID de projet Google Cloud.

usercluster:
  usagemetering:
    bigqueryprojectid: ""
...
gkeconnect:
  projectid: ""
...
stackdriver:
  projectid: ""
...
cloudauditlogging:
  projectid: ""

Il n'est pas nécessaire que les ID de projet de votre fichier de configuration GKE On-Prem soient distincts. Par exemple, gkeconnect.projectid peut être identique à stackdriver.projectid. En fait, tous les ID de projet de votre fichier de configuration peuvent être identiques.

Votre compte de service sur liste d'autorisation doit disposer des rôles IAM suivants pour chaque projet spécifié dans votre fichier de configuration GKE On-Prem :

  • serviceusage.serviceUsageViewer
  • iam.serviceAccountCreator
  • iam.roleViewer

Si vous avez utilisé gkeadm pour créer votre poste de travail administrateur, utilisez gkeadm pour définir les champs suivants dans votre fichier de configuration GKE On-Prem sur l'ID du projet parent de votre compte de service sur liste d'autorisation.

  • gkeconnect.projectid
  • stackdriver.projectid

En outre, gkeadm a attribué à votre compte de service sur liste d'autorisation les rôles requis sur le projet parent de votre compte de service sur liste d'autorisation.

Si vous n'avez pas utilisé gkeadm pour créer votre poste de travail administrateur, vous devez attribuer les rôles vous-même.

Pour chaque projet spécifié dans votre fichier de configuration GKE On-Prem, accordez les rôles requis à votre compte de service sur liste d'autorisation :

gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[ALLOWLISTED_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/serviceusage.serviceUsageViewer"
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[ALLOWLISTED_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/iam.serviceAccountCreator"
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[ALLOWLISTED_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/iam.roleViewer"

[PROJECT_ID] est l'ID de l'un des projets que vous avez spécifiés dans votre fichier de configuration GKE On-Prem.

Autres comptes de service requis

Rappelez-vous qu'en plus de votre compte de service sur liste d'autorisation, vous avez besoin des comptes de service suivants :

  • Compte de service connect-register
  • Compte de service connect-agent
  • Compte de service logging-monitoring

Selon la façon dont vous avez créé votre poste de travail administrateur, vous disposez peut-être déjà de ces comptes de service.

Cas d'utilisation 1 : gkeadm a créé des comptes de service pour vous.

Si vous avez utilisé gkeadm pour créer votre poste de travail administrateur et que vous avez transmis l'indicateur --auto-create-service-accounts, gkeadm a effectué les opérations suivantes :

  • Création d'un compte de service connect-register. Attribution de rôles IAM appropriés au compte de service connect-register. Création d'un fichier de clé JSON pour le compte de service connect-register. Copie du fichier de clé JSON sur votre poste de travail administrateur.

  • Création d'un compte de service connect-agent. Attribution de rôles IAM appropriés au compte de service connect-agent. Création d'un fichier de clé JSON pour le compte de service connect-agent. Copie du fichier de clé JSON sur votre poste de travail administrateur.

  • Création d'un compte de service logging-monitoring. Attribution de rôles IAM appropriés au compte de service logging-monitoring. Création d'un fichier de clé JSON pour le compte de service logging-monitoring. Copie du fichier de clé JSON sur votre poste de travail administrateur.

Lorsque gkeadm crée des comptes de service pour vous, il crée les comptes dans le projet Cloud parent de votre compte de service sur liste d'autorisation. En outre, gkeadm attribue des rôles aux comptes de service sur ce même projet. Pour plus d'informations sur l'utilisation de plusieurs projets Cloud, voir Utiliser plusieurs projets Google Cloud.

Cas d'utilisation 2 : gkeadm n'a pas créé de comptes de service pour vous.

Si vous n'avez pas utilisé gkeadm avec l'indicateur --auto-create-service-accounts pour créer votre poste de travail administrateur, vous devez créer vos propres comptes de service. En outre, pour chaque compte de service, vous devez créer un fichier de clé JSON et attribuer les rôles IAM appropriés.

Créer vos propres comptes de service

Si vous possédez déjà des comptes de service comme décrit dans le cas d'utilisation 1, vous pouvez ignorer cette section.

Cette section explique comment créer les comptes de service dont vous aurez besoin pour installer et utiliser GKE On-Prem. Elle indique également comment créer des fichiers de clé JSON pour vos comptes de service et comment attribuer les rôles IAM appropriés à vos comptes de service.

Compte de service connect-register

Connect utilise ce compte de service pour enregistrer vos clusters GKE On-Prem auprès de Google Cloud.

Créez votre compte de service connect-register :

gcloud iam service-accounts create connect-register-svc-account --project [PARENT_PROJECT_ID]

[PARENT_PROJECT_ID] est l'ID du projet que vous souhaitez utiliser comme parent de votre compte de service connect-register.

Créez une clé pour votre compte de service connect-register :

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

[CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL] est l'adresse e-mail de votre compte de service connect-register.

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

gcloud projects add-iam-policy-binding [CONNECT_PROJECT_ID] \
--member "serviceAccount:[CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/gkehub.admin"

ici [CONNECT_PROJECT_ID] correspond à l'ID de votre projet connect. Il s'agit du projet dans lequel vous souhaitez enregistrer et maintenir une connexion vers vos clusters GKE On-Prem.

Compte de service connect-agent

Connect utilise ce compte de service pour maintenir une connexion entre les clusters GKE On-Prem et Google Cloud.

  1. Créez votre compte de service connect-agent :

    gcloud iam service-accounts create connect-agent-svc-account  --project PARENT_PROJECT_ID

    Remplacez PARENT_PROJECT_ID par l'ID du projet que vous souhaitez être le parent du compte de service connect-agent.

  2. Créez une clé pour votre compte de service connect-agent :

    gcloud iam service-accounts keys create connect-agent-key.json \
       --iam-account CONNECT_AGENT_SERVICE_ACCOUNT_EMAIL

    Remplacez CONNECT_AGENT_SERVICE_ACCOUNT_EMAIL par l'adresse e-mail de votre compte de service connect-agent.

  3. Attribuez le rôle gkehub.connect à votre compte de service connect-agent :

    gcloud projects add-iam-policy-binding CONNECT_PROJECT_ID \
       --member "serviceAccount:CONNECT_AGENT_SERVICE_ACCOUNT_EMAIL" \
       --role "roles/gkehub.connect"

    Remplacez l'élément suivant :

    • CONNECT_PROJECT_ID : ID de votre projet connect. Il s'agit du projet dans lequel vous souhaitez enregistrer et maintenir une connexion vers vos clusters GKE On-Prem.
    • CONNECT_AGENT_SERVICE_ACCOUNT_EMAIL : adresse e-mail de votre compte de service logging-monitoring.

Compte de service logging-monitoring

Connect utilise ce compte de service pour exporter les journaux des clusters vers Cloud Logging.

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

    gcloud iam service-accounts create logging-monitoring-svc-account --project PARENT_PROJECT_ID

    Remplacez PARENT_PROJECT_ID par l'ID du projet que vous souhaitez être le parent du compte de service logging-monitoring.

  2. Créez une clé pour votre compte de service logging-monitoring :

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

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

  3. Attribuez les rôles stackdriver.resourceMetadata.writer, logging.logWriter, monitoring.metricWriter et monitoring.dashboardEditor au compte de service logging-monitoring :

    gcloud projects add-iam-policy-binding LOG_MON_PROJECT_ID \
       --member "serviceAccount:LOG_MOM_SERVICE_ACCOUNT_EMAIL" \
       --role "roles/stackdriver.resourceMetadata.writer"
    gcloud projects add-iam-policy-binding LOG_MON_PROJECT_ID \
       --member "serviceAccount:LOG_MOM_SERVICE_ACCOUNT_EMAIL" \
       --role "roles/logging.logWriter"
    gcloud projects add-iam-policy-binding LOG_MON_PROJECT_ID \
       --member "serviceAccount:LOG_MON_SERVICE_ACCOUNT_EMAIL" \
       --role "roles/monitoring.metricWriter"
    gcloud projects add-iam-policy-binding LOG_MON_PROJECT_ID \
       --member "serviceAccount:LOG_MON_SERVICE_ACCOUNT_EMAIL" \
       --role "roles/monitoring.dashboardEditor"

    Remplacez l'élément suivant :

    • LOG_MON_PROJECT_ID : ID de votre projet logging-monitoring. Il s'agit du projet dans lequel vous souhaitez consulter les journaux de vos clusters GKE On-Prem.
    • LOG_MON_SERVICE_ACCOUNT_EMAIL : adresse e-mail de votre compte de service logging-monitoring.

Comptes de service facultatifs

Compte de service de mesure de l'utilisation

La mesure de l'utilisation de GKE utilise ce compte de service pour stocker les données d'utilisation dans un ensemble de données BigQuery.

Si vous souhaitez activer la mesure de l'utilisation de GKE pour un cluster, vous devez disposer d'un compte de service de mesure de l'utilisation. L'outil gkeadm ne crée pas ce compte de service pour vous. Vous devez donc le créer vous-même.

Créez votre compte de service de mesure de l'utilisation :

gcloud iam service-accounts create usage-metering-svc-account --project [PARENT_PROJECT_ID]

[PARENT_PROJECT_ID] est l'ID du projet que vous souhaitez utiliser comme parent de votre compte de service de mesure de l'utilisation.

Créez une clé pour votre compte de service de mesure de l'utilisation :

gcloud iam service-accounts keys create usage-metering-key.json \
   --iam-account [USAGE_METERING_SERVICE_ACCOUNT_EMAIL]

[USAGE_METERING_SERVICE_ACCOUNT_EMAIL] est l'adresse e-mail de votre compte de service de mesure de l'utilisation.

Attribuez le rôle bigquery.dataEditor à votre compte de service de mesure de l'utilisation :

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

[USAGE_METERING_PROJECT_ID] est l'ID de votre projet de mesure de l'utilisation. Il s'agit du projet dans lequel vous souhaitez consulter les données d'utilisation de votre cluster GKE On-Prem.

Compte de service de journalisation d'audit

GKE On-Prem utilise ce compte de service pour envoyer les journaux d'audit Kubernetes de votre cluster vers les journaux d'audit Cloud.

Si vous souhaitez activer les journaux d'audit Cloud pour votre installation GKE On-Prem, vous devez disposer d'un compte de service de journalisation d'audit. L'outil gkeadm ne crée pas ce compte de service pour vous. Vous devez donc le créer vous-même.

Créez votre compte de service de journalisation d'audit :

gcloud iam service-accounts create audit-logging-svc-account --project [PARENT_PROJECT_ID]

[PARENT_PROJECT_ID] correspond à l'ID du projet Google Cloud que vous souhaitez utiliser comme parent de votre compte de service de journalisation d'audit.

Créez une clé pour votre compte de service de journalisation d'audit :

gcloud iam service-accounts keys create audit-logging-key.json \
   --iam-account [AUDIT_LOGGINGSERVICE_ACCOUNT_EMAIL]

[AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL] est 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.