Come condividere i client OAuth

In questa pagina viene spiegato come condividere un client OAuth con un'altra app all'interno della tua organizzazione.

Panoramica

La condivisione dei client OAuth tra progetti elimina la necessità di creare manualmente un nuovo client OAuth per ogni app della tua organizzazione. Dopo aver creato manualmente un client OAuth, puoi assegnarlo a livello di programmazione a più app.

La condivisione del client OAuth viene utilizzata anche per condividere un client OAuth predefinito con gli agenti che vuoi essere in grado di attivare Identity-Aware Proxy (IAP) ma non hai accesso alla pagina Credenziali.

Tieni presente che le app per dispositivi mobili non possono eseguire l'autenticazione con i client OAuth di un altro progetto.

Prima di iniziare

Segui una delle guide di seguito per abilitare IAP per un'app e creare un client OAuth.

Tieni presente che la condivisione con App Engine al momento non è supportata.

Assegnazione di un client condiviso ad app Compute Engine

  1. Vai alla pagina Gruppi di istanze per assicurarti che le istanze si trovino in un gruppo di istanze.
  2. Definisci i servizi di backend.
  3. Configurare il bilanciamento del carico.
  4. Utilizzando lo strumento a riga di comando gcloud, esegui gcloud auth login.
  5. Segui l'URL che sembra accedere.
  6. Dopo aver eseguito l'accesso, copia il codice di verifica visualizzato e incollalo nella riga di comando.
  7. Esegui gcloud config set project PROJECT_ID per il progetto per cui vuoi abilitare IAP.
  8. Per abilitare IAP, utilizza l'ID e il secret del client condiviso nella pagina Credenziali ed esegui il comando seguente:

    gcloud compute backend-services update BACKEND_SERVICE_NAME  \
       --global --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    

Assegnazione di un client condiviso ad app GKE

Segui i passaggi per configurare il file BackendConfig della tua app. Utilizza l'ID e il secret del client condiviso quando esegui il comando seguente:

kubectl create secret generic my-secret --from-literal=client_id=CLIENT_ID \
    --from-literal=client_secret=CLIENT_SECRET

Rischi

Condividere un client tra le app è pratico, ma ci sono dei rischi. Questa sezione illustra i potenziali rischi quando condividi i clienti e come mitigarli.

Singolo punto di errore

L'utilizzo di un client OAuth per molte app crea un single point of failure. Se un client viene eliminato o modificato in modo errato, ogni app che utilizza quel client è interessata.

Per mitigare questo limite, condividi i clienti solo se soddisfano un caso d'uso importante per i clienti condivisi.

Perdite di secret del client

La condivisione di un client richiede la condivisione del segreto del client con persone e script. Ciò aumenta il rischio di fuga dei secret del client. IAP non è in grado di distinguere tra i token creati dalla tua app e quelli creati da un client secret divulgato.

L'accesso alle tue risorse IAP può essere monitorato con l'audit logging di Cloud. Se ritieni che ci sia la possibilità che il tuo client abbia trapelato, reimpostalo dalla pagina Credenziali.

Per attenuare questo rischio, proteggere i client secret come una password. Limitare la condivisione e non archiviarli mai come testo non crittografato.

Furto d'identità di utenti autorizzati

Se il tuo client secret viene divulgato, un'app dannosa può impostare il cookie del browser di autenticazione IAP nel proprio dominio per impersonare un utente autorizzato. Con questo cookie, IAP autentica l'utente impersonato per tutte le app che condividono il client secret divulgato.

Per ridurre questo rischio, evita di condividere i client tra risorse che condividono anche utenti autorizzati. Imposta le autorizzazioni per risorsa per assicurarti che, anche se un utente impersonato sia autenticato, IAP non autorizza l'accesso.

Raccolta delle identità degli utenti

Se il tuo client secret viene divulgato, un'app dannosa può utilizzare il tuo ID client per raccogliere le identità degli utenti della tua app. Si attiva quando gli utenti visitano l'app dannosa.

Quando un utente accede a un'app protetta da IAP per la prima volta, gli viene chiesto di condividere la sua identità con l'app. In questo modo, gli utenti possono controllare le proprie informazioni personali. Quando un utente acconsente alla condivisione della propria identità, il sistema di accesso Google registra il consenso. Gli IAP riceveranno nuovamente l'utente nelle richieste successive da qualsiasi ID client nello stesso progetto.

Qualsiasi utente che abbia acconsentito a condividere la propria identità con la tua app e che visiti l'app dannosa verrà condivisa immediatamente, senza il suo consenso.