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 programmaticamente a più app.
La condivisione dei client OAuth viene utilizzata anche per condividere un client OAuth con gli agenti che devono poter attivare Identity-Aware Proxy (IAP), ma non devono avere 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 attivare l'accesso programmatico all'applicazione.
Prima di iniziare
Crea un nuovo client OAuth completando i passaggi descritti in Creazione del client OAuth oppure utilizza un client OAuth esistente.
Accesso programmatico
Questa sezione descrive i passaggi per attivare un client OAuth per l'accesso programmatico alla tua applicazione.
Aggiungi alla lista consentita i client OAuth per l'accesso programmatico.
Puoi inserire nella lista consentita un elenco di ID client OAuth di proprietà della tua organizzazione a cui vuoi fornire l'accesso programmatico all'applicazione.
Puoi inserire nella lista consentita i client OAuth per le risorse e i servizi a livello di organizzazione, progetto e cartella.
gcloud
Esegui il comando seguente 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 nella lista consentita i client OAuth a un livello desiderato.gcloud iap settings set
SETTING_FILE
[--organization=ORGANIZATION --folder=FOLDER --project=/PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSIONComandi di esempio:
Per inserire nella lista consentita gli ID client OAuth nelle risorse di un'organizzazione, esegui il seguente comando.
gcloud iap settings set
SETTING_FILE
--organization=ORGANIZATIONPer inserire nella lista consentita gli ID client OAuth nelle risorse all'interno di una cartella, esegui il seguente comando.
gcloud iap settings set
SETTING_FILE
--folder=FOLDERPer inserire nella lista consentita gli ID client OAuth in tutte le risorse di tipo web all'interno di un progetto, esegui il seguente comando.
gcloud iap settings set
SETTING_FILE
--project=PROJECT --resource-type=iap_webPer inserire nella lista consentita gli ID client OAuth in un servizio App Engine all'interno di un progetto, esegui il seguente 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: il nome del servizio. Questa opzione è facoltativa quando
resource-type
ècompute
oapp-engine
. - VERSION: il nome della versione. Questo valore non è applicabile per
compute
ed è facoltativo quandoresource-type
èapp-engine
.
API
Esegui il comando seguente 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à il nome 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 seguente comando con il nome del passaggio precedente.IapSettings
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 degli ID client OAuth inclusi nella lista consentita. Consulta la sezione Autenticazione programmatica.
Accesso da browser
Per consentire a IAP di utilizzare il tuo ID client e il tuo secret utilizzando 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
Sebbene la condivisione di un client tra le app sia comoda, presenta dei rischi. Questa sezione illustra i potenziali rischi della condivisione dei clienti e come ridurli.
Single point of failure
L'utilizzo di un client OAuth per molte app crea un singolo punto di errore. Se un client viene eliminato o modificato in modo errato, tutte le app che lo utilizzano sono interessate.
Per ridurre il problema, condividi i clienti solo quando è necessario soddisfare un caso d'uso importante per i clienti condivisi.
Fughe di client secret
La condivisione di un client richiede la condivisione del client secret con persone e script. Ciò aumenta il rischio di fuga del client secret. IAP non è in grado di distinguere i token creati dalla tua app da quelli creati da un client secret compromesso.
L'accesso alle risorse IAP può essere monitorato con Cloud Audit Logging. Se ritieni che il tuo client secret possa essere stato compromesso, reimpostalo dalla pagina Credenziali.
Per ridurre questo rischio, proteggi i client secret come una password. Limita la loro condivisione e non archiviarli mai in testo non criptato.
Utilizzo dell'identità di utenti autorizzati
Se il tuo client secret viene divulgato, un'app dannosa può impostare il cookie del browser di autenticazione IAP sul proprio dominio per impersonare un utente autorizzato. Con questo cookie, IAP autentica l'utente sostituito per tutte le app che condividono il segreto client compromesso.
Per ridurre questo rischio, evita di condividere i client tra risorse che condividono anche gli utenti autorizzati. Imposta le autorizzazioni per risorsa per assicurarti che, anche se un utente sostituito viene autenticato, IAP non autorizzi l'accesso.
Raccolta delle identità utente
Se il client secret viene compromesso, un'app dannosa può utilizzare il tuo ID client per raccogliere le identità degli utenti della tua app. Si attiva quando i tuoi 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 propria identità con l'app. In questo modo, gli utenti hanno il controllo sulle proprie informazioni personali. Quando un utente acconsente a condividere la sua identità, il sistema di accesso di Google registra questo consenso. IAP non chiederà di nuovo all'utente di confermare le richieste successive da qualsiasi ID client nello stesso progetto.
L'identità di qualsiasi utente che ha dato il consenso a condividerla con la tua app e che visita l'app dannosa verrà condivisa immediatamente senza il suo consenso.