Account di servizio e chiavi

In questa pagina vengono descritti gli account di servizio e le chiavi di Google Cloud necessari per installare GKE On-Prem.

Panoramica degli account di servizio

Prima di installare GKE On-Prem, devi disporre dei seguenti account di servizio:

  • Account di servizio incluso nella lista consentita
  • Account di servizio Connect-register
  • Account di servizio Connect-Agent
  • Account di servizio monitoraggio del logging

A seconda delle funzionalità che vuoi abilitare, potrebbero essere necessari alcuni account di servizio facoltativi.

Informazioni sugli account di servizio e sui progetti Google Cloud

Quando crei un account di servizio, puoi crearlo in un progetto Google Cloud. Il progetto Google Cloud in cui crei l'account di servizio è chiamato progetto principale dell'account di servizio. L'account di servizio è un membro del suo progetto padre.

Puoi determinare il progetto padre di un account di servizio esaminando l'indirizzo email dell'account di servizio. Ad esempio, ecco l'indirizzo email dell'account di servizio chiamato logger. Il progetto padre è alice-123.

logger@alice-123.iam.gserviceaccount.com

Quando concedi un ruolo Identity and Access Management (IAM) a un account di servizio, concedi il ruolo all'account di servizio su un particolare progetto Google Cloud Cloud.Segue il modello generale per concedere un ruolo a un'identità su una risorsa.

Ad esempio, potresti concedere il ruolo bigquery.dataEditor all'account di servizio logger@alice-123.iam.gserviceaccount.com nel progetto bob-456. In questo caso, l'account di servizio è l'identità, mentre il progetto Google Cloud è la risorsa.

È importante comprendere che puoi concedere un ruolo a un account di servizio su un progetto che non è quello principale dell'account di servizio.

Account di servizio incluso nella lista consentita

Hai già un account di servizio nella lista consentita.

Se non hai ancora creato un file di chiave JSON per il tuo account di servizio incluso nella lista consentita, creane uno ora:

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

dove [ALLOWLISTED_SERVICE_ACCOUNT_EMAIL] è l'indirizzo email del tuo account di servizio incluso nella lista consentita.

Concessione di ruoli all'account di servizio incluso nella lista consentita

Il file di configurazione GKE On-Prem ha diversi campi che specificano un ID progetto Google Cloud.

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

Gli ID progetto nel file di configurazione GKE on-prem non devono essere distinti. Ad esempio, gkeconnect.projectid potrebbe essere uguale a stackdriver.projectid. Di fatto, tutti gli ID progetto nel file di configurazione potrebbero essere uguali.

Al tuo account di servizio incluso nella lista consentita devono essere assegnati i seguenti ruoli IAM su ogni progetto specificato nel file di configurazione GKE On-Prem:

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

Se hai utilizzato gkeadm per creare la tua workstation di amministrazione, gkeadm imposta i seguenti campi nel file di configurazione on-prem di GKE sull'ID del progetto padre dell'account di servizio incluso nella lista consentita.

  • gkeconnect.projectid
  • stackdriver.projectid

Inoltre, gkeadm ha concesso al tuo account di servizio incluso nella lista consentita i ruoli richiesti per il progetto principale del tuo account di servizio incluso nella lista consentita.

Se non hai utilizzato gkeadm per creare la workstation di amministrazione, devi concedere personalmente i ruoli.

Per ciascun progetto specificato nel file di configurazione GKE on-prem, concedi al tuo account di servizio incluso nella lista consentita i ruoli richiesti:

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"

dove [PROJECT_ID] è l'ID di uno dei progetti specificati nel file di configurazione GKE On-Prem.

Altri account di servizio richiesti

Ricorda che oltre al tuo account di servizio incluso nella lista consentita, hai bisogno di questi account di servizio:

  • account di servizio connect-register
  • account di servizio Connect-Agent
  • account di servizio logging-monitoring

A seconda di come hai creato la workstation di amministrazione, potresti avere già questi account di servizio.

Caso 1: gkeadm ha creato account di servizio per te.

Se hai utilizzato gkeadm per creare la tua workstation di amministrazione e hai superato il flag --auto-create-service-accounts, gkeadm ha eseguito le seguenti operazioni per te:

  • È stato creato un account di servizio Connect-register. Concessione dei ruoli IAM appropriati all'account di servizio Connect-register. È stato creato un file di chiave JSON per l'account di servizio connect-register. Copiato il file della chiave JSON nella workstation di amministrazione.

  • È stato creato un account di servizio Connect-Agent. Concessione dei ruoli IAM appropriati all'account di servizio Connect-Agent. È stato creato un file di chiave JSON per l'account di servizio Connect-Agent. Copiato il file della chiave JSON nella workstation di amministrazione.

  • Creazione di un account di servizio di monitoraggio dei log. Concessione dei ruoli IAM appropriati all'account di servizio di monitoraggio del logging. È stato creato un file della chiave JSON per l'account di servizio di monitoraggio del logging. Copiato il file della chiave JSON nella workstation di amministrazione.

Quando gkeadm crea gli account di servizio per te, crea gli account nel progetto Google Cloud padre dell'account di servizio incluso nella lista consentita. Inoltre, gkeadm concede i ruoli agli account di servizio per lo stesso progetto. Per informazioni sull'utilizzo di più progetti Google Cloud, consulta Utilizzo di più progetti Google Cloud.

Caso 2: gkeadm non ha creato account di servizio per te.

Se non hai utilizzato gkeadm con il flag --auto-create-service-accounts per creare la tua workstation di amministrazione, devi creare i tuoi account di servizio. Inoltre, per ogni account di servizio devi creare un file di chiave JSON e concedere i ruoli IAM appropriati.

Creazione di account di servizio personalizzati

Se hai già degli account di servizio come descritto nel Caso 1, puoi saltare questa sezione.

Questa sezione mostra come creare gli account di servizio che devi installare e utilizzare GKE On-Prem. Mostra inoltre come creare file di chiave JSON per gli account di servizio e come concedere i ruoli IAM appropriati ai tuoi account di servizio.

Account di servizio Connect-register

Connect utilizza questo account di servizio per registrare i tuoi cluster on-prem di GKE con Google Cloud.

Crea il tuo account di servizio Connect-register:

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

dove [PARENT_PROJECT_ID] è l'ID del progetto che vuoi impostare come principale per l'account di servizio Connect-register.

Crea una chiave per il tuo account di servizio Connect-register:

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

dove [CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL] è l'indirizzo email del tuo account di servizio Connect-register.

Concedi il ruolo gkehub.admin al tuo account di servizio Connect-register:

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

[CONNECT_PROJECT_ID] è l'ID del tuo progetto di connessione. Questo è il progetto in cui vuoi registrare e mantenere una connessione ai cluster GKE on-prem.

Account di servizio Connect-Agent

Connect utilizza questo account di servizio per mantenere una connessione tra GKE On-Prem e Google Cloud.

Crea il tuo account di servizio Connect-Agent:

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

dove [PARENT_PROJECT_ID] è l'ID del progetto che deve essere il padre del tuo account di servizio connect-agent.

Crea una chiave per il tuo account di servizio Connect-Agent:

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

dove [CONNECT_AGENT_SERVICE_ACCOUNT_EMAIL] è l'indirizzo email del tuo account di servizio Connect-Agent.

Concedi il ruolo gkehub.connect al tuo account di servizio Connect-Agent:

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

dove [CONNECT_PROJECT_ID] è l'ID del tuo progetto di connessione. Questo è il progetto in cui vuoi registrare e mantenere una connessione ai cluster GKE on-prem.

Account di servizio monitoraggio del logging

Connetti utilizza questo account di servizio per esportare i log dai cluster a Cloud Logging.

Crea il tuo account di servizio per il monitoraggio dei log:

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

dove [PARENT_PROJECT_ID] è l'ID del progetto che vuoi impostare come principale per l'account di servizio per il monitoraggio dei log.

Crea una chiave per il tuo account di servizio di monitoraggio del logging:

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

dove [LOG_MON_SERVICE_ACCOUNT_EMAIL] è l'indirizzo email del tuo account di servizio per il monitoraggio dei log.

Concedi i ruoli stackdriver.resourceMetadata.writer, logging.logWriter e monitoring.metricWriter al tuo account di servizio di monitoraggio dei log:

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"

dove [LOG_MON_PROJECT_ID] è l'ID del tuo progetto di monitoraggio del logging. Questo è il progetto in cui vuoi visualizzare i log per i cluster GKE On-Prem.

Account di servizio facoltativi

Account di servizio di misurazione dell'utilizzo

La misurazione dell'utilizzo di GKE utilizza questo account di servizio per archiviare i dati sull'utilizzo in un set di dati BigQuery.

Se vuoi abilitare la misurazione dell'utilizzo di GKE per un cluster, devi avere un account di servizio di misurazione dell'utilizzo. Lo strumento gkeadm non crea questo account di servizio per tuo conto, quindi devi crearlo autonomamente.

Crea il tuo account di servizio di misurazione dell'utilizzo:

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

dove [PARENT_PROJECT_ID] è l'ID del progetto che vuoi impostare come principale per l'account di servizio di misurazione dell'utilizzo.

Crea una chiave per il tuo account di servizio di misurazione dell'utilizzo:

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

dove [USAGE_METERING_SERVICE_ACCOUNT_EMAIL] è l'indirizzo email del tuo account di servizio di misurazione dell'utilizzo.

Concedi il ruolo bigquery.dataEditor al tuo account di servizio di misurazione dell'utilizzo:

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

dove [USAGE_METERING_PROJECT_ID] è l'ID del tuo progetto di misurazione dell'utilizzo. Questo è il progetto in cui vuoi visualizzare i dati di utilizzo per il cluster GKE On-Prem.

Account di servizio di audit logging

GKE On-Prem utilizza questo account di servizio per inviare audit log di Kubernetes dal cluster a Cloud Audit Logs.

Per abilitare Cloud Audit Logs per l'installazione on-prem di GKE, devi avere un account di servizio per l'audit logging. Lo strumento gkeadm non crea questo account di servizio per tuo conto, quindi devi crearlo autonomamente.

Crea il tuo account di servizio per l'audit logging:

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

dove [PARENT_PROJECT_ID] è l'ID del progetto Google Cloud che deve essere il padre del tuo account di servizio per l'audit logging.

Crea una chiave per il tuo account di servizio per l'audit logging:

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

dove [AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL] è l'indirizzo email del tuo account di servizio di audit logging.

Non è necessario concedere alcun ruolo al tuo account di servizio per l'audit logging.