Questa pagina spiega come condividere un client OAuth con un'altra app all'interno di dell'organizzazione.
Panoramica
La condivisione di client OAuth tra progetti elimina la necessità di creare manualmente un nuovo client OAuth per ogni app nell'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 abilitare Identity-Aware Proxy (IAP) ma non Avere accesso alla pagina Credenziali.
La condivisione del client OAuth viene utilizzata anche quando l'applicazione utilizza un account utente Client OAuth per il flusso del browser e a cui vuoi attivare l'accesso programmatico per l'applicazione.
Prima di iniziare
Crea un nuovo client OAuth completando i passaggi descritti in Creazione di client OAuth oppure puoi utilizzare un client OAuth esistente.
Accesso programmatico
Questa sezione descrive i passaggi per attivare un client OAuth per l'accesso programmatico all'applicazione.
Autorizzare l'accesso programmatico dei client OAuth.
Puoi inserire nella lista consentita un elenco di ID client OAuth di proprietà della tua organizzazione e a cui vuoi fornire accesso programmatico all'applicazione.
Puoi inserire nella lista consentita i client OAuth 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 nella lista consentita i client OAuth al 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 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 tipi 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: il nome del servizio. Questa opzione è facoltativa quando il valore di
resource-type
ècompute
oapp-engine
. - VERSION: il nome della versione. Questo non è applicabile per
compute
ed è facoltativo 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
Esegui il comando
gcloud iap settings get
per ottenere il nome della risorsa. Copia il campo del nome dall'output.
Dovrai utilizzare 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 comando seguente con il nome del passaggio precedente. LaIapSettings
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 consentiti. Consulta Autenticazione programmatica.
Accesso tramite browser
Per abilitare IAP in modo che utilizzi il tuo ID client e il tuo secret mediante la console Google Cloud, completa le istruzioni riportate di seguito.
- Configura un client OAuth per Compute Engine (Compute Engine)
- Configurare un client OAuth per Google Kubernetes Engine (GKE)
- Configura client OAuth per App Engine
- Configura client OAuth per Cloud Run
Rischi
La condivisione di un client tra le tue app è comoda, ma ci sono dei rischi. Questa sezione illustra i potenziali rischi derivanti dalla condivisione dei clienti e come mitigarli che li rappresentano.
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, tutte le app che lo utilizzano ne sono interessate.
Per mitigare questo problema, condividi i clienti solo se devi soddisfare un caso d'uso importante per i clienti condivisi.
Perdita 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 riesci a distinguere tra i token creati dalla tua app e i token creato da un client secret divulgato.
L'accesso alle tue risorse IAP può essere monitorato con Cloud Audit Logging. Se ritieni che sia possibile che il tuo client secret sia trapelato, reimpostalo da alla pagina Credenziali.
Per ridurre questo rischio, proteggi i client secret come una password. Limitare la condivisione e non li archiviano mai come testo non crittografato.
Simulazione di utenti autorizzati
Se il tuo client secret viene divulgato, un'app dannosa può impostare il il cookie del browser di autenticazione IAP sul proprio dominio si tratta di un utente autorizzato. Con questo cookie, IAP Autentica l'utente impersonato per tutte le app che condividono il client divulgato il secret.
Per ridurre questo rischio, evita di condividere i clienti tra risorse che condividono anche di utenti autorizzati. Imposta le autorizzazioni per risorsa per garantire che anche se l'utente che ha impersonato venga autenticato, IAP non autorizzerà l'accesso.
Raccolta dell'identità utente
Se il tuo client secret viene divulgato, un'app dannosa può utilizzare il tuo ID client per Raccogliere le identità degli utenti dell'app. Viene attivato quando i tuoi utenti visitano l'app dannosa.
Quando un utente accede a un'app protetta da IAP per la prima volta, viene chiesto di condividere la propria identità con l'app. Ciò consente di controllo delle informazioni personali da parte degli utenti. Quando un utente acconsente alla condivisione. la propria identità, il sistema di accesso a Google registra questo consenso. IAP non chiederà nuovamente all'utente ulteriori richieste da parte di qualsiasi ID client nello stesso progetto.
Qualsiasi utente che ha acconsentito a condividere la propria identità con la tua app e chi visita l'app dannosa vedrà immediatamente la propria identità senza il loro consenso.