Account di servizio e chiavi

Questo documento illustra gli Google Cloud account di servizio e le chiavi di cui hai bisogno per creare cluster nell'implementazione di Google Distributed Cloud.

Le istruzioni riportate qui sono complete. Per un'introduzione più breve all'utilizzo di un account di servizio, consulta Configurare un'infrastruttura minima.

Prima di iniziare

Crea Google Cloud progetti.

Panoramica degli account di servizio

Prima di creare i cluster di amministrazione e utente, devi disporre di questi account servizio:

  • Account di servizio di accesso ai componenti
  • Account di servizio Connect-register
  • Account di servizio di monitoraggio e logging

A seconda delle funzionalità che vuoi attivare, potresti anche dover disporre di alcuni account di servizio facoltativi.

Informazioni sugli account di servizio e sui Google Cloud progetti

Quando crei un account di servizio, lo associ a un Google Cloud progetto. Questo Google Cloud progetto è chiamato progetto principale dell'account di servizio. In questo documento, tutti i comandi gcloud iam service-accounts create utilizzano la variabile segnaposto PROJECT_ID, che è l'ID progetto del progetto principale dell'account di servizio.

Puoi determinare il progetto principale di un account di servizio controllandone l'indirizzo email. Ad esempio, di seguito è riportato l'indirizzo email di un account di servizio denominato logger. Il progetto principale è alice-123.

logger@alice-123.iam.gserviceaccount.com

Quando concedi un ruolo Identity and Access Management (IAM) a un account di servizio, lo concedi all'account di servizio in un determinato progettoGoogle Cloud . Questo segue lo schema generale di concessione di un ruolo a un'entità in una risorsa.

Ad esempio, puoi 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 è il principio e il Google Cloud progetto è la risorsa.

Puoi concedere un ruolo a un account di servizio in un Google Cloud progetto che non è il progetto principale dell'account di servizio oppure i progetti possono essere gli stessi. Per consentire questa flessibilità, in questo documento i comandi gcloud projects add-iam-policy-binding per l'account di servizio di accesso ai componenti, l'account di servizio connect-register e l'account di servizio logging-monitoring utilizzano la variabile segnaposto FLEET_HOST_PROJECT_ID. Si tratta dell'ID del progetto host del parco risorse. L'ID specificato come FLEET_HOST_PROJECT_ID nei comandi gcloud projects add-iam-policy-binding deve essere lo stesso.

Autorizzazioni per l'assegnazione dei ruoli agli account di servizio

A ogni account di servizio devono essere assegnati determinati ruoli nel progettoGoogle Cloud pertinente. Ad esempio, all'account di servizio connect-register deve essere assegnato il ruolo gkehub.editor nel progetto host del parco.

Per concedere ruoli in un Google Cloud progetto, devi avere determinate autorizzazioni per il progetto. Per maggiori dettagli, consulta roles/resourcemanager.projectIamAdmin in Informazioni sui ruoli.

Se disponi delle autorizzazioni richieste, puoi assegnare i ruoli autonomamente. In caso contrario, qualcun altro nella tua organizzazione deve concederti i ruoli.

Utilizzo di gkeadm per creare automaticamente gli account di servizio

Questa pagina mostra come creare manualmente gli account di servizio e assegnare i ruoli agli account di servizio. In alternativa a questi passaggi manuali, puoi chiedere allo strumento a riga di comando gkeadm di creare alcuni account di servizio e concedere i ruoli quando crei una workstation di amministrazione. Anche se consenti a gkeadm di creare account di servizio, devi creare manualmente l'account di servizio di accesso ai componenti e concedere i ruoli IAM richiesti, come descritto nella sezione successiva. Per ulteriori informazioni sugli account di servizio che gkeadm può creare, consulta Creare la postazione di lavoro dell'amministratore.

Account di servizio di accesso ai componenti

Google Distributed Cloud utilizza questo account di servizio per scaricare per tuo conto i componenti del cluster da Artifact Registry.

  1. Crea un account di servizio di accesso ai componenti:

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

    Sostituisci PROJECT_ID con l'ID del Google Cloud progetto che vuoi che sia il progetto principale del tuo account di servizio.

  2. Recupera l'indirizzo email dell'account del servizio di accesso ai componenti appena creato:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. Crea una chiave JSON per l'account di servizio di accesso al componente:

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

    Sostituisci COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL con l'indirizzo email del tuo account di servizio di accesso ai componenti.

Concedi i ruoli all'account di servizio di accesso del componente

All'account di servizio di accesso ai componenti devono essere concessi i seguenti ruoli IAM nel progetto. Questi ruoli sono necessari per consentire a Google Distributed Cloud di eseguire i controlli preflight:

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

Per concedere i ruoli:

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"

Sostituisci FLEET_HOST_PROJECT_ID con l'ID del progetto host del tuo parco. Può trattarsi dello stesso progetto in cui è stato creato l'account di servizio o di un progetto diverso. L'ID progetto specificato qui deve essere lo stesso ID specificato quando concedi i ruoli IAM all'account di servizio connect-register e all'account di servizio logging-monitoring.

Account di servizio Connect-register

Google Distributed Cloud utilizza questo account di servizio per registrare i tuoi cluster in un pool.

  1. Crea un account di servizio connect-register:

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

    Sostituisci PROJECT_ID con l'ID del Google Cloud progetto che vuoi che sia il genitore del tuo account di servizio connect-register.

  2. Recupera l'indirizzo email dell'account di servizio connect-register appena creato:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. Crea una chiave JSON per l'account di servizio connect-register:

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

    Sostituisci CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL con l'indirizzo email del tuo account di servizio connect-register.

  4. Concedi il ruolo gkehub.editor all'account di servizio 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 progetto specificato qui deve essere lo stesso ID specificato quando concedi i ruoli IAM all'account di servizio di accesso ai componenti e all'account di servizio di monitoraggio e generazione di log.

Account di servizio di monitoraggio e logging

Google Distributed Cloud utilizza questo account di servizio per esportare log e metriche dai cluster a Cloud Logging e Cloud Monitoring.

  1. Crea un account di servizio per il monitoraggio e la registrazione:

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

    Sostituisci PROJECT_ID con l'ID del Google Cloud progetto che vuoi che sia il progetto principale del tuo account di servizio di monitoraggio e generazione di log.

  2. Recupera l'indirizzo email dell'account di servizio di monitoraggio e registrazione appena creato:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. Crea una chiave JSON per l'account di servizio di monitoraggio e generazione di log:

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

    Sostituisci LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL con l'indirizzo email del tuo account di servizio di monitoraggio e generazione di log.

Concedi i ruoli all'account di servizio di monitoraggio e generazione di log

Al tuo account di servizio di monitoraggio e generazione di log devono essere concessi i seguenti ruoli nel progetto:

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

Per concedere i ruoli richiesti all'account di servizio di monitoraggio e generazione di log:

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 progetto specificato qui deve essere lo stesso ID specificato quando assegni i ruoli IAM all'account di servizio di accesso ai componenti e all'account di servizio connect-register.

Service account facoltativi

Gli account di servizio descritti in questa sezione sono facoltativi.

Account di servizio per l'audit logging

Google Distributed Cloud utilizza questo account di servizio per inviare gli audit log di Kubernetes dal tuo cluster a Cloud Audit Logs.

Se prevedi di creare cluster con cluster avanzato abilitato, (obbligatorio per la configurazione dei domini di topologia), utilizza l'account di servizio di monitoraggio e logging e la chiave per i log di controllo invece di creare un altro account di servizio.

  1. Crea un account di servizio per i log di controllo:

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

    Sostituisci PROJECT_ID con l'ID del progettoGoogle Cloud che vuoi che sia il principale dell'account di servizio di registrazione dei controlli.

  2. Ottieni l'indirizzo email dell'account di servizio per i log di controllo appena creato:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. Crea una chiave JSON per l'account di servizio di registrazione degli audit:

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

    Sostituisci AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL con l'indirizzo email del tuo account di servizio di registrazione dei controlli.

Non è necessario concedere alcun ruolo all'account di servizio per i log di controllo.

Account di servizio di Autorizzazione binaria

Google Distributed Cloud utilizza questo account di servizio per chiamare l'API Binary Authorization.

Per informazioni sulla creazione di un account di servizio di autorizzazione binaria, consulta Autorizzazione binaria in GKE On-Prem.

Passaggi successivi

Creare una workstation di amministrazione