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.
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
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
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=VERSIONBeispielbefehle:
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=ORGANIZATIONFü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=FOLDERFü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_webFü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=SERVICEErsetzen 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
oderfolder
sein. - SERVICE: Der Dienstname. Dies ist optional, wenn
resource-type
compute
oderapp-engine
ist. - VERSION: Der Versionsname. Dies gilt nicht für
compute
und ist optional, wennresource-type
=app-engine
ist.
API
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
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]
Ersetzen Sie im folgenden Befehl
RESOURCE_NAME
durch den Namen aus dem vorherigen Schritt. DieIapSettings
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"
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.
- OAuth-Client für Compute Engine konfigurieren
- OAuth-Client für die Google Kubernetes Engine (GKE) konfigurieren
- OAuth-Client für die App Engine konfigurieren
- OAuth-Client für Cloud Run konfigurieren
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.