Ruoli e autorizzazioni per le destinazioni Cloud Run

Questo documento mostra come concedere ruoli e autorizzazioni di Identity and Access Management (IAM) per supportare il routing degli eventi da Google Cloud e da altre origini ai servizi Cloud Run utilizzando Eventarc.

  1. Concedi le autorizzazioni a livello di progetto all'entità che richiama le API Eventarc (ad esempio, il creatore del trigger Eventarc):

    1. Il ruolo Eventarc Admin ti consente di avere il controllo completo su tutte le risorse Eventarc, inclusa la specifica di un service account per il trigger al momento della creazione.
    2. Il ruolo Utente account di servizio consente a un'entità di impersonare e utilizzare un service account. Consente a un'entità di collegare un service account gestito dall'utente a un trigger Eventarc e di agire come service account di runtime durante il deployment di un servizio Cloud Run.
  2. Concedi le autorizzazioni del trigger Eventarc al service account del trigger: il ruolo Ricevitore di eventi Eventarc consente al trigger Eventarc di ricevere eventi dai provider di eventi. Non è necessario concedere il ruolo se esegui il routing di eventi diretti da Cloud Pub/Sub.

  3. Concedi le autorizzazioni del servizio Cloud Run al service account del trigger: il ruolo Cloud Run Invoker consente al trigger Eventarc di chiamare il servizio Cloud Run di destinazione. Questo vale se esegui il routing degli eventi a un servizio Cloud Run autenticato.

  4. Concedi le autorizzazioni agli agenti di servizio Google:

    1. Il ruolo Agente di servizio Eventarc consente all'agente di servizio Eventarc di gestire le risorse di trasporto sottostanti e convalidare le origini eventi. Questo ruolo viene concesso per impostazione predefinita quando crei una risorsa Eventarc per la prima volta, ma devi ripristinarlo se viene rimosso.

    2. Se stai creando un trigger per gli eventi diretti da Cloud Storage, concedi il ruolo Pub/Sub Publisher all'agente di servizio Cloud Storage.

    3. Se hai attivato 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 all'agente di servizio Pub/Sub.

Per saperne di più sulla concessione dei ruoli IAM, consulta Gestisci 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 risorseGoogle Cloud . 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, che in genere è un indirizzo email.

  1. Il ruolo Eventarc Admin (roles/eventarc.admin) consente il controllo completo su 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: il tuo ID progetto Google Cloud .
    • PRINCIPAL: un identificatore per l'autore del trigger, che di solito ha il seguente formato: PRINCIPAL_TYPE:ID. Ad esempio user:my-user@example.com. Per un elenco completo dei possibili valori di PRINCIPAL_TYPE, consulta il riferimento per l'associazione delle policy.
  2. Il ruolo Service Account User (roles/iam.serviceAccountUser) consente a un'entità di eseguire operazioni come account di servizio.

    Ad esempio, questo ruolo è necessario per associare un account di servizio gestito dall'utente a un trigger Eventarc. È necessario anche per poter agire come service account di runtime durante il deployment di un servizio Cloud Run (per i ruoli aggiuntivi richiesti per il deployment di un servizio, consulta Ruoli richiesti per il deployment dei servizi Cloud Run). Per ulteriori informazioni, consulta Ruoli per laccount 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 solo 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 al account di servizio:

    gcloud iam service-accounts add-iam-policy-binding \
        projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID. \
        --member=PRINCIPAL \
        --role=roles/iam.serviceAccountUser

    Sostituisci quanto segue:

    • SERVICE_ACCOUNT_PROJECT_ID: l'ID progetto Google Cloudche contiene il account di servizio.
    • SERVICE_ACCOUNT_NAME: il nome del service account.

Concedi le autorizzazioni per i 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, quest'ultimo utilizza il service account predefinito di Compute Engine per la sua identità.

Ti consigliamo di creare il tuo service account gestito dall'utente per avere maggiore controllo e flessibilità nella gestione del trigger.

  1. Crea un account di servizio e annotane il 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 servizio.
    • DISPLAY_NAME: un nome del account di servizio da visualizzare nella console Google Cloud .
  2. Concedi il ruolo Eventarc Event Receiver (roles/eventarc.eventReceiver) nel progetto al account di servizio associato al trigger Eventarc in modo che il trigger possa ricevere eventi dai provider di eventi.

    Tieni presente che non è necessario concedere il ruolo Ricevitore di eventi Eventarc se esegui il routing di eventi diretti da Cloud Pub/Sub.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID. \
        --role=roles/eventarc.eventReceiver

    Sostituisci SERVICE_ACCOUNT_NAME con il nome del account di servizio che hai annotato nel passaggio precedente.

Concedi le autorizzazioni per il servizio Cloud Run

Per impostazione predefinita, il deployment di tutti i servizi Cloud Run viene eseguito privatamente, il che significa che non è possibile accedervi senza fornire le credenziali di autenticazione nella richiesta. Per i progetti con policy dell'organizzazione per la limitazione del dominio, utilizza un servizio di destinazione Cloud Run autenticato anziché uno che consente l'accesso pubblico (non autenticato).

Per impostazione predefinita, i servizi Cloud Run possono essere chiamati solo da Project Owner, Project Editor, Cloud Run Admin e Cloud Run Invoker.

  1. Se esegui il routing degli eventi a un servizio di destinazione Cloud Run autenticato, concedi il ruolo Cloud Run Invoker (roles/run.invoker) sul servizio Cloud Run al account di servizio gestito dall'utente associato al trigger Eventarc:

    gcloud run services add-iam-policy-binding SERVICE_NAME \
        --region=REGION \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID. \
        --role=roles/run.invoker

    Sostituisci quanto segue:

    • SERVICE_NAME: il nome del servizio Cloud Run.
    • REGION: la regione in cui è stato eseguito il deployment del servizio Cloud Run.
  2. Facoltativamente, puoi concedere il ruolo su tutti i servizi e i job Cloud Run in un progetto Google Cloud . Per saperne di più, consulta Controlla l'accesso a tutti i servizi e i job di un progetto.

Tieni presente che se crei un trigger per un servizio Cloud Run autenticato senza concedere il ruolo Invoker di Cloud Run, il trigger viene creato correttamente ed è attivo. Tuttavia, il trigger non funzionerà come previsto e nei log verrà visualizzato un messaggio simile al seguente:

The request was not authenticated. Either allow unauthenticated invocations or set the proper Authorization header.

Concedi le autorizzazioni agli agenti di servizio Google

Alcuni servizi Google Cloud 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.

  1. Se il ruolo Eventarc Service Agent (roles/eventarc.serviceAgent) è stato rimosso dal service agent Eventarc, concedi il ruolo al progetto in modo che Eventarc possa gestire le risorse di trasporto sottostanti e convalidare le origini eventi. In caso contrario, questo ruolo viene concesso per impostazione predefinita quando crei una risorsa Eventarc per la prima volta:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-eventarc. \
        --role=roles/eventarc.serviceAgent

    Sostituisci PROJECT_NUMBER con il tuo numero di progetto Google Cloud. Puoi trovare il numero di progetto nella pagina Benvenuto della console Google Cloud o eseguendo questo comando:

    gcloud projects describe PROJECT_ID --format='value(projectNumber)'
  2. Se stai creando un trigger per gli eventi diretti da Cloud Storage, per supportare la pubblicazione di messaggi in un argomento, concedi il ruolo Publisher Pub/Sub (roles/pubsub.publisher) nel progetto all'agente di servizio Cloud Storage:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gs-project-accounts. \
        --role=roles/pubsub.publisher
  3. Se hai attivato l'agente di servizio Cloud Pub/Sub il giorno 8 aprile 2021 o in una data precedente, per supportare le richieste di 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. \
        --role=roles/iam.serviceAccountTokenCreator

Passaggi successivi