Supportare un account di servizio tra progetti

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

Per impostazione predefinita, non puoi creare un account di servizio IAM in un Google Cloud progetto e collegarlo a una risorsa in un altro progetto. Tuttavia, potresti aver centralizzato i service account della tua organizzazione in progetti separati, il che può semplificare la gestione dei service account. Questo documento descrive i passaggi necessari per supportare il collegamento di un account di servizio in un progetto a un trigger Eventarc in un altro progetto.

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

Abilitare l'utilizzo dei account di servizio tra progetti

Completa i seguenti passaggi nel progetto del account di servizio.

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

    Vai a Policy dell'organizzazione

  2. Se viene applicata la policy Disabilita l'utilizzo dei service account tra i progetti, devi disattivarla.

    Per saperne di più, consulta Abilitare il collegamento dei service account tra progetti.

  3. Crea il service account e annotane il nome.

Concedere le autorizzazioni per l'autenticazione del account di servizio

Le entità possono utilizzare i service account per l'autenticazione in diversi modi. Ogni tipo di autenticazione richiede che l'entità disponga di autorizzazioni IAM specifiche per il account di servizio. Per saperne di più, consulta Ruoli per account di servizio account.

  1. Concedi il ruolo IAM Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) al service agent Eventarc del Google Cloud progetto che contiene il trigger. In questo modo, il service agent può gestire l'accesso tra progetti per il account di servizio. Un service agent è l'identità di un determinato Google Cloud servizio per un progetto specifico. Per saperne di più, consulta Service agent.

    Console

    1. Nella Google Cloud console, vai alla pagina Service account.

      Vai ad Account di servizio

    2. Seleziona il progetto proprietario del account di servizio che collegherai al trigger Eventarc.

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

    4. Fai clic sulla scheda Entità con accesso.

    5. Fai clic su Concedi accesso.

    6. Nel campo Nuove entità, inserisci l'indirizzo email del service agent Eventarc:

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

      Sostituisci EVENTARC_PROJECT_NUMBER con il Google Cloud numero del progetto che contiene il trigger.

    7. Fai clic su Aggiungi un altro ruolo.

    8. Nell'elenco Seleziona un ruolo , filtra per Token account di servizio Creatore e seleziona il ruolo.

    9. Fai clic su Salva.

    gcloud

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

    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 service account
    • SERVICE_ACCOUNT_PROJECT_ID: l' Google Cloud ID progetto del progetto proprietario del account di servizio
    • EVENTARC_PROJECT_NUMBER: il Google Cloud numero del progetto che contiene il trigger
  2. Concedi il ruolo Utente account di servizio (roles/iam.serviceAccountUser) IAM a tutte le entità che creano trigger, ad esempio il service agent Eventarc del Google Cloud progetto che contiene il trigger. Questo ruolo predefinito contiene l'autorizzazione iam.serviceAccounts.actAs, necessaria per collegare un account di servizio a una risorsa.

    Console

    Concedi il ruolo al progetto per consentire all'entità di simulare l'identità di più service account:

    1. Nella Google Cloud console vai alla pagina IAM.

      Vai a IAM

    2. Seleziona il progetto proprietario del 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 e seleziona il ruolo.

    6. Fai clic su Salva.

    In alternativa, concedi il ruolo al account di servizio per consentire all'entità di simulare l'identità solo di un account di servizio specifico:

    1. Nella Google Cloud console, vai alla pagina Service account.

      Vai ad Account di servizio

    2. Seleziona il progetto proprietario del account di servizio.

    3. Fai clic sull'indirizzo email del 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 e seleziona il ruolo.

    9. Fai clic su Salva.

    gcloud

    Esegui il gcloud projects add-iam-policy-binding comando e concedi il ruolo al progetto per consentire all'entità di simulare l'identità di più service account:

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

    In alternativa, esegui il gcloud iam service-accounts add-iam-policy-binding comando e concedi il ruolo al account di servizio per consentire all'entità 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: l' Google Cloud ID progetto del progetto proprietario del account di servizio
    • PRINCIPAL: un identificatore per il creatore del trigger 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 del 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 del account di servizio
      • SERVICE_ACCOUNT_NAME è il nome del account di servizio

Concedere 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 il trigger Eventarc per svolgere le sue operazioni, nonché al provider di eventi e alla destinazione. Per saperne di più, consulta Tutti i ruoli e le autorizzazioni.

  2. Crea il trigger utilizzando il account di servizio tra progetti.

Passaggi successivi