Supportare un account di servizio tra progetti

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

Per impostazione predefinita, non puoi creare un account di servizio IAM in un progettoGoogle Cloud e collegarlo a una risorsa in un altro progetto. Tuttavia, potresti aver centralizzato i service account per la 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 unaccount di serviziot 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.

Abilita l'utilizzo del account di servizio tra progetti

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

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

    Vai a Policy dell'organizzazione

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

    Per saperne di più, consulta Abilitare l'allegato dei service account tra progetti.

  3. Crea il service account e annota il suo nome.

Concedi 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 il principal disponga di autorizzazioni IAM specifiche per il account di servizio. Per saperne di più, consulta Ruoli per laccount di servizio account.

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

    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 l'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 di progetto del progetto che contiene il trigger.

    7. Fai clic su Aggiungi un altro ruolo.

    8. Nell'elenco Seleziona un ruolo, filtra per Service Account Token Creator, quindi 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 service account
    • SERVICE_ACCOUNT_PROJECT_ID: l'ID progetto Google Cloud del progetto proprietario delaccount di serviziot
    • EVENTARC_PROJECT_NUMBER: il Google Cloud numero di progetto del progetto che contiene il trigger
  2. Concedi il ruolo IAM Service Account User (roles/iam.serviceAccountUser) a tutte le entità che creano trigger, ad esempio il service agent Eventarc del progetto Google Cloud 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 sul progetto per consentire all'entità di simulare l'identità di più service account:

    1. Nella console Google Cloud vai alla pagina IAM.

      Vai a IAM

    2. Seleziona il progetto proprietario del account di servizio.

    3. Fai clic su Concedi l'accesso.

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

    5. Nell'elenco Seleziona un ruolo, filtra per Utente service account e poi seleziona il ruolo.

    6. Fai clic su Salva.

    In alternativa, concedi il ruolo sul account di servizio per consentire all'entità di utilizzare solo unaccount di serviziot 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 service account, fai clic su Concedi l'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 service account e poi seleziona il ruolo.

    9. Fai clic su Salva.

    gcloud

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

    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 sul account di servizio per consentire all'entità di rappresentare solo 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'ID progetto Google Cloud del progetto proprietario delaccount di serviziot
    • 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'ID progettoGoogle Cloud proprietario del account di servizio.
      • SERVICE_ACCOUNT_NAME è il nome del tuo account di serviziot

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 e 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 cross-project.

Passaggi successivi