Ruoli e autorizzazioni per un endpoint HTTP interno in una rete VPC

Questo documento mostra come concedere ruoli e autorizzazioni Identity and Access Management (IAM) per supportare il routing degli eventi da Google Cloud a un endpoint HTTP interno in una rete Virtual Private Cloud (VPC) utilizzando Eventarc.

  1. Concedi autorizzazioni a livello di progetto al principal che richiama le API Eventarc (ad esempio, il creatore del trigger Eventarc):

    1. Il ruolo Amministratore Eventarc ti consente di controllare completamente tutte le risorse Eventarc, inclusa la specifica di un service account per il trigger al momento della creazione.
    2. Il ruolo Utente service account consente a un'entità di simulare l'identità e utilizzare unaccount di serviziot. Il account di servizio è associato a un trigger Eventarc e rappresenta l'identità del trigger.
  2. Concedi le autorizzazioni del trigger Eventarc al service account del trigger: Il ruolo Destinatario di eventi Eventarc consente al trigger Eventarc di ricevere eventi dai provider di eventi. Non devi concedere il ruolo se indirizzi gli eventi diretti da Cloud Pub/Sub.

  3. Concedi le autorizzazioni agli agenti di servizio Google:

    1. Se l'URI dell'endpoint HTTP interno utilizza il nome DNS interno di un servizio risolvibile da Cloud DNS, concedi il ruolo Peer Cloud DNS.
    2. Se stai creando un trigger per eventi diretti da Cloud Storage, concedi il ruolo Publisher Pub/Sub.
    3. Se hai attivato l'agente di servizio Cloud Pub/Sub l'8 aprile 2021 o in una data precedente, concedi il ruolo Creatore token service account.

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 autorizzazioni a livello di progetto

Se hai creato il progetto, ti viene concesso il ruolo Proprietario di base (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 carichi di lavoro di calcolo). Ogni entità ha il proprio identificatore, che in genere è un indirizzo email.

  1. Il ruolo Amministratore Eventarc (roles/eventarc.admin) ti 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 il creatore 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 al binding dei criteri.
  2. Il ruolo Utente service account (roles/iam.serviceAccountUser) consente a un'entità di eseguire operazioni come account di servizio.

    Ad esempio, hai bisogno di questo ruolo per poter associare un account di servizio gestito dall'utente a un trigger Eventarc. Ti serve anche per agire come service account di runtime quando esegui il deployment di un servizio Cloud Run. Per maggiori informazioni, vedi Impersonificazione del service account.

    Puoi concedere il ruolo nel progetto per consentire all'entità di rappresentare più service account o concedere il ruolo nel account di servizio per consentire all'entità di rappresentare solo 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 all'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 l'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 service account durante la creazione del trigger, quest'ultimo utilizza l'account di servizio predefinito di Compute Engine per la sua identità.

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

  1. Crea un account di servizio e annota il relativo 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 serviziot
    • DISPLAY_NAME: il nome di un account di servizio da visualizzare nella console Google Cloud
  2. Concedi il ruolo Destinatario di eventi Eventarc (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 devi concedere il ruolo Eventarc Event Receiver se stai instradando 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_NAME con il nome del tuo account di servizio che hai annotato nel passaggio precedente.

Concedi le autorizzazioni agli agenti di servizio

Alcuni servizi Google Cloud hanno agenti di servizio che consentono ai servizi di accedere alle tue risorse. Se un'API richiede un service agent, Google lo crea dopo che hai attivato e utilizzato l'API.

  1. Se l'URI dell'endpoint HTTP interno nella rete VPC utilizza il nome DNS interno di un servizio risolvibile da Cloud DNS, per accedere alle reti di destinazione con zone di peering DNS, concedi il ruolo peer DNS (roles/dns.peer) nel progetto host VPC all'agente di servizio Eventarc:

    gcloud projects add-iam-policy-binding VPC_HOST_PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com \
        --role=roles/dns.peer

    Sostituisci quanto segue:

    • VPC_HOST_PROJECT_ID: l'ID progetto Google Cloud per il progetto host VPC. Quando utilizzi il VPC condiviso, colleghi uno o più progetti di servizio al progetto host, consentendo alle risorse di più progetti di connettersi a una rete VPC comune.

      Tieni presente che, a seconda di come hai configurato la rete VPC, il progetto host VPC potrebbe essere anche il progetto trigger Eventarc.

    • PROJECT_NUMBER: il numero di progetto Google Cloud per il progetto del trigger Eventarc. Puoi trovare il numero di progetto nella pagina Benvenuto della console Google Cloud o eseguendo il seguente comando:

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

    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_NUMBER con il numero del tuo 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)'
  3. Se hai attivato l'agente di servizio Cloud Pub/Sub l'8 aprile 2021 o in una data precedente, per supportare le richieste push Pub/Sub autenticate, concedi il ruolo Creatore token service account (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