In questa pagina viene spiegato come condividere un client OAuth con un'altra app all'interno della tua organizzazione.
Panoramica
La condivisione di client OAuth tra progetti elimina la necessità di creare manualmente un nuovo client OAuth per ogni app nella tua organizzazione. Dopo aver creato manualmente un client OAuth, puoi assegnarlo in modo programmatico a più app.
La condivisione del client OAuth viene utilizzata anche per condividere un client OAuth con gli agenti che vuoi che siano in grado di abilitare Identity-Aware Proxy (IAP) ma che non hanno accesso alla pagina Credenziali.
La condivisione del client OAuth viene utilizzata anche quando l'applicazione utilizza un client OAuth gestito da Google per il flusso del browser e vuoi abilitare l'accesso programmatico all'applicazione.
Prima di iniziare
Crea un nuovo client OAuth completando i passaggi descritti in Creazione di client OAuth. In alternativa, puoi utilizzare un client OAuth esistente.
Accesso programmatico
Questa sezione descrive i passaggi per attivare un client OAuth per l'accesso programmatico alla tua applicazione.
Inserisci i client OAuth nella lista consentita per l'accesso programmatico.
Puoi inserire nella lista consentita un elenco di ID client OAuth di proprietà della tua organizzazione e che vuoi concedere all'applicazione l'accesso programmatico.
Puoi inserire i client OAuth nella lista consentita per risorse e servizi a livello di organizzazione, progetto e cartella.
gcloud
Esegui questo comando per preparare un file
SETTING_FILE
. Aggiorna i valori in base alle esigenze.cat << EOF > SETTING_FILE access_settings: oauth_settings: programmatic_clients: ["clientId1", "clientId2", ..] EOF
Utilizza il comando
gcloud iap settings set
per inserire i client OAuth nella lista consentita del livello che preferisci.gcloud iap settings set
SETTING_FILE
[--organization=ORGANIZATION --folder=FOLDER --project=/PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSIONComandi di esempio:
Per inserire gli ID client OAuth nella lista consentita delle risorse all'interno di un'organizzazione, esegui questo comando.
gcloud iap settings set
SETTING_FILE
--organization=ORGANIZATIONPer inserire gli ID client OAuth nella lista consentita delle risorse all'interno di una cartella, esegui questo comando.
gcloud iap settings set
SETTING_FILE
--folder=FOLDERPer inserire gli ID client OAuth nella lista consentita di tutte le risorse di tipo web all'interno di un progetto, esegui questo comando.
gcloud iap settings set
SETTING_FILE
--project=PROJECT --resource-type=iap_webPer inserire gli ID client OAuth nella lista consentita di un servizio App Engine all'interno di un progetto, esegui questo comando.
gcloud iap settings set
SETTING_FILE
--project=PROJECT --resource-type=app-engine --service=SERVICESostituisci quanto segue:
- FOLDER: l'ID cartella.
- ORGANIZATION: l'ID organizzazione.
- PROJECT: l'ID progetto.
- RESOURCE_TYPE: il tipo di risorsa IAP. Deve essere
app-engine
,iap_web
,compute
,organization
ofolder
. - SERVICE: nome del servizio. Questa azione è facoltativa quando
resource-type
ècompute
oapp-engine
. - VERSION: il nome della versione. Non è applicabile per
compute
ed è facoltativa quandoresource-type
èapp-engine
.
API
Esegui questo comando per preparare un file
iap_settings.json
. Aggiorna i valori in base alle esigenze.cat << EOF > iap_settings.json { "access_settings": { "oauth_settings": { programmatic_clients: ["clientId1", "clientId2", ..] } } } EOF
Ottieni il nome della risorsa eseguendo il comando
gcloud iap settings get
. Copia il campo del nome dall'output.
Ti servirà nel passaggio successivo.gcloud iap settings get [--organization=ORGANIZATION --folder=FOLDER --project=PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION]
Sostituisci
RESOURCE_NAME
nel comando seguente con il nome del passaggio precedente. Il campoIapSettings
verrà aggiornato.curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @iap_settings.json \ "https://iap.googleapis.com/v1/RESOURCE_NAME:iapSettings?updateMask=iapSettings.accessSettings.oauthSettings.programmaticClients"
Accedi all'applicazione utilizzando uno qualsiasi degli ID client OAuth inclusi nella lista consentita. Vedi Autenticazione programmatica.
Accesso browser
Per abilitare IAP all'utilizzo del tuo ID client e del tuo secret mediante la console Google Cloud, segui le istruzioni riportate di seguito.
- Configurare il client OAuth per Compute Engine (Compute Engine)
- Configurare il client OAuth per Google Kubernetes Engine (GKE)
- Configurare il client OAuth per App Engine
- Configurare il client OAuth per Cloud Run
Rischi
Anche se la condivisione di un client tra le tue app è comoda, ci sono dei rischi. Questa sezione illustra i potenziali rischi legati alla condivisione dei clienti e spiega come mitigarli.
Single point of failure
L'utilizzo di un solo client OAuth per molte app crea un single point of failure. Se un client viene eliminato o modificato in modo errato, questa operazione influisce su tutte le app che lo utilizzano.
Per mitigare questo problema, condividi i client solo quando soddisfi un caso d'uso importante per client condivisi.
Fughe di client secret
Per condividere un client, è necessario condividere il client secret con persone e script. Ciò aumenta il rischio di fuga del client secret. IAP non è in grado di distinguere tra i token creati dalla tua app e quelli creati da un client secret divulgato.
L'accesso alle risorse IAP può essere monitorato con Cloud Audit Logging. Se ritieni che sia possibile che il tuo client secret sia stato divulgato, reimpostalo dalla pagina Credenziali.
Per ridurre questo rischio, proteggi i client secret come una password. Limita la loro 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 per l'autenticazione IAP nel suo dominio per assumere l'identità di 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 garantire che IAP non autorizzi l'accesso anche se un utente impersonato viene autenticato.
Raccolta identità utente
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. Viene attivato quando gli utenti visitano l'app dannosa.
Quando un utente accede per la prima volta a un'app protetta da IAP, gli viene chiesto di condividere la sua identità con l'app. In questo modo, gli utenti hanno il controllo sulle loro informazioni personali. Quando un utente acconsente a condividere la propria identità, il sistema di accesso di Google registra tale consenso. IAP non chiederà nuovamente all'utente di ricevere richieste successive da qualsiasi ID client nello stesso progetto.
L'identità di tutti gli utenti che hanno acconsentito a condividere la propria identità con la tua app e che visitano l'app dannosa vedranno subito la propria identità condivisa senza il suo consenso.