Auf dieser Seite wird beschrieben, wie Sie einen OAuth-Client für eine andere Anwendung in Ihrer Organisation freigeben.
Übersicht
Wenn Sie OAuth-Clients zwischen Projekten freigeben, verwenden Sie einen einzelnen, benutzerdefinierten OAuth-Client für mehrere durch Identity-Aware Proxy (IAP) geschützte Anwendungen, anstatt für jede Anwendung einen neuen OAuth-Client zu erstellen. Dieser Ansatz vereinfacht die Verwaltung, insbesondere für Organisationen mit vielen Anwendungen.
Beim Konfigurieren von IAP können Sie einen von zwei OAuth-Clienttypen verwenden:
Von Google verwalteter OAuth-Client: IAP verwendet diesen standardmäßig automatisch. Für diese integrierte Option ist keine manuelle Clienterstellung erforderlich, sie hat jedoch zwei wichtige Einschränkungen:
Nur Nutzer innerhalb Ihrer Organisation (interne Nutzer) haben Zugriff.
Auf dem Zustimmungsbildschirm wird das Branding von Google Cloud anstelle des Brandings Ihrer Organisation angezeigt.
Benutzerdefinierter OAuth-Client: Sie erstellen und verwalten diesen selbst. Diese Option:
Kann von mehreren Anwendungen gemeinsam genutzt werden
Ermöglicht die Anpassung des Brandings auf dem Zustimmungsbildschirm
Unterstützt den Zugriff für externe Nutzer (außerhalb Ihrer Organisation)
Wenn Sie einen benutzerdefinierten OAuth-Client erstellen, können Sie ihn flexibel mit einer einzelnen Anwendung verwenden oder für mehrere Anwendungen freigeben. Die Freigabe eines benutzerdefinierten OAuth-Clients bietet mehrere Vorteile:
Reduziert den Verwaltungsaufwand für die Verwaltung mehrerer Clients
Vereinfacht die Aktivierung von IAP für Teammitglieder, die keinen Zugriff auf die Seite „Anmeldedaten“ haben sollten
Ermöglicht den programmatischen Zugriff (nicht über den Browser) auf Anwendungen, die durch IAP geschützt sind
Informationen zum Erstellen von OAuth-Clients finden Sie unter OAuth-Clients für IAP erstellen. Weitere Informationen zu von Google verwalteten OAuth-Clients finden Sie unter OAuth-Konfiguration anpassen, um IAP zu aktivieren.
Hinweis
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
Konfigurieren Sie OAuth-Clients für den programmatischen Zugriff, damit sich nicht browserbasierte Anwendungen bei Ihren IAP-geschützten Ressourcen authentifizieren können. So können Skripts, automatisierte Jobs und Backend-Dienste sicher auf Ihre geschützten Anwendungen zugreifen, ohne dass sich ein Nutzer interaktiv anmelden muss.
Sie können diese Authentifizierungseinstellungen auf jeder Ebene Ihrer Ressourcenhierarchie anwenden: Organisation, Ordner oder Projekt.
Eine Anleitung zur Implementierung finden Sie im Leitfaden zur programmatischen Authentifizierung und in der Dokumentation zur Verwaltung von IAP-Einstellungen.
gcloud
Bereiten Sie eine Einstellungsdatei mit Ihren OAuth-Client-IDs vor:
cat << EOF > SETTINGS_FILENAME access_settings: oauth_settings: programmatic_clients: [clientId1, clientId2, ..] EOFWenden Sie die Einstellungen mit dem Befehl
gcloud iap settings setan:gcloud iap settings set SETTINGS_FILENAME \ [--organization=ORGANIZATION | --folder=FOLDER | --project=PROJECT] \ [--resource-type=RESOURCE_TYPE] \ [--service=SERVICE] \ [--version=VERSION]Beispiele für Befehle:
# Organization level gcloud iap settings set SETTINGS_FILENAME --organization=ORGANIZATION # Folder level gcloud iap settings set SETTINGS_FILENAME --folder=FOLDER # Project level (web resources) gcloud iap settings set SETTINGS_FILENAME \ --project=PROJECT \ --resource-type=iap_web # App Engine service in a project gcloud iap settings set SETTINGS_FILENAME \ --project=PROJECT \ --resource-type=app-engine \ --service=SERVICEWobei:
SETTINGS_FILENAME: Die von Ihnen vorbereitete YAML-Datei.
ORGANIZATION: Die Organisations-ID
FOLDER: Die Ordner-ID
PROJECT: die Projekt-ID
RESOURCE_TYPE: Der IAP-Ressourcentyp (
app-engine,iap_web,compute,organizationoderfolder)SERVICE: Der Dienstname (optional für die Ressourcentypen
computeoderapp-engine)VERSION: Der Versionsname (gilt nicht für
compute, optional fürapp-engine)
API
Bereiten Sie eine JSON-Datei mit den Einstellungen vor:
cat << EOF > iap_settings.json { "access_settings": { "oauth_settings": { programmatic_clients: [clientId1, clientId2, ..] } } } EOFRufen Sie den Ressourcennamen ab:
gcloud iap settings get \ [--organization=ORGANIZATION | --folder=FOLDER | --project=PROJECT] \ [--resource-type=RESOURCE_TYPE] \ [--service=SERVICE] \ [--version=VERSION]Aktualisieren Sie die Einstellungen mit dem Ressourcennamen:
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"Wobei:
ORGANIZATION: Die Organisations-ID
FOLDER: Die Ordner-ID
PROJECT: die Projekt-ID
RESOURCE_TYPE: Der IAP-Ressourcentyp (
app-engine,iap_web,compute,organizationoderfolder)SERVICE: Der Dienstname (optional für die Ressourcentypen
computeoderapp-engine)VERSION: Der Versionsname (gilt nicht für
compute, optional fürapp-engine)
Melden Sie sich nach der Konfiguration mit einer der von Ihnen konfigurierten OAuth-Client-IDs in der Anwendung an. Weitere Informationen finden Sie unter Programmatische Authentifizierung.
Browserzugriff
Führen Sie die folgenden Schritte aus, um IAP die Verwendung Ihrer Client-ID und Ihres Secrets über dieGoogle Cloud Console zu ermöglichen:
OAuth-Client für Compute Engine konfigurieren (Compute Engine)
OAuth-Client für Google Kubernetes Engine (GKE) konfigurieren
Risiken
Die gemeinsame Nutzung eines Clients durch Ihre Anwendungen ist zwar praktisch, birgt aber 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, entsteht ein Single Point of Dependency. Wenn ein Client gelöscht oder falsch geändert wird, sind alle Anwendungen betroffen, die diesen Client verwenden. Gelöschte OAuth-Clients können innerhalb von 30 Tagen wiederhergestellt werden.
So können Sie dieses Betriebsrisiko effektiv managen:
Implementieren Sie geeignete Zugriffssteuerungen, um versehentliche Änderungen oder Löschungen zu verhindern.
Zugriff auf OAuth-Clients mit
clientauthconfig.clients.*-Berechtigungen einschränkenVerwenden Sie Google Cloud -Audit-Logs, um administrative Aktivitäten im Zusammenhang mit OAuth-Clients zu verfolgen.
Dies ist in erster Linie ein operatives Risiko und kein Sicherheitsrisiko. Bei entsprechender Zugriffssteuerung und Überwachung überwiegen die Vorteile der gemeinsamen OAuth-Clients in Bezug auf Komfort und Verwaltung in der Regel diese Überlegung.
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 zwischen Tokens unterscheiden, die von Ihrer Anwendung erstellt wurden, und Tokens, die von einem geleakten Clientschlüssel erstellt wurden.
So können Sie dieses Risiko minimieren:
Clientschlüssel wie Passwörter schützen und niemals als Nur-Text speichern
Sichere Verwaltung von Anmeldedaten mit Secret Manager implementieren
Zugriff auf Ihre IAP-Ressourcen mit Cloud-Audit-Logging überwachen
Ein geleakter Clientschlüssel wirkt sich nur auf die Authentifizierung aus, nicht auf die Autorisierung für den Zugriff auf Ressourcen. Wenn Sie vermuten, dass Ihr Secret geleakt wurde, setzen Sie es sofort zurück.
Für den programmatischen Zugriff auf IAP-geschützte Ressourcen sollten Sie die JWT-Authentifizierung für Dienstkonten verwenden, anstatt OAuth-Clientschlüssel mit einzelnen Nutzern zu teilen. Dieser Ansatz bietet eine bessere Sicherheitsisolation und behält gleichzeitig die Vorteile eines freigegebenen OAuth-Clients für Ihre Anwendungen bei.
Überlegungen zum Berechtigungsumfang
Wenn OAuth-Clients gemeinsam genutzt werden, verwenden alle Anwendungen dieselben Berechtigungsbereiche. Für IAP sind openid und email die einzigen erforderlichen Bereiche. Dieser Aspekt ist an sich kein nennenswertes Risiko, aber es ist wichtig, Folgendes zu verstehen:
OAuth wird in IAP nur für die Authentifizierung (Identitätsprüfung) verwendet. Die Autorisierung (Ressourcenzugriff) wird separat über IAM-Richtlinien abgewickelt.
Selbst wenn Authentifizierungsdaten kompromittiert werden, benötigt ein Angreifer immer noch die entsprechenden IAM-Berechtigungen, um auf geschützte Ressourcen zuzugreifen.
Wenn Sie den Client auf die erforderlichen
openid- undemail-Bereiche beschränken, können Sie potenzielle Sicherheitsrisiken minimieren.