Questo documento mostra come concedere ruoli e autorizzazioni di Identity and Access Management (IAM) per supportare il routing degli eventi utilizzando Eventarc da Google Cloud e da altre origini a destinazioni GKE, inclusi gli endpoint pubblici di servizi privati e pubblici in esecuzione in un cluster GKE.
Concedi le autorizzazioni a livello di progetto all'entità che richiama le API Eventarc (ad esempio, il creatore del trigger Eventarc):
- Il ruolo Amministratore Eventarc ti consente di controllare completamente tutte le risorse Eventarc, inclusa la specifica di un service account per il trigger durante la creazione.
- Il ruolo Utente account di servizio consente a un'entità di simulare l'identità e utilizzare un service account. Il account di servizio è associato a un trigger Eventarc e rappresenta l'identità del trigger.
Concedi le autorizzazioni del trigger Eventarc al service account trigger:
- Il ruolo Ricevitore eventi Eventarc consente al trigger Eventarc di ricevere eventi dai provider di eventi. Non devi concedere il ruolo se stai eseguendo il routing degli eventi diretti da Cloud Pub/Sub.
- Il ruolo Sottoscrittore Pub/Sub consente al trigger Eventarc di utilizzare i messaggi da Pub/Sub e di collegare le sottoscrizioni a un argomento.
- Il ruolo Scrittore metriche Monitoring consente all'inoltro di eventi di Eventarc di scrivere metriche utilizzando Cloud Monitoring e altri sistemi che forniscono metriche.
Concedi le autorizzazioni agli agenti di servizio Google:
- Se stai creando un trigger per eventi diretti da Cloud Storage, concedi il ruolo Pub/Sub Publisher.
- Se hai abilitato l'agente di servizio Cloud Pub/Sub il giorno 8 aprile 2021 o in una data precedente, concedi il ruolo Creatore token account di servizio.
Per saperne di più sulla concessione dei ruoli IAM, consulta Gestire l'accesso. Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Concedi le autorizzazioni a livello di progetto
Se sei il creatore del progetto, ti viene concesso il
ruolo di base Proprietario (roles/owner). Per
impostazione predefinita, questo ruolo include le autorizzazioni necessarie per l'accesso completo alla maggior parte delle
Google Cloud risorse. In caso contrario, i ruoli richiesti devono essere concessi da un amministratore sulla risorsa appropriata all'entità appropriata (nota anche come membro).
Ad esempio, un'entità può essere un Account Google (per gli utenti finali) o un service account (per applicazioni e workload di computing). Ogni entità ha il proprio identificatore, in genere un indirizzo email.
Il ruolo Amministratore Eventarc (
roles/eventarc.admin) ti consente di controllare completamente tutte le risorse Eventarc.Concedi il ruolo sul progetto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=roles/eventarc.admin
Sostituisci quanto segue:
PROJECT_ID: l'ID del tuo Google Cloud progetto.PRINCIPAL: un identificatore per il creatore del trigger che in genere ha il seguente formato:PRINCIPAL_TYPE:ID. Ad esempio,user:my-user@example.com. Per un elenco completo dei possibiliPRINCIPAL_TYPEvalori, consulta il riferimento per l'associazione di policy.
Il ruolo Utente account di servizio (
roles/iam.serviceAccountUser) consente a un'entità di eseguire operazioni come un service account.Quando crei un trigger Eventarc, hai bisogno di questo ruolo per poter associare un account di servizio gestito dall'utente al trigger e che ne rappresenta l'identità. Per saperne di più, consulta Ruoli per account di servizio account.
Puoi concedere il ruolo nel progetto per consentire all'entità di simulare l'identità di più service account o concedere il ruolo nel account di servizio per consentire all'entità di simulare l'identità di un account di servizio specifico.
Concedi il ruolo sul progetto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=roles/iam.serviceAccountUser
In alternativa, concedi il ruolo nel account di servizio:
gcloud iam service-accounts add-iam-policy-binding \ projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member=PRINCIPAL \ --role=roles/iam.serviceAccountUser
Sostituisci quanto segue:
SERVICE_ACCOUNT_PROJECT_ID: l' Google Cloud ID progetto che contiene il account di servizio.SERVICE_ACCOUNT_NAME: il nome del service account. ## Concedi le autorizzazioni del trigger Eventarc
Ogni trigger Eventarc è associato a un account di servizio IAM al momento della creazione del trigger. Puoi specificare un account di servizio gestito dall'utente che il trigger utilizza come identità predefinita. Se non specifichi un account di servizio durante la creazione del trigger, il trigger utilizza il service account Compute Engine predefinito per la sua identità.
Ti consigliamo di creare un tuo service account gestito dall'utente per avere maggiore controllo e flessibilità nella gestione del trigger.
Crea un account di servizio e annota il suo nome:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"Sostituisci quanto segue:
SERVICE_ACCOUNT_NAME: il nome del service account. Questo nome viene visualizzato nell'indirizzo email che identifica il account di servizio.DESCRIPTION: una descrizione facoltativa del account di servizioDISPLAY_NAME: un nome del account di servizio da visualizzare in the Google Cloud console
Concedi il ruolo Ricevitore eventi Eventarc (
roles/eventarc.eventReceiver) nel progetto al account di servizio associato al trigger Eventarc in modo che possa ricevere eventi dai provider di eventi.Tieni presente che non devi concedere il ruolo Ricevitore eventi Eventarc se stai eseguendo il routing degli eventi diretti da Cloud Pub/Sub.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/eventarc.eventReceiver
Sostituisci
SERVICE_ACCOUNT_NAMEcon il nome del account di servizio annotato nel passaggio precedente.Concedi il ruolo Sottoscrittore Pub/Sub (
roles/pubsub.subscriber) nel progetto al account di servizio associato al trigger Eventarc in modo che possa utilizzare i messaggi da Pub/Sub e collegare le sottoscrizioni a un argomento.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/pubsub.subscriber
Sostituisci
SERVICE_ACCOUNT_NAMEcon il nome del account di servizio annotato in precedenza.Concedi il ruolo Scrittore metriche Monitoring (
roles/monitoring.metricWriter) nel progetto al account di servizio associato al trigger Eventarc in modo che l'inoltro di eventi di Eventarc possa scrivere metriche utilizzando Cloud Monitoring e altri sistemi che forniscono metriche.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.metricWriter
Concedi le autorizzazioni agli agenti di servizio Google
Alcuni Google Cloud servizi hanno agenti di servizio che consentono ai servizi di accedere alle tue risorse. Se un'API richiede un agente di servizio, Google lo crea dopo che hai attivato e utilizzato l'API.
Se stai creando un trigger per eventi diretti da Cloud Storage, per supportare la pubblicazione di messaggi in un argomento, concedi il ruolo Pub/Sub Publisher (
roles/pubsub.publisher) nel progetto all'agente di servizio Cloud Storage agent:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com \ --role=roles/pubsub.publisher
Sostituisci
PROJECT_NUMBERcon il Google Cloud numero del tuo progetto. Puoi trovare il numero di progetto nella pagina di benvenuto della Google Cloud console o eseguendo il seguente comando:gcloud projects describe PROJECT_ID --format='value(projectNumber)'
Se hai abilitato l'agente di servizio Cloud Pub/Sub il giorno 8 aprile 2021 o in una data precedente, per supportare le richieste push Pub/Sub autenticate, concedi il ruolo Creatore token account di servizio (
roles/iam.serviceAccountTokenCreator) nel progetto all'agente di servizio Pub/Sub. In caso contrario, questo ruolo viene concesso per impostazione predefinita:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Passaggi successivi
Scopri di più sulle opzioni di controllo dell'accesso in Eventarc.
Scopri di più sulle best practice per l'utilizzo dei service account.
Scopri come descrivere un trigger e verificarne il service account associato.