Come condividere i client OAuth

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.

  1. 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

    1. 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
      
    2. 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=VERSION
      

      Comandi 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=ORGANIZATION
        

      Per 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=FOLDER
        

      Per 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_web
        

      Per 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=SERVICE
        

      Sostituisci 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 o folder.
      • SERVICE: il nome del servizio. Questa opzione è facoltativa quando il valore di resource-type è compute o app-engine.
      • VERSION: il nome della versione. Questo non è applicabile per compute ed è facoltativo quando resource-type è app-engine.

    API

    1. 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
      
    2. 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]
      
    3. Sostituisci RESOURCE_NAME nel comando seguente con il nome del passaggio precedente. La 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"
      
  2. 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.

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.