OAuth-Clients freigeben

Auf dieser Seite wird beschrieben, wie Sie einen OAuth-Client für eine andere Anwendung in Ihrer Organisation freigeben.

Übersicht

Wenn Sie OAuth-Clients für mehrere Projekte freigeben, müssen Sie keinen neuen OAuth-Client für jede Anwendung in Ihrer Organisation manuell erstellen. Nachdem Sie einen OAuth-Client manuell erstellt haben, können Sie ihn programmatisch mehreren Anwendungen zuweisen.

Die OAuth-Clientfreigabe wird auch verwendet, um einen OAuth-Client für Agents freizugeben, die Identity-Aware Proxy (IAP) aktivieren, aber keinen Zugriff auf die Seite „Anmeldedaten“ haben sollen.

Die OAuth-Clientfreigabe wird auch verwendet, wenn die Anwendung einen von Google verwalteten OAuth-Client für den Browserablauf verwendet und Sie programmatischen Zugriff auf die Anwendung aktivieren möchten.

Hinweise

Erstellen Sie einen neuen OAuth-Client, indem Sie die Schritte unter OAuth-Client erstellen ausführen, oder verwenden Sie einen vorhandenen OAuth-Client.

Programmatischer Zugriff

In diesem Abschnitt wird beschrieben, wie Sie einen OAuth-Client für den programmatischen Zugriff auf Ihre Anwendung aktivieren.

  1. OAuth-Clients für den programmatischen Zugriff auf die Zulassungsliste setzen

    Sie können eine Liste der OAuth-Client-IDs Ihrer Organisation auf die Zulassungsliste setzen und programmatischen Zugriff auf die Anwendung gewähren.

    Sie können die OAuth-Clients für Ressourcen und Dienste auf Organisations-, Projekt- und Ordnerebene auf die Zulassungsliste setzen.

    gcloud

    1. Führen Sie den folgenden Befehl aus, um eine SETTING_FILE-Datei vorzubereiten. Aktualisieren Sie die Werte nach Bedarf.

        cat << EOF > SETTING_FILE
          access_settings:
            oauth_settings:
              programmatic_clients: ["clientId1", "clientId2", ..]
        EOF
      
    2. Verwenden Sie den Befehl gcloud iap settings set, um OAuth-Clients auf der gewünschten Ebene auf die Zulassungsliste zu setzen.

      gcloud iap settings set SETTING_FILE [--organization=ORGANIZATION --folder=FOLDER --project=/PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION
      

      Beispielbefehle:

      Führen Sie den folgenden Befehl aus, um OAuth-Client-IDs für die Ressourcen innerhalb einer Organisation auf die Zulassungsliste zu setzen.

        gcloud iap settings set SETTING_FILE --organization=ORGANIZATION
        

      Führen Sie den folgenden Befehl aus, um OAuth-Client-IDs für die Ressourcen in einem Ordner auf die Zulassungsliste zu setzen.

        gcloud iap settings set SETTING_FILE --folder=FOLDER
        

      Führen Sie den folgenden Befehl aus, um OAuth-Client-IDs für alle Webtypressourcen in einem Projekt auf die Zulassungsliste zu setzen.

        gcloud iap settings set SETTING_FILE --project=PROJECT --resource-type=iap_web
        

      Führen Sie den folgenden Befehl aus, um OAuth-Client-IDs für einen App Engine-Dienst innerhalb eines Projekts auf die Zulassungsliste zu setzen.

        gcloud iap settings set SETTING_FILE --project=PROJECT --resource-type=app-engine --service=SERVICE
        

      Ersetzen Sie Folgendes:

      • FOLDER: die Ordner-ID.
      • ORGANIZATION: Die Organisations-ID.
      • PROJECT: die Projekt-ID
      • RESOURCE_TYPE: Der IAP-Ressourcentyp. Muss app-engine, iap_web, compute, organization oder folder sein.
      • SERVICE: Der Dienstname. Dies ist optional, wenn resource-type den Wert compute oder app-engine hat.
      • VERSION: Der Versionsname. Dies gilt nicht für compute und ist optional, wenn resource-type den Wert app-engine hat.

    API

    1. Führen Sie den folgenden Befehl aus, um eine iap_settings.json-Datei vorzubereiten. Aktualisieren Sie die Werte nach Bedarf.

      cat << EOF > iap_settings.json
      {
        "access_settings": {
            "oauth_settings": {
                programmatic_clients: ["clientId1", "clientId2", ..]
              }
          }
      }
      EOF
      
    2. Rufen Sie den Ressourcennamen mit dem Befehl gcloud iap settings get ab. Kopieren Sie das Namensfeld aus der Ausgabe.
      Sie benötigen den Namen im folgenden Schritt.

      gcloud iap settings get [--organization=ORGANIZATION --folder=FOLDER --project=PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION]
      
    3. Ersetzen Sie RESOURCE_NAME im folgenden Befehl durch den Namen aus dem vorherigen Schritt. IapSettings wird aktualisiert.

      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. Melden Sie sich mit einer der OAuth-Client-IDs auf der Zulassungsliste in der Anwendung an. Siehe Programmatische Authentifizierung.

Browserzugriff

Führen Sie die folgenden Schritte aus, damit IAP über die Google Cloud Console Ihre Client-ID und Ihr Secret verwenden kann.

Risiken

Es ist zwar bequem, einen Client für mehrere Anwendungen freizugeben, aber es birgt auch Risiken. In diesem Abschnitt wird beschrieben, welche potenziellen Risiken bei der gemeinsamen Nutzung von Clients bestehen und wie sie reduziert werden können.

Single Point Of Failure

Wenn Sie einen OAuth-Client für viele Anwendungen verwenden, wird ein Single Point Of Failure erstellt. Wird ein Client fälschlicherweise gelöscht oder geändert, hat dies Auswirkungen auf jede Anwendung, die diesen Client verwendet.

Nutzen Sie die Clientfreigabe nur bei einem entsprechenden wichtigen Anwendungsfall, um dieses Risiko zu verringern.

Schwachstellen bei Clientschlüsseln

Damit Sie einen Client freigeben können, müssen Sie Ihren Clientschlüssel für andere Personen und Skripts freigeben. Dadurch sind Ihre Clientschlüssel einem größeren Risiko ausgesetzt, in falsche Hände zu gelangen. IAP kann nicht unterscheiden, ob Tokens von Ihrer Anwendung oder aus einem gehackten Clientschlüssel erstellt wurden.

Der Zugriff auf Ihre IAP-Ressourcen kann mit Cloud-Audit-Logging überwacht werden. Wenn Sie befürchten, dass Ihr Clientschlüssel gehackt wurde, setzen Sie ihn auf der Seite "Anmeldedaten" zurück.

Schützen Sie den Clientschlüssel wie ein Passwort, um dieses Risiko zu verringern. Beschränken Sie die Freigabe und speichern Sie ihn niemals als Klartext.

Imitierung der Identität autorisierter Nutzer

Wenn Ihr Clientschlüssel in falsche Hände geraten ist, kann eine schädliche Anwendung das Cookie des IAP-Authentifizierungsbrowsers in seiner Domain so einstellen, dass es die Identität eines berechtigten Nutzers vortäuscht. Mit diesem Cookie authentifiziert IAP dann den Nutzer, dessen Identität imitiert wurde, für alle Anwendungen, die den gehackten Clientschlüssel gemeinsam nutzen.

Um dieses Risiko zu verringern, sollten Sie die gemeinsame Nutzung von Clients durch Ressourcen, die auch gemeinsame autorisierte Nutzer haben, vermeiden. Legen Sie Berechtigungen pro Ressource fest. Damit gewährleisten Sie, dass IAP den Zugriff auch dann nicht autorisiert, wenn ein imitierter Nutzer authentifiziert wurde.

Diebstahl von Nutzeridentitäten

Wenn Ihr Clientschlüssel gehackt wurde, kann eine schädliche Anwendung mit Ihrer Client-ID die Identitäten der Nutzer Ihrer Anwendung auslesen. Dies erfolgt, wenn Nutzer die schädliche Anwendung aufrufen.

Wenn ein Nutzer zum ersten Mal auf eine durch IAP gesicherte Anwendung zugreift, wird er aufgefordert, seine Identität für die Anwendung freizugeben. So haben Nutzer die Kontrolle über ihre personenbezogenen Daten. Wenn ein Nutzer der Freigabe seiner Identität zustimmt, speichert das Google-Anmeldesystem diese Zustimmung. IAP fordert dann den Nutzer bei nachfolgenden Anfragen von Client-IDs im selben Projekt nicht mehr auf.

Jeder Nutzer, der seine Identität für Ihre Anwendung freigibt und die schädliche Anwendung aufruft, gibt ohne seine Zustimmung sofort seine Identität an diese weiter.