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 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.
Google CloudAbilita l'utilizzo dei account di servizio tra i progetti
Completa i seguenti passaggi nel progetto dell'account di servizio.
Nella console Google Cloud , vai alla pagina Policy dell'organizzazione.
Se viene applicato il criterio Disabilita l'utilizzo dei service account tra i progetti, devi disattivarlo.
Per maggiori informazioni, vedi Consentire l'allegato di service account tra progetti.
Crea il tuo 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 ulteriori informazioni, consulta Ruoli per laccount di servizio account.
Concedi il ruolo IAM Creatore token account di servizio (
roles/iam.serviceAccountTokenCreator
) all'agente di servizio Eventarc del progetto Google Cloud che contiene il trigger. Ciò consente all'agente di servizio 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 ulteriori informazioni, consulta la sezione Agenti di servizio.Console
Nella Google Cloud console, vai alla pagina Service account.
Seleziona il progetto proprietario del account di servizio che collegherai al trigger Eventarc.
Fai clic sull'indirizzo email del account di servizio che hai creato in precedenza.
Fai clic sulla scheda Autorizzazioni.
Nella sezione Entità con accesso a questo service account, fai clic su
Concedi accesso.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 numero di progettoGoogle Cloud del progetto che contiene il trigger.Fai clic su Aggiungi un altro ruolo.
Nell'elenco Seleziona un ruolo, filtra per Service Account Token Creator, quindi seleziona il ruolo.
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 accountSERVICE_ACCOUNT_PROJECT_ID
: l'ID progetto Google Cloud del progetto proprietario delaccount di serviziotEVENTARC_PROJECT_NUMBER
: il Google Cloud numero di progetto del progetto che contiene il trigger
Concedi il ruolo IAM Utente service account (
roles/iam.serviceAccountUser
) a tutte le entità che creano trigger, ad esempio l'agente di servizio Eventarc del progetto Google Cloud che contiene il trigger. Questo ruolo predefinito contiene l'autorizzazioneiam.serviceAccounts.actAs
necessaria per collegare un account di servizio a una risorsa.Console
Concedi il ruolo sul progetto per consentire all'entità di rappresentare più service account:
Nella console Google Cloud vai alla pagina IAM.
Seleziona il progetto proprietario del account di servizio.
Fai clic su
Concedi l'accesso.Nel campo Nuove entità, inserisci l'indirizzo email dell'entità.
Nell'elenco Seleziona un ruolo, filtra per Utente service account e poi seleziona il ruolo.
Fai clic su Salva.
In alternativa, concedi il ruolo al account di servizio per consentire all'entità di utilizzare solo unaccount di serviziot specifico:
Nella Google Cloud console, vai alla pagina Service account.
Seleziona il progetto proprietario del account di servizio.
Fai clic sull'indirizzo email del account di servizio che hai creato in precedenza.
Fai clic sulla scheda Autorizzazioni.
Nella sezione Entità con accesso a questo service account, fai clic su
Concedi accesso.Nel campo Nuove entità, inserisci l'indirizzo email dell'entità.
Fai clic su Aggiungi un altro ruolo.
Nell'elenco Seleziona un ruolo, filtra per Utente service account e poi seleziona il ruolo.
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 nell'account di servizio per consentire all'entità di rappresentare solo un service account 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 serviziotPRINCIPAL
: un identificatore per il creatore del trigger nel formatouser|group|serviceAccount:email
odomain: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 progetto Google Cloud proprietario del account di servizioSERVICE_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.
Concedi le autorizzazioni appropriate in base alle risorse a cui deve accedere il trigger Eventarc per svolgere il proprio lavoro, nonché al provider di eventi e alla destinazione. Per ulteriori informazioni, consulta Tutti i ruoli e le autorizzazioni.
Crea il trigger utilizzando il account di servizio tra i progetti.