Configura il 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 questoaccount di serviziot.

Non è necessario un account di servizio per visualizzare le informazioni sulle implementazioni di Infra Manager.

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

Prima di iniziare

  1. Attiva il servizio Infra Manager.
  2. Crea un service account o identifica 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 accedere alaccount di serviziot.

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

Concedi le autorizzazioni per Infra Manager

Per utilizzare Infra Manager, il account di servizio deve disporre del ruolo Agente Infra Manager (roles/config.agent). Questo ruolo concede le autorizzazioni per Infra Manager per creare, aggiornare ed eliminare 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 progetto del progetto in cui stai creando i deployment.

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

Per informazioni dettagliate su come concedere le autorizzazioni ai service account, consulta Gestire l'accesso ai service account.

Concedi l'autorizzazione di lettura per il bucket di archiviazione

Puoi utilizzare un bucket di archiviazione per archiviare le configurazioni Terraform di cui viene eseguito il deployment da Infra Manager.

Se utilizzi un bucket di archiviazione per le configurazioni e questo bucket di archiviazione 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 disponga dell'autorizzazione di lettura per il bucket. Per informazioni dettagliate sulle autorizzazioni di 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 al account di servizio, l'autorizzazione di lettura al bucket è già abilitata.

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

Concedere le autorizzazioni per le risorse definite nella configurazione

Per creare e gestire le risorse definite nella configurazione Terraform, il account di servizio ha bisogno di autorizzazioni specifiche per queste risorse. Google Cloud

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

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

    Ad esempio, supponiamo che il deployment esegua il provisioning di una VM Compute Engine e che tu 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:

    • Autorizzazioni per le risorse definite nella nuova configurazione.

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

Per assistenza nell'identificazione delle autorizzazioni necessarie per le risorse nelle configurazioni Terraform, consulta Scegliere i ruoli predefiniti.

Per informazioni dettagliate su come concedere le autorizzazioni ai service account, consulta Gestire l'accesso ai service account.

Concedere l'accesso a più progetti

Sono necessarie autorizzazioni aggiuntive se il 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 il account di servizio abbia il ruolo Agente Infra Manager (roles/config.agent) nel progetto in cui è in esecuzione Infra Manager. Per istruzioni sulla concessione delle autorizzazioni, vedi Concedere autorizzazioni per Infra Manager.

  2. (Facoltativo) Se utilizzi Developer Connect per eseguire il deployment di una configurazione Terraform, concedi il ruolo roles/iam.serviceAccountTokenCreator al account di servizio.

  3. Nel progetto che contiene il account di servizio, assicurati che il vincolo del criterio dell'organizzazione iam.disableCrossProjectServiceAccountUsage 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.

  4. Nel progetto con il account di servizio, concedi il ruolo roles/iam.serviceAccountUser per l'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 progetto del progetto che contiene ilaccount di serviziot.
    • INFRA_MANAGER_PROJECT_NUMBER: Il numero di progetto del progetto in cui stai creando le implementazioni. Questo forma l'ID email del service agent: service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-config.iam.gserviceaccount.com
  5. Concedi il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) all'agente di servizio Cloud Build nel progetto in cui stai creando le implementazioni. Per consentire a Infra Manager di eseguire Terraform utilizzando Cloud Build, l'agente di servizio Cloud Build nel progetto contenente il account di servizio ha bisogno 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