Configura l'account di servizio

Per utilizzare Infrastructure Manager per creare, aggiornare o eliminare un deployment, devi utilizzare un account di servizio. Infra Manager esegue Terraform utilizzando l'identità di questo account di servizio.

Non è necessario un account di servizio per visualizzare le informazioni sui deployment di Infra Manager.

Questa pagina spiega come configurare un account di servizio per poter eseguire il deployment delle risorse con Infrastructure Manager.

Prima di iniziare

  1. Attiva il servizio Infra Manager.
  2. Crea un account di servizio o identificate un account di servizio esistente da utilizzare con Infra Manager.

Concedi l'accesso al service account

Per utilizzare Infrastructure Manager per creare, aggiornare o eliminare un deployment, un singolo utente deve avere accesso al account di servizio.

Concedi all'utente il ruolo IAM Utente account di servizio (roles/iam.serviceAccountUser) per l'account di servizio.

Concedi le autorizzazioni per Infra Manager

Per utilizzare Infra Manager, l'account di servizio deve disporre del ruolo Agente Infra Manager (roles/config.agent). Questo concede a Infra Manager le autorizzazioni per creare, aggiornare ed eliminare le risorse:

   gcloud projects add-iam-policy-binding INFRA_MANAGER_PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
      --role="roles/config.agent"

Sostituisci:

  • INFRA_MANAGER_PROJECT_ID: l'ID del progetto in cui stai creando i deployment.

  • SERVICE_ACCOUNT_EMAIL: l'indirizzo email dell'account di servizio.

Per informazioni dettagliate su come concedere autorizzazioni agli account di servizio, consulta Gestire l'accesso agli account di servizio.

Concedi l'autorizzazione di lettura per il bucket di archiviazione

Puoi utilizzare un bucket di archiviazione per archiviare le configurazioni Terraform eseguite da Infra Manager.

Se utilizzi un bucket di archiviazione per le configurazioni e questo bucket si trova in un progetto diverso da quello in cui esegui Infra Manager, devi assicurarti che l'account di servizio che utilizzi per chiamare Infra Manager abbia l'autorizzazione di lettura per il bucket. Per informazioni dettagliate sulle autorizzazioni Cloud Storage, consulta Autorizzazioni IAM per Cloud Storage.

Se il bucket di archiviazione si trova nello stesso progetto di Infra Manager e hai concesso roles/config.agent all'account di servizio, l'autorizzazione di lettura per il bucket è già attivata.

Per informazioni dettagliate sul caricamento di una configurazione in un bucket di archiviazione, consulta Caricare una configurazione Terraform.

Concedi le autorizzazioni per le risorse definite nella configurazione

Per creare e gestire Google Cloud le risorse definite nella configurazione Terraform, l'account di servizio deve disporre di autorizzazioni specifiche per queste risorse.

  • Autorizzazioni specifiche per le Google Cloud risorse definite nella configurazione Terraform di cui stai eseguendo il deployment. Ad esempio, l'autorizzazione per la creazione di un'istanza VM di Compute Engine è compute.instances.create.

  • Autorizzazioni specifiche per le Google Cloud risorse che sono definite nella configurazione Terraform del deployment che stai aggiornando.

    Ad esempio, supponiamo che il tuo deployment provi una VM Compute Engine e poi aggiorni il deployment utilizzando una configurazione che non include una VM Compute Engine. In questo caso, quando aggiorni la revisione, l'account di servizio deve avere:

    • Autorizzazioni per le risorse definite nella nuova configurazione.

    • Autorizzazioni per le risorse eliminate, ad esempio la VM Compute Engine in questo esempio.

Per sapere quali autorizzazioni sono necessarie per le risorse nelle configurazioni Terraform, consulta Scegliere i ruoli predefiniti.

Per informazioni dettagliate su come concedere autorizzazioni agli account di servizio, consulta Gestire l'accesso agli account di servizio.

Concedi l'accesso a più progetti

Sono necessarie autorizzazioni aggiuntive se l'account di servizio specificato si trova in un progetto diverso da quello in cui viene eseguito il servizio Infra Manager.

Per concedere queste autorizzazioni aggiuntive:

  1. Assicurati che l'account di servizio abbia il ruolo Agente Infra Manager (roles/config.agent) nel progetto in cui è in esecuzione Infra Manager. Per istruzioni su come concedere le autorizzazioni, consulta Concedere autorizzazioni per Infra Manager.

  2. Nel progetto che contiene l'account di servizio, assicurati che il iam.disableCrossProjectServiceAccountUsage vincolo del criterio dell'organizzazione non sia applicato. Questo vincolo viene applicato per impostazione predefinita.

    Per disattivare questo vincolo dei criteri dell'organizzazione, esegui:

       gcloud resource-manager org-policies disable-enforce iam.disableCrossProjectServiceAccountUsage
           --project=SERVICE_ACCOUNT_PROJECT_ID
    

    Sostituisci SERVICE_ACCOUNT_PROJECT_ID con l'ID del progetto che contiene il account di servizio.

  3. Nel progetto che contiene l'account di servizio, concedi il ruolo roles/iam.serviceAccountUser all'agente di servizio Infra Manager del progetto in cui stai creando i deployment:

    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
       --member="serviceAccount:service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-config.iam.gserviceaccount.com" \
       --role="roles/iam.serviceAccountUser"
    

    Sostituisci:

    • SERVICE_ACCOUNT_PROJECT_ID: l'ID del progetto che contiene l'account di servizio.
    • INFRA_MANAGER_PROJECT_NUMBER: il numero del progetto in cui stai creando i deployment. Viene formato l'ID indirizzo email dell'agente di servizio: service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-config.iam.gserviceaccount.com
  4. Concedi il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) all'agente di servizio Cloud Build nel progetto in cui stai creando i deployment. Per consentire a Infra Manager di eseguire Terraform utilizzando Cloud Build, l'agente di servizio Cloud Build nel progetto contenente l'account di servizio deve disporre di autorizzazioni aggiuntive nell'ambito della configurazione tra progetti:

    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com" \
         --role="roles/iam.serviceAccountTokenCreator"
    

Passaggi successivi