Metodi di autenticazione di Google

Questo documento ti aiuta a comprendere alcuni metodi e concetti chiave dell'autenticazione, nonché dove puoi ricevere assistenza per l'implementazione o la risoluzione dei problemi relativi all'autenticazione. L'argomento principale della documentazione relativa all'autenticazione riguarda i servizi Google Cloud, ma l'elenco dei casi d'uso dell'autenticazione e il materiale introduttivo in questa pagina includono casi d'uso anche per altri prodotti Google.

Introduzione

L'autenticazione è il processo tramite il quale la tua identità viene confermata tramite l'utilizzo di un qualche tipo di credenziale. L'autenticazione consiste nel dimostrare che sei chi dici di essere.

Google fornisce molti servizi e API, che richiedono l'autenticazione per accedere. Google fornisce inoltre una serie di servizi che ospitano le applicazioni scritte dai nostri clienti; queste applicazioni devono anche determinare l'identità dei loro utenti.

Ho intenzione di… Lumen
Esegui l'autenticazione su un servizio Google Cloud dalla mia applicazione utilizzando un linguaggio di programmazione di alto livello. Configura le credenziali predefinite dell'applicazione, quindi utilizza una delle librerie client Cloud.
Esegui l'autenticazione in un'applicazione in esecuzione su Cloud Run o Cloud Functions. Procurati un token ID OpenID Connect (OIDC) e forniscilo con la tua richiesta.
Implementa l'autenticazione utente per un'applicazione che accede a servizi e risorse Google o Google Cloud. Consulta Autenticare gli utenti delle applicazioni per un confronto delle opzioni.
Prova alcuni comandi gcloud nel mio ambiente di sviluppo locale. Inizializza l'interfaccia a riga di comando gcloud.
Prova alcune richieste API REST di Google Cloud nel mio ambiente di sviluppo locale. Utilizza uno strumento a riga di comando come curl per chiamare l'API REST.
Prova uno snippet di codice incluso nella documentazione del prodotto. Configura le credenziali predefinite dell'applicazione in locale e installa la libreria client del prodotto nel tuo ambiente locale. La libreria client trova automaticamente le tue credenziali.
Ricevi assistenza per un altro caso d'uso dell'autenticazione. Consulta la pagina Casi d'uso dell'autenticazione.
Consulta un elenco dei prodotti forniti da Google nello spazio di gestione di identità e accessi. Consulta la pagina dei prodotti per la gestione di identità e accessi Google.

Scegli il metodo di autenticazione giusto per il tuo caso d'uso

Quando accedi ai servizi Google Cloud utilizzando l'interfaccia a riga di comando Google Cloud, le librerie client Cloud, gli strumenti che supportano le Credenziali predefinite dell'applicazione (ADC) come Terraform o richieste REST, usa il seguente diagramma per scegliere un metodo di autenticazione:

Albero decisionale per la scelta del metodo di autenticazione in base al caso d'uso

Questo diagramma ti guida nelle seguenti domande:

  1. Stai eseguendo il codice in un ambiente di sviluppo a utente singolo, come la tua workstation, Cloud Shell o un'interfaccia desktop virtuale?
    1. In caso affermativo, vai alla domanda 4.
    2. In caso contrario, vai alla domanda 2.
  2. Stai eseguendo codice in Google Cloud?
    1. In caso affermativo, vai alla domanda 3.
    2. In caso contrario, vai alla domanda 5.
  3. Esegui container in Google Kubernetes Engine o GKE Enterprise?
    1. In caso affermativo, utilizza Workload Identity per collegare gli account di servizio ai pod Kubernetes.
    2. In caso contrario, collega un account di servizio alla risorsa.
  4. Il tuo caso d'uso richiede un account di servizio?

    Ad esempio, vuoi configurare l'autenticazione e l'autorizzazione in modo coerente per la tua applicazione in tutti gli ambienti.

    1. Se la risposta è no, esegui l'autenticazione con le credenziali utente.
    2. In caso affermativo, impersona un account di servizio con credenziali utente.
  5. Il tuo carico di lavoro esegue l'autenticazione con un provider di identità esterno che supporta la federazione delle identità per i carichi di lavoro?
    1. In caso affermativo, configura la federazione delle identità per i carichi di lavoro per consentire alle applicazioni in esecuzione on-premise o su altri cloud provider di utilizzare un account di servizio.
    2. In caso contrario, vai alla domanda 6.
  6. È possibile utilizzare il furto d'identità degli account di servizio con le tue credenziali utente?

    Puoi utilizzare uno dei metodi documentati nella pagina Utilizzare l'impersonificazione degli account di servizio.

    1. In caso affermativo, impersona un account di servizio con credenziali utente.
    2. In caso contrario, crea una chiave dell'account di servizio.

Tipi di autenticazione

L'autenticazione è richiesta per accedere alla maggior parte delle risorse e delle applicazioni. Questa documentazione supporta i professionisti tecnici nella creazione di codice dell'applicazione con uno dei seguenti obiettivi:

OAuth 2.0

Le API di Google implementano ed estendono il framework OAuth 2.0. Il framework OAuth 2.0 definisce vari "flussi" o approcci di autenticazione di autenticazione. In genere, l'applicazione presenta le credenziali, che rappresentano un'entità (un account utente o di servizio), a un modulo intermedio chiamato Server di autorizzazione. Il server di autorizzazione risponde con un token, che l'applicazione può utilizzare per l'autenticazione con il servizio e l'accesso alle risorse. Il token include uno o più ambiti, che riflettono l'accesso che l'applicazione è autorizzata ad effettuare. L'applicazione quindi presenta il token al server delle risorse per ottenere l'accesso alle risorse.

Metodi di autorizzazione per i servizi Google Cloud

I servizi Google Cloud utilizzano Identity and Access Management (IAM) per l'autenticazione. IAM offre un controllo granulare, per entità e risorsa. Quando esegui l'autenticazione ai servizi Google Cloud, in genere utilizzi un ambito che include tutti i servizi Google Cloud (https://www.googleapis.com/auth/cloud-platform).

Gli ambiti OAuth 2.0 possono fornire un secondo livello di protezione, utile se il codice viene eseguito in un ambiente in cui la sicurezza dei token è un problema, ad esempio un'app per dispositivi mobili. In questo scenario, puoi utilizzare ambiti granulari per ridurre il rischio di compromissione di un token. Gli ambiti OAuth 2.0 vengono utilizzati anche per autorizzare l'accesso ai dati degli utenti.

Credenziali predefinite dell'applicazione

Application Default Credentials (ADC) è una strategia utilizzata dalle librerie di autenticazione di Google per trovare automaticamente le credenziali in base all'ambiente dell'applicazione. Le librerie di autenticazione rendono queste credenziali disponibili alle librerie client Cloud e alle librerie client delle API di Google. Quando utilizzi ADC, il tuo codice può essere eseguito in un ambiente di sviluppo o di produzione senza modificare la modalità di autenticazione dell'applicazione ai servizi e alle API di Google Cloud.

Se stai scrivendo un codice che deve utilizzare i servizi Google Cloud, devi utilizzare ADC ove possibile. L'utilizzo di ADC può semplificare il processo di sviluppo, poiché ti consente di utilizzare lo stesso codice di autenticazione in diversi ambienti.

Prima di poter utilizzare ADC, devi fornire le tue credenziali ad ADC, in base a dove vuoi che venga eseguito il codice. ADC localizza automaticamente le credenziali e riceve un token in background, consentendo l'esecuzione del codice di autenticazione in ambienti diversi senza modifiche. Ad esempio, la stessa versione del codice potrebbe essere autenticata con le API Google Cloud quando viene eseguita su una workstation di sviluppo o su Compute Engine.

Le credenziali gcloud non corrispondono a quelle fornite ad ADC utilizzando lgcloud CLI. Per ulteriori informazioni, consulta Credenziali dell'interfaccia a riga di comando gcloud e credenziali ADC.

Terminologia

I termini che seguono è importante comprendere quando si parla di autenticazione e autorizzazione.

Autenticazione

L'autenticazione è il processo di determinazione dell'identità dell'entità che tenta di accedere a una risorsa.

Autorizzazione

L'autorizzazione è il processo che determina se l'entità o l'applicazione che tenta di accedere a una risorsa è stata autorizzata per quel livello di accesso.

Credenziali

Per l'autenticazione, le credenziali sono un oggetto digitale che forniscono una prova dell'identità. Password, PIN e dati biometrici possono essere utilizzati come credenziali, a seconda dei requisiti dell'applicazione. Ad esempio, quando accedi al tuo Account Google, fornisci la tua password e soddisfi qualsiasi requisito di autenticazione a due fattori come prova che l'account appartiene effettivamente a te e che non sei vittima di spoofing.

I token vengono a volte denominati credenziali, ma in questa documentazione vengono definiti oggetti digitali che dimostrano che il chiamante ha fornito le credenziali appropriate, ma non sono esse stesse.

Il tipo di credenziale che devi fornire dipende da ciò che stai utilizzando per l'autenticazione. Nella console Google Cloud è possibile creare i seguenti tipi di credenziali:

  • Chiavi API

    A differenza delle altre credenziali, le chiavi API non identificano un'entità. Le chiavi API forniscono un progetto Google Cloud ai fini della fatturazione e della quota.

    Molte API di Google non accettano chiavi API. Per ulteriori informazioni sulle chiavi API, consulta Chiavi API.

  • ID client OAuth

    Gli ID client OAuth vengono utilizzati per identificare un'applicazione per Google. Questa operazione è necessaria quando vuoi accedere a risorse di proprietà dei tuoi utenti finali, dette anche OAuth a tre vie (3LO). Per ulteriori informazioni su come ottenere e utilizzare un ID client OAuth, consulta la pagina Configurare OAuth 2.0.

Entità

Un'entità è un'identità a cui è possibile concedere l'accesso a una risorsa. Per l'autenticazione, le API di Google supportano due tipi di entità: account utente e account di servizio.

La possibilità di utilizzare un account utente o un account di servizio per l'autenticazione dipende dal caso d'uso specifico. Puoi utilizzarli entrambi, in fasi diverse del progetto o in ambienti di sviluppo differenti.

Account utente

Gli account utente rappresentano uno sviluppatore, un amministratore o qualsiasi altra persona che interagisce con le API e i servizi Google.

Gli account utente vengono gestiti come Account Google, con Google Workspace o Cloud Identity. Possono anche essere account utente gestiti da un provider di identità di terze parti e federati con la federazione delle identità per la forza lavoro.

Con un account utente, puoi eseguire l'autenticazione alle API e ai servizi Google nei seguenti modi:

Per una panoramica sui modi per configurare le identità per gli utenti in Google Cloud, consulta Identità per gli utenti.

Account di servizio

Gli account di servizio sono account che non rappresentano un utente umano. Offrono un modo per gestire l'autenticazione e l'autorizzazione quando un essere umano non è direttamente coinvolto, ad esempio quando un'applicazione deve accedere alle risorse Google Cloud. Gli account di servizio sono gestiti da IAM.

Nell'elenco che segue vengono indicati alcuni metodi per utilizzare un account di servizio per eseguire l'autenticazione alle API e ai servizi Google, dal più sicuro al meno sicuro. Per saperne di più, consulta Scegliere il metodo di autenticazione appropriato per il caso d'uso in questa pagina.

Per una panoramica dei modi per configurare le identità dei carichi di lavoro, inclusi gli account di servizio, per Google Cloud, consulta Identità per i carichi di lavoro. Per le best practice, consulta Best practice per l'utilizzo degli account di servizio.

Token

Per l'autenticazione e l'autorizzazione, un token è un oggetto digitale che mostra che un chiamante ha fornito le credenziali corrette che sono state scambiate con quel token. Il token contiene informazioni sull'identità dell'entità che effettua la richiesta e sul tipo di accesso che sono autorizzati a effettuare.

I token possono essere considerati come chiavi di hotel. Quando fai il check-in in hotel e presenti la documentazione appropriata alla reception dell'hotel, ricevi una chiave che ti consente di accedere a risorse specifiche dell'hotel. Ad esempio, la chiave potrebbe consentire l'accesso alla camera e all'ascensore per gli ospiti, ma non a nessun'altra stanza o all'ascensore di servizio.

Ad eccezione delle chiavi API, le API di Google non supportano direttamente le credenziali. L'applicazione deve acquisire o generare un token e fornirlo all'API. Esistono diversi tipi di token. Per ulteriori informazioni, consulta la sezione Tipi di token.

Carico di lavoro e forza lavoro

I prodotti di identità e accesso Google Cloud consentono l'accesso ai servizi e alle risorse Google sia per l'accesso programmatico sia per gli utenti umani. Google utilizza i termini carico di lavoro per l'accesso programmatico e forza di lavoro per l'accesso degli utenti.

La federazione delle identità per i carichi di lavoro consente di fornire l'accesso ai carichi di lavoro in esecuzione all'esterno di Google senza dover creare e gestire le chiavi degli account di servizio.

La federazione delle identità per la forza lavoro consente di utilizzare un provider di identità esterno per autenticare e autorizzare la forza lavoro (un gruppo di utenti, ad esempio dipendenti, partner e contrattisti), utilizzando IAM, in modo che gli utenti possano accedere ai servizi Google Cloud.

Passaggi successivi