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. Esempi dei prodotti Google Cloud con le librerie client di Cloud includono: Cloud Storage, Firestore, Cloud SQL, Pub/Sub e di 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, ogni identità deve avere autorizzazioni concesse in Identity and Access Management (IAM).

Chiama l'API Cloud Run Admin con l'account deployer

Puoi chiamare l'API Cloud Run Admin da Cloud Run utilizzando il metodo Account Deploymenter Cloud Run. L'account deployer può essere un un account utente o di servizio e rappresenta l'account firmato nell'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 utente chiama l'API Cloud Run Admin per eseguire il deployment di una nuova revisione 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 che l'account utente sia autenticato 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. Cloud Run Service Identity è un account di servizio che è stato assegnato come l'identità dell'istanza Cloud Run quando esegui il deployment di una revisione eseguire 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 i servizi e le API di Google e accedervi. Per ulteriori informazioni informazioni sulla configurazione dell'identità del servizio, consulta l'identità del servizio pagine di configurazione per i servizi e jobs.

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 utilizzate come identità del servizio sono i seguenti:

  • 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 di Compute Engine segue il formato PROJECT_NUMBER-compute@developer.gserviceaccount.com.

Evita l'account di servizio predefinito durante la configurazione dell'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 disabiliti la concessione automatica del ruolo, devi decidere quali ruoli concedere a quelli predefiniti account di servizio e poi concedi ruoli.

Se l'account di servizio predefinito ha già il ruolo Editor, ti consigliamo di sostituire il valore Ruolo 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, viene si verifica 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 di metadati dell'istanza fornisce un token di accesso IAM per l'account di servizio configurato come identità di 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 viene fatto riferimento nell'accesso il token per le autorizzazioni necessarie e controlla le associazioni di criteri prima inoltra la chiamata all'endpoint API.
  5. L'operazione viene eseguita dall'API Google Cloud.
Chiama l'API Google Cloud da Cloud Run.
Figura 1. Cloud Run genera il token di accesso fornito dal server dei metadati e IAM lo utilizza per verificare che il servizio Cloud Run assegnato l'identità è 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à di servizio, consulta le seguenti guide:

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

Recuperare l'ID e i token di accesso utilizzando il server dei 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 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, quest'ultima deve essere autenticata con 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 è il tuo ID argomento.
    • ACCESS_TOKEN è il token di accesso che hai recuperato nel passaggio precedente.

    Risposta:

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

Token ID

Utilizzare Compute Metadata Server per recuperare un token di identità con un 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