Introduzione all'identità del servizio

Questa pagina descrive le due identità Cloud Run e il modo in cui Le librerie client di Cloud utilizzano l'identità del servizio per chiamare le API Google Cloud. Alcuni esempi di prodotti Google Cloud che dispongono di librerie client Cloud sono Cloud Storage, Firestore, Cloud SQL, Pub/Sub e Cloud Tasks. Questa pagina è rivolta agli amministratori, agli operatori o agli sviluppatori che gestire i criteri dell'organizzazione e l'accesso degli utenti o per altri utenti su questi argomenti.

Identità Cloud Run

Per utilizzare Cloud Run, Google Cloud richiede dell'utente di Cloud Run e dell'istanza Cloud Run a ogni hanno un'identità.

  • L'identità dell'utente di Cloud Run è detta Account Deploymenter Cloud Run. Quando gestisci un revisione o job, utilizzi questa identità per inviare richieste API Cloud Run Admin.
  • L'identità dell'istanza Cloud Run è detta Identità del servizio Cloud Run. Quando viene eseguito il deployment che il codice che hai scritto interagisce con le librerie client di Cloud o chiama un altro Servizio Cloud Run per comunicazione tra servizi, di utilizzare questa identità per effettuare richieste da Cloud Run le API Google Cloud o altri servizi Cloud Run.

Per accedere e inviare richieste alle API Google Cloud o comunicare tra i servizi, a ogni identità devono essere concesse le autorizzazioni appropriate in Identity and Access Management (IAM).

Chiama l'API Cloud Run Admin con l'account di deployment

Puoi chiamare l'API Cloud Run Admin da Cloud Run utilizzando il metodo Account Deploymenter Cloud Run. L'account di deployment può essere un account utente o un account di servizio e rappresenta l'account con cui è stato eseguito l'accesso all'ambiente Google Cloud.

Quando l'account deployer utilizza Cloud Run, IAM verifica se l'account del deployer dispone delle autorizzazioni necessarie per eseguire dell'operazione Cloud Run. Il seguente diagramma mostra come un account utente chiama l'API Cloud Run Admin per eseguire il deployment di una nuova revisione dalla console Google Cloud:

Chiama l'API Cloud Run Admin dalla console Google Cloud.
Figura 1. Un utente utilizza la console Google Cloud per eseguire il deployment nuova revisione inviando una richiesta con un token di accesso API Cloud Run Admin. IAM utilizza questo token di accesso per verificare l'autenticazione dell'account utente per accedere all'API Cloud Run Admin prima di eseguire l'operazione.

Chiama le API Google Cloud con l'identità del servizio

Quando un'istanza Cloud Run interagisce con un'altra istanza autenticata IAM Cloud Run o chiama le librerie client di Cloud tramite il codice dell'applicazione o funzioni integrate come Integrazioni di Cloud Run o montaggi dei volumi Cloud Storage, l'ambiente Google Cloud utilizza Credenziali predefinite dell'applicazione (ADC) per rilevare automaticamente se l'identità del servizio Cloud Run è autenticato per eseguire l'operazione API. L'identità del servizio Cloud Run è un account di servizio assegnato come identità dell'istanza Cloud Run quando esegui il deployment di una revisione o l'esecuzione di un job.

Un account di servizio usato come account deployer verrà usato solo come l'identità del servizio se configuri lo stesso account di servizio configurazione di Cloud Run.

Il resto di questa guida descrive come un servizio o un job Cloud Run utilizza l'identità del servizio per chiamare e accedere ai servizi e alle API di Google. Per ulteriori informazioni sulla configurazione dell'identità del servizio, consulta le pagine di configurazione dell'identità del servizio per servizi e job.

Tipi di account di servizio per l'identità del servizio

Quando l'istanza Cloud Run effettua chiamate alle API Google Cloud per eseguire le operazioni di cui ha bisogno, Cloud Run utilizza automaticamente e l'account di servizio come identità di servizio. I due tipi di account di servizio che possono essere utilizzati come identità del servizio sono:

  • Account di servizio gestito dall'utente (consigliato): lo crei manualmente. l'account di servizio e determinare l'insieme minimo di autorizzazioni un account di servizio non può accedere a risorse Google Cloud specifiche. La account di servizio dall'utente segue il formato SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.
  • Account di servizio predefinito Compute Engine: Cloud Run fornisce automaticamente l'account di servizio predefinito e l'identità predefinita del servizio. L'account di servizio predefinito Compute Engine segue il formato di PROJECT_NUMBER-compute@developer.gserviceaccount.com.

Evita l'account di servizio predefinito quando configuri l'identità del servizio

Per impostazione predefinita, l'account di servizio predefinito è stato creato. Se non specifichi un account di servizio quando Viene creato il servizio o il job Cloud Run, Cloud Run utilizza questo account di servizio.

A seconda della configurazione dei criteri dell'organizzazione, l'account di servizio predefinito potrebbe automaticamente il ruolo Editor progetto. Ti consigliamo vivamente di disabilitare la concessione automatica del ruolo entro il giorno applicazione del criterio dell'organizzazione iam.automaticIamGrantsForDefaultServiceAccounts di blocco. Se hai creato la tua organizzazione dopo il 3 maggio 2024, viene applicato per impostazione predefinita.

Se disattivi la concessione automatica dei ruoli, devi decidere quali ruoli concedere agli account di servizio predefiniti, quindi concedere personalmente questi ruoli.

Se l'account di servizio predefinito ha già il ruolo Editor, ti consigliamo di sostituire il valore Ruolo di Editor con ruoli meno permissivi. Per modificare in modo sicuro i ruoli dell'account di servizio, utilizza il Simulatore di criteri per vedere l'impatto dei la modifica e quindi concedere e revocare ruoli appropriati.

Come funziona l'identità del servizio

Quando il codice chiama o invia richieste alle librerie client di Cloud, avviene quanto segue:

  1. Le librerie client rilevano che viene effettuata una richiesta a Google Cloud alle API o alle librerie client di Cloud e richiede un token di accesso OAuth 2.0 per e l'identità del servizio dal server di metadati dell'istanza.
  2. Il server dei metadati dell'istanza fornisce un token di accesso IAM per l'account di servizio configurato come identità del servizio.
  3. La richiesta all'API Google Cloud viene inviata con un token di accesso OAuth 2.0.
  4. IAM verifica l'identità del servizio a cui fa riferimento il token di accesso per le autorizzazioni necessarie e controlla le associazioni dei criteri prima di inoltrare la chiamata all'endpoint dell'API.
  5. L'API Google Cloud esegue l'operazione.
Chiama l'API Google Cloud da Cloud Run.
Figura 1. Cloud Run genera un token di accesso dal server di metadati e IAM lo utilizza per verificare che l'identità del servizio Cloud Run assegnata sia autenticata per accedere alle API Google Cloud.

Genera un token di accesso per la richiesta Cloud Run per chiamare le API Google Cloud

Se il codice Cloud Run utilizza Librerie client di Cloud, devi configurare il servizio in Cloud Run assegnando un account di servizio su il deployment o l'esecuzione. Ciò consente alla libreria di acquisire automaticamente per autenticare la richiesta del codice. Se il tuo codice Cloud Run comunica con altri servizi Cloud Run autenticati, devi aggiungere il token di accesso al tuo richieste.

Per assegnare un account di servizio come identità del servizio, consulta le seguenti guide:

Tuttavia, se utilizzi il tuo codice personalizzato o devi effettuare richieste programmaticamente, puoi utilizzare direttamente il server di metadati per recuperare manualmente i token di identità e i token di accesso descritti nella sezione successiva. Tieni presente che non puoi eseguire query su questo server direttamente dalla tua macchina locale, in quanto il server dei metadati è disponibile solo per i carichi di lavoro in esecuzione su Google Cloud.

Recuperare gli ID e i token di accesso utilizzando il server di metadati

I due tipi di token che è possibile recuperare con il server dei metadati sono i seguenti:

Per recuperare un token, segui le istruzioni riportate nella scheda appropriata per il tipo di token che stai utilizzando:

Token di accesso

Ad esempio, se vuoi creare un argomento Pub/Sub, utilizza il comando projects.topics.create .

  1. Utilizzare Compute Metadata Server per recupera un token di accesso:

    curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" \
        --header "Metadata-Flavor: Google"

    Questo endpoint restituisce una risposta JSON con un attributo access_token.

  2. Nella richiesta del protocollo HTTP, la richiesta deve essere autenticata con un token di accesso nell'intestazione Authorization:

    PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID
    Authorization: Bearer ACCESS_TOKEN
    

    Dove:

    • PROJECT_ID è l'ID progetto.
    • TOPIC_ID è l'ID argomento.
    • ACCESS_TOKEN è il token di accesso recuperato nel passaggio precedente.

    Risposta:

    {
        "name": "projects/PROJECT_ID/topics/TOPIC_ID"
    }
    

Token ID

Utilizza Compute Metadata Server per recuperare un token di identità con un segmento di pubblico specifico:

curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE" \
    --header "Metadata-Flavor: Google"

Dove AUDIENCE è il segmento di pubblico JWT richiesto.

Per i servizi Cloud Run, il segmento di pubblico deve essere il URL del servizio che stai richiamando o segmento di pubblico personalizzato, ad esempio un dominio personalizzato, configurato per il servizio.

https://service.domain.com

Per le altre risorse, è probabile che si tratti dell'ID client OAuth di un risorsa:

1234567890.apps.googleusercontent.com

Passaggi successivi