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.
Nella console Google Cloud , vai alla pagina Policy dell'organizzazione.
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.
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.
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
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 Entità con accesso.
Fai clic su Concedi l'accesso.
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_NUMBERcon il Google Cloud numero di progetto 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 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'autorizzazioneiam.serviceAccounts.actAsnecessaria 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:
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 sul 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 l'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-bindinge 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-bindinge 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 serviziotPRINCIPAL: un identificatore per il creatore del trigger nel formatouser|group|serviceAccount:emailodomain:domain. Ad esempio:user:test-user@gmail.comgroup:admins@example.comserviceAccount:test123@example.domain.comdomain:example.domain.comm
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.comDove:
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.
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.
Crea il trigger utilizzando il account di servizio cross-project.