Supportare un account di servizio tra progetti

Ogni attivatore Eventarc è associato a un account di servizio IAM (Identity and Access Management) al momento della creazione. L'attivatore utilizza l'account di servizio come identità predefinita.

Per impostazione predefinita, non puoi creare un account di servizio IAM in un progetto Google Cloud e collegarlo a una risorsa in un altro progetto. Tuttavia, potresti aver centralizzato gli account di servizio per la tua organizzazione in progetti distinti, il che può semplificarne la gestione. Questo documento illustra i passaggi necessari per supportare il collegamento di un account di servizio in un progetto a un attivatore Eventarc in un altro progetto.

Se non disponi delle autorizzazioni per eseguire questi passaggi, chiedi a un amministratore di completarli.

Abilita l'utilizzo dei service account tra i progetti

Completa i seguenti passaggi nel progetto dell'account di servizio.

  1. Nella console Google Cloud, vai alla pagina Criteri dell'organizzazione.

    Vai a Criteri dell'organizzazione

  2. Se il criterio Disabilita l'utilizzo dei service account tra i progetti è applicato, devi disattivarlo.

    Per ulteriori informazioni, consulta Abilitare l'attacco degli account di servizio tra progetti.

  3. Crea il tuo account di servizio e annota il nome.

Concedi le autorizzazioni per l'autenticazione dell'account di servizio

Le entità possono utilizzare gli account di servizio per eseguire l'autenticazione in diversi modi. Ogni tipo di autenticazione richiede che il principale disponga di autorizzazioni IAM specifiche per l'account di servizio. Per ulteriori informazioni, consulta Ruoli per l'autenticazione degli account di servizio.

  1. Concedi il ruolo IAM Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) all'agente di servizio Eventarc del progetto Google Cloud che contiene l'attivatore. In questo modo, l'agente di servizio può gestire l'accesso tra progetti per l'account di servizio. Un agente di servizio è l'identità di un determinato Google Cloud servizio per un determinato progetto. Per ulteriori informazioni, consulta Agenti di servizio.

    Console

    1. Nella console Google Cloud, vai alla pagina Account di servizio.

      Vai ad Account di servizio

    2. Seleziona il progetto proprietario dell'account di servizio che collegherai all'attivatore Eventarc.

    3. Fai clic sull'indirizzo email dell'account di servizio che hai creato in precedenza.

    4. Fai clic sulla scheda Autorizzazioni.

    5. Nella sezione Enti con accesso a questo account di servizio, fai clic su Concedi accesso.

    6. Nel campo Nuove entità, inserisci l'indirizzo email dell'agente di servizio Eventarc:

      service-EVENTARC_PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com

      Sostituisci EVENTARC_PROJECT_NUMBER con il Google Cloud numero del progetto che contiene l'attivatore.

    7. Fai clic su Aggiungi un altro ruolo.

    8. Nell'elenco Seleziona un ruolo, filtra per Creator di token account di servizio e poi seleziona il ruolo.

    9. Fai clic su Salva.

    gcloud

    Esegui il comando gcloud iam service-accounts add-iam-policy-binding:

    gcloud iam service-accounts add-iam-policy-binding \
        SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
        --member='serviceAccount:service-EVENTARC_PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com' \
        --role='roles/iam.serviceAccountTokenCreator'

    Sostituisci quanto segue:

    • SERVICE_ACCOUNT_NAME: il nome del tuo account di servizio
    • SERVICE_ACCOUNT_PROJECT_ID: Google Cloud l'ID progetto del progetto proprietario dell'account di servizio
    • EVENTARC_PROJECT_NUMBER: il Google Cloud numero del progetto che contiene l'attivatore
  2. Concedi il ruolo IAM Utente account di servizio (roles/iam.serviceAccountUser) a tutti i principali che creano gli attivatori, ad esempio l'agente di servizio Eventarc del progetto Google Cloud che contiene l'attivatore. Questo ruolo predefinito contiene l'autorizzazione iam.serviceAccounts.actAs, necessaria per associare un account di servizio a una risorsa.

    Console

    Concedi il ruolo al progetto per consentire al principale di rubare l'identità di più account di servizio:

    1. Nella console Google Cloud, vai alla pagina IAM.

      Vai a IAM

    2. Seleziona il progetto proprietario dell'account di servizio.

    3. Fai clic su Concedi accesso.

    4. Nel campo Nuove entità, inserisci l'indirizzo email dell'entità.

    5. Nell'elenco Seleziona un ruolo, filtra per Utente account di servizio, quindi seleziona il ruolo.

    6. Fai clic su Salva.

    In alternativa, concedi il ruolo all'account di servizio per consentire all'entità di assumere il ruolo di un solo account di servizio specifico:

    1. Nella console Google Cloud, vai alla pagina Account di servizio.

      Vai ad Account di servizio

    2. Seleziona il progetto proprietario dell'account di servizio.

    3. Fai clic sull'indirizzo email dell'account di servizio che hai creato in precedenza.

    4. Fai clic sulla scheda Autorizzazioni.

    5. Nella sezione Entità con accesso a questo account di servizio, fai clic su Concedi accesso.

    6. Nel campo Nuove entità, inserisci l'indirizzo email dell'entità.

    7. Fai clic su Aggiungi un altro ruolo.

    8. Nell'elenco Seleziona un ruolo, filtra per Utente account di servizio, quindi seleziona il ruolo.

    9. Fai clic su Salva.

    gcloud

    Esegui il comando gcloud projects add-iam-policy-binding e concedi il ruolo al progetto per consentire al principale di simulare la persona di più account di servizio:

    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member=PRINCIPAL \
        --role='roles/iam.serviceAccountUser'

    In alternativa, esegui il comando gcloud iam service-accounts add-iam-policy-binding e concedi il ruolo all'account di servizio per consentire al principale di simulare l'identità solo di un account di servizio specifico:

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_RESOURCE_NAME \
        --member=PRINCIPAL \
        --role='roles/iam.serviceAccountUser'

    Sostituisci quanto segue:

    • SERVICE_ACCOUNT_PROJECT_ID: Google Cloud l'ID progetto del progetto proprietario dell'account di servizio
    • PRINCIPAL: un identificatore per l'autore dell'attivatore nel formato user|group|serviceAccount:email o domain:domain. Ad esempio:
      • user:test-user@gmail.com
      • group:admins@example.com
      • serviceAccount:test123@example.domain.com
      • domain:example.domain.com m
    • SERVICE_ACCOUNT_RESOURCE_NAME: il nome completo della risorsa dell'account di servizio. Ad esempio:

      projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com

      Dove:

      • SERVICE_ACCOUNT_PROJECT_ID è l'Google Cloud ID progetto proprietario dell'account di servizio
      • SERVICE_ACCOUNT_NAME è il nome del tuo account di servizio

Concedi le autorizzazioni per supportare il routing degli eventi

Prima di creare un trigger Eventarc, devi concedere altre autorizzazioni IAM per supportare il routing degli eventi utilizzando Eventarc.

  1. Concedi le autorizzazioni appropriate in base alle risorse a cui deve accedere l'attivatore Eventarc per svolgere la sua attività, nonché al provider e alla destinazione degli eventi. Per ulteriori informazioni, consulta Tutti i ruoli e le autorizzazioni.

  2. Crea l'attivatore utilizzando l'account di servizio tra progetti.

Passaggi successivi