Prepararsi per le prossime modifiche alle autorizzazioni
Application Integration sta aggiornando la modalità di autorizzazione delle integrazioni. Queste modifiche verranno applicate a breve. La maggior parte delle integrazioni continuerà a essere eseguita senza modifiche, mentre alcune integrazioni richiedono una modifica della configurazione per continuare a essere eseguite. Tutto ciò che è descritto in questa pagina utilizza una configurazione che controlli già, quindi puoi apportare queste modifiche ora.
Prossime modifiche alle autorizzazioni
Application Integration sta aggiornando la modalità di gestione delle identità per le esecuzioni delle integrazioni. Ogni esecuzione deve ora avere un'identità esplicita, che funge da una delle seguenti:
- L'utente che ha attivato l'esecuzione. I sistemi chiamati applicano le autorizzazioni di accesso di questo utente.
- Un account di servizio di esecuzione. Puoi controllare, definire l'ambito e controllare questo account come qualsiasi altro account di servizio nel tuo progetto Google Cloud.
A causa di questo aggiornamento:
- Per eseguire un'integrazione, devi avere l'autorizzazione per agire come account di servizio di esecuzione.
- Se nessuna delle due identità è disponibile, l'esecuzione dell'integrazione non riesce.
Prima di iniziare
Completa le seguenti attività in ordine. Esegui prima la prima, perché le altre due terminano con una pubblicazione e la pubblicazione stessa è soggetta a controllo delle autorizzazioni.
- Concedi il ruolo Utente account di servizio a tutti gli account di servizio di esecuzione che utilizzi già, a tutti coloro che eseguono, approvano, modificano o pubblicano l'integrazione, inclusi gli account di servizio utilizzati dall'automazione.
- Imposta un account di servizio di esecuzione sulle integrazioni che vengono eseguite senza una persona e non ne hanno uno.
- Concedi il ruolo Utente account di servizio all'account di servizio denominato in ogni profilo di autenticazione di tipo Account di servizio o Token OIDC. In genere si tratta di account diversi dall'account di servizio di esecuzione.
Integrazioni che richiedono un account di servizio di esecuzione
Determinare se un'integrazione ne ha bisogno
Hai bisogno di un account di servizio di esecuzione solo quando le credenziali di nessuno sono disponibili per l'intera esecuzione. Ciò si verifica in due situazioni e solo in due:
| Come viene eseguita l'integrazione | Le credenziali di qualcuno sono disponibili? | È necessario un account di servizio di esecuzione? |
|---|---|---|
| In modo sincrono : qualcuno la avvia e attende il risultato | Sì, per l'intera esecuzione | No |
| In modo asincrono : viene messa in coda e termina in un secondo momento | Solo al momento dell'attivazione | Sì |
| Senza intervento : viene avviata da una pianificazione o da un evento | No, non c'è mai una persona | Sì |
Identificare le integrazioni interessate
Innanzitutto, viene mai eseguita senza una persona? Sì, se si verifica una delle seguenti condizioni:
- Ha un trigger di eventi di Cloud Scheduler, Cloud Pub/Sub, Salesforce, or Integration Connectors event.
- Qualcosa la pianifica tramite l'API con
scheduleIntegrations. - Un'altra integrazione la chiama come sottointegrazione asincrona, utilizzando l'attività Chiama integrazione
- Utilizza l'attività Sospendi o Approvazione, in cui un'esecuzione può rimanere in attesa e poi scadere da sola.
In secondo luogo, il suo account di servizio di esecuzione è vuoto? Per elencare ogni versione pubblicata in una regione insieme al relativo account di servizio di esecuzione, esegui il seguente comando:
curl -s -G -H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=state=ACTIVE" \
--data-urlencode "pageSize=1000" \
"https://REGION-integrations.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/integrations/-/versions" \
| jq -r '.integrationVersions[]
| [ .name, (.runAsServiceAccount // "NONE") ]
| @tsv'
Sostituisci quanto segue:
REGION: la regione dell'integrazione. Per l'elenco delle regioni supportate, consulta Località.PROJECT_ID: l'ID del tuo progetto Google Cloud
- Una riga che mostra
NONErichiede un'azione solo se si applica anche la prima metà too. - Per controllare una singola integrazione, aprila nella Google Cloud console e guarda il Riepilogo integrazione riquadro nella barra degli strumenti dell'integrazione.
Aggiornare le integrazioni
Concedere il ruolo Utente account di servizio
Per concedere il ruolo a qualcuno, esegui il seguente comando:
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT \
--project=SERVICE_ACCOUNT_PROJECT_ID \
--member='user:PRINCIPAL' \
--role='roles/iam.serviceAccountUser'
Sostituisci quanto segue:
SERVICE_ACCOUNT: l'indirizzo email dell'account di servizio di esecuzione o dell'account denominato in un profilo di autenticazioneSERVICE_ACCOUNT_PROJECT_ID: l'ID del progetto proprietario del service accountPRINCIPAL: l'indirizzo email dell'utente
Per altri tipi di entità, utilizza il prefisso --member corrispondente:
- Gruppi: utilizza
group:. Ti consigliamo di utilizzare i Gruppi Google anziché i singoli account utente per semplificare la gestione degli accessi man mano che i membri del team cambiano. - Account di servizio: utilizza
serviceAccount:per applicazioni e processi automatizzati.
Per eseguire la stessa operazione nella Google Cloud console:
- Vai a IAM e amministrazione > Account di servizio.
- Seleziona l'account di servizio.
- Fai clic su Autorizzazioni > Concedi accesso.
Per saperne di più, consulta Gestire l'accesso agli account di servizio.
Impostare un account di servizio di esecuzione
- Scegli o crea il account di servizio e concedi i ruoli necessari alle attività dell'integrazione sulle risorse che toccano. Per capire cosa concedere, esamina i ruoli
assegnati all'agente di servizio di Application Integration del tuo progetto,
service-PROJECT_NUMBER@gcp-sa-integrations., oggi, e assegna al nuovo account solo la parte utilizzata da questa integrazione. - Concedi il ruolo Utente account di servizio a tutti coloro che eseguono, approvano, modificano o pubblicano l'integrazione, inclusa qualsiasi automazione.
- Apri l'integrazione e imposta il account di servizio nel Riepilogo integrazione riquadro delle informazioni nel barra degli strumenti dell'integrazione.
- Pubblica l'integrazione. Per saperne di più, consulta Testare e pubblicare le integrazioni.
Google Cloud consiglia di utilizzare un account di servizio dedicato con ambito minimo per ogni integrazione anziché un account con privilegi estesi condiviso tra tutte, perché:
- Contiene l'effetto di una singola integrazione.
- Viene visualizzato per nome negli audit log.
Per saperne di più, consulta Best practice per l'utilizzo dei service account.
Risolvere i problemi relativi alle autorizzazioni mancanti
Un'azione negata ha una delle due cause seguenti e vale la pena distinguerle:
- L'account di servizio di esecuzione : non puoi agire per suo conto o non può raggiungere ciò di cui ha bisogno un'attività.
- Il tuo ruolo IAM : non hai l'autorizzazione per eseguire l'azione del tutto.
Entrambi i controlli si applicano, quindi la correzione di uno non corregge l'altro.
Errori dell'account di servizio di esecuzione
| Situazione | Informazioni visualizzate | Cosa fare |
|---|---|---|
| Qualcuno attiva un'integrazione, ma non può agire per conto del relativo account di servizio di esecuzione | Il trigger viene rifiutato con PERMISSION_DENIED. Il controllo viene eseguito
prima che l'esecuzione venga messa in coda, quindi non viene visualizzato nulla negli execution log. Sembra
che non sia successo nulla, anziché che un'attività non sia riuscita |
Concedi il ruolo Utente account di servizio a chiunque lo attivi |
| Un'esecuzione senza credenziali utente non ha un account di servizio di esecuzione | Le attività di connettori, chiamata endpoint REST e funzioni Cloud Run non riescono a raggiungere
ciò che stanno cercando di raggiungere. Al momento della pubblicazione:
The integration is missing run-as service account since governance is
enabled for your project. |
Imposta un account di servizio di esecuzione |
| Un'attività utilizza un profilo di autenticazione il cui account di servizio non può essere utilizzato dal chiamante | L'attività viene negata mentre il resto dell'esecuzione continua:
You do not have permission to use Auth Config ID because you
cannot act as its service account: SERVICE_ACCOUNT. |
Concedi il ruolo Utente account di servizio all'account denominato in il profilo |
| Un approvatore non può agire per conto dell'account di servizio di esecuzione | Il processo di approvazione non riesce senza generare un errore visibile. L'esecuzione rimane in pausa fino alla scadenza, quindi noterai che le approvazioni sembrano aver smesso di funzionare | Concedi il ruolo Utente account di servizio a tutti coloro che potrebbero approvare |
| Qualcuno modifica o pubblica un'integrazione senza l'autorizzazione | Publisher does not have required permission to publish integration with
service account: SERVICE_ACCOUNT. Tutto ciò che è già stato pubblicato
continua a essere eseguito. Se l'automazione pubblica per tuo conto, questa operazione viene visualizzata nella pipeline di deployment
anziché nella console |
Concedi il ruolo Utente account di servizio a editor, publisher, e automazione |
| Un'attività viene eseguita come la persona che l'ha attivata e questa persona non può raggiungere la risorsa | L'esecuzione inizia normalmente, poi un'attività non riesce a denominare una risorsa, anche se non è cambiato nulla nell'integrazione | Concedi a queste persone l'accesso alla risorsa o sposta l'integrazione su un account di servizio di esecuzione che lo ha già, in genere la risposta migliore, perché impedisce che l'accesso dell'integrazione vari a seconda di chi la esegue |
Per l'elenco completo dei codici di errore di Application Integration, consulta Codici di errore.
Errori dei ruoli IAM
Oltre all'account di servizio di esecuzione, Application Integration verifica le autorizzazioni IAM dell'utente
per ogni azione. Se riscontri un
PERMISSION_DENIED errore quando interagisci con un'integrazione o se
i log di esecuzione non vengono caricati, assicurati di avere un ruolo che conceda le
autorizzazioni richieste:
| Per: | Devi disporre di uno di questi ruoli |
|---|---|
| Visualizzare e aprire le integrazioni | roles/integrations.integrationViewer |
| Visualizzare i log e i dettagli di esecuzione | roles/integrations.integrationViewer o
roles/integrations.integrationInvoker |
| Eseguire un'integrazione | roles/integrations.integrationInvoker o
roles/integrations.integrationEditor |
| Creare e modificare le integrazioni | roles/integrations.integrationEditor |
| Pubblicare un'integrazione | roles/integrations.integrationDeployer o
roles/integrations.integrationEditor |
| Approvare o riprendere un'esecuzione sospesa | roles/integrations.suspensionResolver o
roles/integrations.integrationAdmin |
| Accesso completo a tutte le integrazioni | roles/integrations.integrationAdmin |
Per concedere un ruolo, esegui il seguente comando:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:PRINCIPAL' \
--role='ROLE'
Per ulteriori informazioni, consulta le seguenti risorse:
- Ruoli IAM predefiniti, per l'elenco completo dei ruoli e delle autorizzazioni che contiene ciascuno.
- Controllo degli accessi, per scoprire come Application Integration utilizza IAM.
Domande frequenti
Ho concesso il ruolo, ma l'operazione non riesce ancora. Cosa mi manca?
- La concessione è stata effettuata nel progetto sbagliato. Deve essere effettuata nel progetto che possiede l'account di servizio, che non è necessariamente quello che possiede l' integrazione.
- Non è ancora diventata effettiva. Attendi qualche minuto. Le decisioni di autorizzazione vengono memorizzate nella cache per un breve periodo di tempo, oltre al normale ritardo di propagazione di IAM.
- È coinvolto un secondo account di servizio. L'account di servizio di esecuzione e l'account di servizio di ogni profilo di autenticazione sono separati ed entrambi richiedono la concessione.
- Il blocco è il tuo ruolo, non l'account di servizio. Il ruolo Utente account di servizio riguarda la possibilità di agire per conto dell'account di servizio di esecuzione; un ruolo IAM separato regola se hai l'autorizzazione per eseguire l'azione. Consulta Errori dei ruoli IAM.
Perché il ruolo Integration Invoker non è più sufficiente?
Ti consente comunque di eseguire l'integrazione. Non ti ha mai consentito di agire per conto dell'account di servizio con cui viene eseguita l'integrazione, ed è questo che determina la quantità di accesso ottenuta dall'esecuzione. Nessuno dei seguenti ruoli concede
iam.serviceAccounts.actAs, quindi è sempre una concessione separata:
roles/integrations.integrationAdminroles/integrations.integrationEditorroles/integrations.integrationInvoker
La mia integrazione viene eseguita solo in modo sincrono. Ho bisogno di un account di servizio di esecuzione?
No. Un'esecuzione sincrona ha già un'identità: la persona che l'ha attivata. Consulta Determinare se un'integrazione ne ha bisogno.
Nella console non è segnalato nulla. Posso stare tranquillo?
Non è detto. Gli avvisi dipendono in parte dalle esecuzioni osservate, quindi un'integrazione con una pianificazione poco frequente o che nessuno ha attivato di recente può richiedere un'azione senza mai mostrare un avviso. Consulta Integrazioni che richiedono un account di servizio di esecuzione anziché considerare una console silenziosa come un via libera.
Passaggi successivi
- Leggi le linee guida per la sicurezza di Application Integration.
- Esamina i predefiniti ruoli IAM per Application Integration.
- Scopri come configurare i profili di autenticazione.
- Leggi le best practice per l'utilizzo dei service account.