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 Kundenservicemitarbeiter freizugeben, die Identity-Aware Proxy (IAP) aktivieren, aber nicht auf die Seite „Anmeldedaten“ zugreifen 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

Sie können einen neuen OAuth-Client erstellen, indem Sie die Schritte unter OAuth-Client erstellen ausführen. Alternativ können Sie auch einen vorhandenen OAuth-Client verwenden.

Programmatischer Zugriff

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

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

    Sie können eine Liste von OAuth-Client-IDs auf die Zulassungsliste setzen, die zu Ihrer Organisation gehören und für die Sie programmgesteuerten Zugriff auf die Anwendung gewähren möchten.

    Sie können OAuth-Clients auf Ressourcen- und Dienstebene 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. Verwende den Befehl gcloud iap settings set, um OAuth-Clients auf einer 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 in 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 Webressourcen innerhalb eines Projekts 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 in einem 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 compute oder app-engine ist.
      • VERSION: Der Versionsname. Dies gilt nicht für compute und ist optional, wenn resource-type = app-engine ist.

    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 Feld „Name“ aus der Ausgabe.
      Sie benötigen den Namen im nächsten Schritt.

      gcloud iap settings get [--organization=ORGANIZATION --folder=FOLDER --project=PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION]
      
    3. Ersetzen Sie im folgenden Befehl RESOURCE_NAME durch den Namen aus dem vorherigen Schritt. Die 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. Weitere Informationen finden Sie unter Programmatische Authentifizierung.

Browserzugriff

Führen Sie die folgenden Schritte aus, um IAP zu ermöglichen, Ihre Client-ID und Ihr Secret über die Google Cloud Console zu verwenden.

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.