Autenticazione su Google

Questo documento ti aiuta a comprendere alcuni concetti chiave dell'autenticazione e a trovare assistenza per l'implementazione o la risoluzione dei problemi di autenticazione. L'argomento principale della documentazione relativa all'autenticazione è relativo ai servizi Google Cloud, ma l'elenco dei casi d'uso di autenticazione e il materiale introduttivo in questa pagina includono anche i casi d'uso di altri prodotti Google.

Introduzione

L'autenticazione è il processo con cui l'identità viene confermata mediante l'utilizzo di una qualche forma di credenziale. L'autenticazione consiste nel dimostrare che sei chi afferma di essere.

Google offre numerosi servizi e API che richiedono l'autenticazione per l'accesso. Google fornisce inoltre diversi servizi che ospitano applicazioni scritte dai nostri clienti, che devono inoltre identificare l'identità degli utenti.

Ho intenzione di… Informazioni
Eseguire l'autenticazione in 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 di Cloud.
Eseguire l'autenticazione in un'applicazione in esecuzione su Cloud Run o Cloud Functions. Procurati un token ID OpenID Connect (OIDC) e forniscilo alla tua richiesta.
Implementare l'autenticazione degli utenti per un'applicazione che accede a servizi e risorse Google o Google Cloud. Consulta la pagina 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 dell'API Google Cloud REST 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 nell'ambiente locale. La libreria client trova automaticamente le tue credenziali.
Ricevi assistenza per un altro caso d'uso di autenticazione. Consulta la pagina Casi d'uso di autenticazione.
Visualizza un elenco dei prodotti forniti da Google nello spazio di gestione di identità e accessi. Consulta la pagina Prodotti Google per la gestione di identità e accessi.

Scegli il metodo di autenticazione adatto al tuo caso d'uso

Quando accedi ai servizi Google Cloud utilizzando Google Cloud CLI, Cloud Client Libraries, strumenti che supportano le Credenziali predefinite dell'applicazione;applicazione (ADC) come Terraform o le richieste REST, utilizza 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 illustra le seguenti domande:

  1. Stai eseguendo il codice in un ambiente di sviluppo monoutente, ad esempio una 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 il codice in Google Cloud?
    1. In caso affermativo, vai alla domanda 3.
    2. In caso contrario, vai alla domanda 5.
  3. Esegui i container in Google Kubernetes Engine o Anthos?
    1. Se sì, utilizza Workload Identity per collegare gli account di servizio ai pod Kubernetes.
    2. Se no, 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 l'applicazione in tutti gli ambienti.

    1. In caso contrario, esegui l'autenticazione con le credenziali utente.
    2. Se sì, ruba l'identità di un account di servizio con le credenziali utente.
  5. Il carico di lavoro viene autenticato con un provider di identità esterno che supporta la federazione delle identità per il carico di lavoro?
    1. Se sì, 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. Puoi utilizzare l'impersonificazione degli account di servizio con le tue credenziali utente?

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

    1. Se sì, ruba l'identità di un account di servizio con le credenziali utente.
    2. In caso contrario, crea una chiave dell'account di servizio.

Tipi di autenticazione

L'autenticazione è obbligatoria per accedere alla maggior parte delle risorse e delle applicazioni. Questa documentazione supporta i professionisti tecnici che creano il 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 delinea vari "flussi" o approcci di autenticazione. In genere, l'applicazione presenta le credenziali, che rappresentano un principio (un utente o un account di servizio), in un modulo intermedio chiamato Server di autorizzazione. Il server di autorizzazione risponde con un token, che l'applicazione può utilizzare per eseguire l'autenticazione con il servizio e accedere alle risorse. Il token include uno o più ambiti, che riflettono l'accesso autorizzato all'applicazione. L'applicazione quindi presenta il token al server delle risorse per ottenere l'accesso alle risorse.

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 per risorsa. Quando esegui l'autenticazione per i 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 è in esecuzione in un ambiente problematico del token, ad esempio un'app per dispositivi mobili. In questo scenario, puoi utilizzare ambiti più dettagliati per ridurre il rischio in caso di token compromesso. Gli ambiti OAuth 2.0 vengono utilizzati anche per autorizzare l'accesso ai dati utente.

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 applicativo. Le librerie di autenticazione rendono queste credenziali disponibili per le librerie client di Cloud e le librerie client delle API di Google. Quando utilizzi ADC, il 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 codice che deve utilizzare i servizi Google Cloud, devi utilizzare l'ADC quando possibile. L'uso di ADC può semplificare il processo di sviluppo, perché ti consente di utilizzare lo stesso codice di autenticazione in una varietà di ambienti.

Prima di poter utilizzare ADC, devi fornire le tue credenziali ad ADC, in base a dove vuoi eseguire il codice. L'ADC localizza automaticamente le credenziali e ottiene un token in background, abilitando l'esecuzione del codice di autenticazione in diversi ambienti senza modifiche. Ad esempio, la stessa versione del tuo codice potrebbe autenticarsi con le API di Google Cloud durante l'esecuzione su una workstation di sviluppo o su Compute Engine.

Le tue credenziali gcloud non sono le stesse che fornisci ad ADC utilizzando lgcloud CLI. Per saperne di più, consulta Credenziali dell'interfaccia a riga di comando gcloud e credenziali ADC.

Terminologia

I seguenti termini sono importanti da 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 di determinare 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 fornisce una prova dell'identità. Password, PIN e dati biometrici possono essere tutti utilizzati come credenziali, a seconda dei requisiti dell'applicazione. Ad esempio, quando accedi al tuo Account Google, fornisci la tua password e soddisfi tutti i requisiti di autenticazione a due fattori come prova che l'account appartenga effettivamente a te e che non sei stato vittima di spoofing da parte di un utente malintenzionato.

I token a volte vengono chiamati credenziali, ma ai fini di questa documentazione vengono indicati come oggetti digitali che dimostrano che il chiamante ha fornito le credenziali appropriate, ma non sono credenziali proprie.

Il tipo di credenziale che devi fornire dipende da ciò che vuoi autenticare. Nella console Google Cloud puoi creare i seguenti tipi di credenziali:

  • Chiavi API

    A differenza di altre credenziali, le chiavi API non identificano un dominio. Le chiavi API forniscono un progetto Google Cloud a scopo di fatturazione e quota.

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

  • ID client OAuth

    Gli ID client OAuth vengono utilizzati per identificare un'applicazione in Google. Questo è necessario quando vuoi accedere a risorse di proprietà dei tuoi utenti finali, chiamate anche OAuth a tre vie (3LO). Per saperne di più 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. Puoi utilizzarli entrambi, in fasi diverse del progetto o in ambienti di sviluppo diversi.

Account utente

Gli account utente rappresentano uno sviluppatore, un amministratore o un'altra persona che interagisce con le API e i servizi di 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à della forza lavoro.

Con un account utente, puoi autenticarti nei servizi e nelle API di Google nei seguenti modi:

Per una panoramica dei 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. Forniscono un modo per gestire l'autenticazione e l'autorizzazione quando un essere umano non è coinvolto direttamente, ad esempio quando un'applicazione ha bisogno di accedere alle risorse di Google Cloud. Gli account di servizio sono gestiti da IAM.

Il seguente elenco fornisce alcuni metodi per utilizzare un account di servizio al fine di eseguire l'autenticazione per le API e i servizi Google, dal più sicuro al meno sicuro. Per saperne di più, consulta Scegliere il metodo di autenticazione corretto per il tuo 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 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 scambiate con quel token. Il token contiene informazioni sull'identità dell'entità che effettua la richiesta e sul tipo di accesso che è autorizzato a eseguire.

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, riceverai una chiave che ti consente di accedere a risorse specifiche dell'hotel. Ad esempio, la chiave potrebbe consentirti di accedere alla tua camera e all'ascensore, ma non a qualsiasi altra stanza o ascensore di servizio.

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

Carico di lavoro e forza lavoro

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

La federazione delle identità per i carichi di lavoro ti 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à della forza lavoro ti consente di utilizzare un provider di identità esterno per autenticare e autorizzare una forza lavoro (un gruppo di utenti, ad esempio dipendenti, partner e contrattisti), che utilizza IAM, in modo che gli utenti possano accedere ai servizi Google Cloud.

Passaggi successivi