Auf dieser Seite wird erläutert, wie Sie Zugriffsebenen mit Access Context Manager erstellen und auf IAP-gesicherte Ressourcen (Identity-Aware Proxy) anwenden.
Übersicht
Eine Zugriffsebene ist eine Gruppe von Attributen, die Anfragen auf der Grundlage ihres Ursprungs zugewiesen werden. Mithilfe von Kriterien wie Gerätetyp, IP-Adresse oder Nutzeridentität können Sie festlegen, welche Zugriffsebene gewährt werden soll. Beispielsweise können Sie Verbindungen innerhalb Ihres Unternehmensnetzwerks die Ebene "High_Trust" zuweisen und externen Geräten, auf denen genehmigte Betriebssysteme ausgeführt werden, die Ebene "Medium_Trust".
Geräteinformationen werden gesammelt und über Zugriffsebenen referenziert, sobald Sie die Endpunktprüfung einrichten. Die Endpunktprüfung erstellt ein Inventar aller Unternehmens- und privaten Geräte, die auf Ihre Unternehmensressourcen zugreifen.
Zugriffsebenen werden erzwungen, wenn Sie sie als Bedingung der Identitäts- und Zugriffsverwaltung (IAM) für eine mit IAP gesicherte Ressource hinzufügen. Dank IAP können Sie ein detailliertes Zugriffssteuerungsmodell auf Ressourcenebene statt Firewalls auf Netzwerkebene nutzen. Beispiel: Sie können festlegen, dass die meisten Ressourcen auf der Ebene "Medium_Trust" verfügbar sind, während bestimmte sensible Ressourcen die Ebene "High_Trust" erfordern.
Weitere Informationen finden Sie in der Übersicht zum Access Context Manager.
Hinweis
Bevor Sie beginnen, müssen Sie Folgendes tun:
- Mit IAP eine Ressource sichern.
- Die Endpunktprüfung einrichten. Beachten Sie, dass dies nur erforderlich ist, wenn Sie den Zugriff auf Ressourcen auf Basis von Nutzergeräteinformationen wie dem Speicherverschlüsselungsstatus einschränken möchten.
Sie müssen für Ihr Projekt eine der folgenden Rollen gewährt haben.
- Access Context Manager-Administrator
- Access Context Manager-Bearbeiter
Zugriffsebene erstellen
Der folgende Vorgang erstellt eine Zugriffsebene.
Nehmen wir für dieses Beispiel an, Sie möchten eine Zugriffsebene erstellen, die
Gruppe interner Prüfer, die für ein Projekt auf Google Cloud Observability zugreifen können. Hierfür können Sie den Geräten der Prüfer IP-Adressen zwischen
203.0.113.0
und 203.0.113.127
in einem Subnetz zuweisen. Außerdem möchten Sie dafür sorgen, dass die Geräte verschlüsselt sind. Sie wissen, dass diesem Subnetz keine anderen Geräte als die der Prüfer zugewiesen werden.
Console
Rufen Sie in der Google Cloud Console die Seite „Access Context Manager“ auf.
Wählen Sie Ihre Organisation aus, wenn Sie dazu aufgefordert werden.
Klicken Sie oben auf der Seite Access Context Manager auf Neu.
Klicken Sie im Bereich Neue Zugriffsebene im Abschnitt Bedingungen auf Attribut hinzufügen und dort auf Geräterichtlinie.
Klicken Sie auf das Drop-down-Menü Speicherverschlüsselung und wählen Sie Verschlüsselt aus. Beachten Sie, dass diese Regel nur funktioniert, nachdem Sie auf den Geräten Ihrer Mitarbeiter die Endpunktprüfung eingerichtet haben.
Klicken Sie noch einmal auf Attribut hinzufügen und wählen Sie IP-Subnetzwerke aus.
Geben Sie in das Feld IP-Subnetzwerke einen oder mehrere Bereiche von IPv4- oder IPv6-Adressen als CIDR-Blöcke ein.
In diesem Beispiel geben Sie in das Feld IP-Subnetzwerke
203.0.113.0/25
ein, um den Zugriff auf die Prüfer zu beschränken.Klicken Sie auf Speichern.
gcloud
Erstellen Sie eine .yaml-Datei für eine Zugriffsebene und legen Sie dort einen oder mehrere Bereiche von IPv4- oder IPv6-Adressen fest, die als CIDR-Blöcke formatiert sind.
In diesem Beispiel geben Sie Folgendes in die .yaml-Datei ein, um den Zugriff nur auf die Prüfer zu beschränken:
- ipSubnetworks: - 203.0.113.0/25 - devicePolicy: allowedEncryptionStatuses - ENCRYPTED
Eine Liste der Zugriffsebenenattribute und ihres YAML-Formats finden Sie unter Zugriffsebenenattribute. In dieser Beispiel-YAML-Datei für die Zugriffsebene finden Sie eine umfassende YAML-Datei aller möglichen Attribute.
Beachten Sie, dass die Regel
devicePolicy
nur funktioniert, nachdem Sie auf den Geräten Ihrer Mitarbeiter die Endpunktprüfung eingerichtet haben.Speichern Sie die Datei. In diesem Beispiel heißt die Datei CONDITIONS.yaml.
Erstellen Sie die Zugriffsebene.
gcloud access-context-manager levels create NAME \ --title TITLE \ --basic-level-spec CONDITIONS.yaml \ --policy=POLICY_NAME
Wobei:
NAME ist der eindeutige Name für die Zugriffsebene. Dieser Name muss mit einem Buchstaben beginnen und darf nur Buchstaben, Zahlen und Unterstriche enthalten.
TITLE ist ein für Menschen lesbarer Titel. Er muss für die Richtlinie eindeutig sein.
POLICY_NAME ist der Name der Zugriffsrichtlinie Ihrer Organisation.
Die Ausgabe sollte etwa so aussehen:
Create request issued for: NAME Waiting for operation [accessPolicies/POLICY_NAME/accessLevels/NAME/create/1521594488380943] to complete...done. Created level NAME.
API
Verfassen Sie einen Anfragetext für das Erstellen einer
AccessLevel
-Ressource, die einen oder mehrere Bereiche von IPv4- oder IPv6-Adressen, die als CIDR-Blöcke formatiert sind, und eine Geräterichtlinie enthält, die verschlüsselten Speicher erfordert.In diesem Beispiel geben Sie Folgendes in den Anfragetext ein, um den Zugriff nur auf die Prüfer zu beschränken:
{ "name": "NAME", "title": "TITLE", "basic": { "conditions": [ { "ipSubnetworks": [ "203.0.113.0/25" ] }, { "devicePolicy": [ "allowedEncryptionStatuses": [ "ENCRYPTED" ] ] } ] } }
Wobei:
NAME ist der eindeutige Name für die Zugriffsebene. Dieser Name muss mit einem Buchstaben beginnen und darf nur Buchstaben, Zahlen und Unterstriche enthalten.
TITLE ist ein für Menschen lesbarer Titel. Er muss für die Richtlinie eindeutig sein.
Rufen Sie zum Erstellen der Zugriffsebene Folgendes auf:
accessLevels.create
.POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/accessLevels
Wobei:
- POLICY_NAME ist der Name der Zugriffsrichtlinie Ihrer Organisation.
Zugriffsebene anwenden
Eine IAP-gesicherte Ressource hat eine IAM-Richtlinie, die die IAP-Rolle an die Ressource bindet.
Durch das Hinzufügen einer bedingten IAM-Bindung zur IAM-Richtlinie wird der Zugriff auf Ihre Ressourcen auf der Grundlage von Anfrageattributen weiter eingeschränkt. Diese Anfrageattribute umfassen:
- Zugriffsebenen
- URL-Host/-Pfad
- Datum/Uhrzeit
Beachten Sie, dass in einer bedingten IAM-Bindung festgelegte Anfragewerte, die mit request.host
und request.path
verglichen werden, exakt angegeben werden müssen. Wenn Sie beispielsweise den Zugriff auf Pfade beschränken, die mit /internal admin
beginnen, können Sie die Beschränkung über /internal%20admin
umgehen. Weitere Informationen finden Sie unter Hostname und Pfadbedingungen verwenden.
In den folgenden Schritten wird beschrieben, wie Sie Ihre Zugriffsebene zu einer IAP-gesicherten Ressource hinzufügen. Dazu aktualisieren Sie die IAM-Richtlinie dieser Ressource.
Console
Rufen Sie die IAP-Administratorseite auf.
Rufen Sie die IAP-Administratorseite auf.
Klicken Sie auf das Kästchen neben den Ressourcen, für die Sie IAM-Berechtigungen aktualisieren möchten.
Klicken Sie auf der rechten Seite im Infobereich auf Hauptkonto hinzufügen.
Geben Sie im Feld Neues Hauptkonto die Hauptkonten ein, denen Sie eine Rolle zuweisen möchten.
Wählen Sie in der Drop-down-Liste Rolle auswählen die Rolle Nutzer IAP-gesicherter Web-Apps aus.
Wenn Sie vorhandene Zugriffsebenen festlegen möchten, wählen Sie diese in der Drop-down-Liste Zugriffsebenen aus. Sie müssen die Rolle Nutzer von IAP-gesicherten Web-Apps auswählen und Berechtigungen auf Organisationsebene haben, um vorhandene Zugriffsebenen aufrufen zu können.
Wenn Sie mehrere Zugriffsebenen auf eine Ressource anwenden, werden Nutzern Zugriff auf die Ressource, wenn sie die in mindestens einer der folgenden Bedingungen angegebenen Bedingungen erfüllen der ausgewählten Zugriffsebenen (eine logische ODER-Verknüpfung der Zugriffsebenen in der Liste). Wenn Sie möchten, dass Nutzer die Bedingungen in mehreren Zugriffsebene (eine logische UND-Verknüpfung der Zugriffsebenen) festgelegt haben, erstellen Sie eine Zugriffsebene, die mehrere Zugriffsebenen enthält.
Wenn Sie den Hauptkonten weitere Rollen hinzufügen möchten, klicken Sie auf Weitere Rolle hinzufügen.
Wenn Sie mit dem Hinzufügen von Rollen fertig sind, klicken Sie auf Speichern.
gcloud
Derzeit können Sie nur die gcloud CLI verwenden, um Folgendes festzulegen: bedingten Bindungen auf Projektebene.
Zum Festlegen bedingter Bindungen bearbeiten Sie die Datei policy.yaml
Ihres Projekts in folgender Weise:
Öffnen Sie mit dem folgenden gcloud-Befehl die IAM-Richtlinie für die Anwendung:
gcloud projects get-iam-policy PROJECT_ID > policy.yaml
Bearbeiten Sie die Datei
policy.yaml
, um Folgendes anzugeben:- Die Nutzer und Gruppen, auf die Sie die IAM-Bedingung anwenden möchten.
- Die Rolle
iap.httpsResourceAccessor
, die ihnen Zugriff auf die Ressourcen gewährt. - Die IAM-Bedingung mit Ihrer Zugriffsebene.
Die folgende Bedingung gewährt dem Nutzer und der Gruppe Zugriff, wenn die Zugriffsebenenanforderungen für ACCESS_LEVEL_NAME erfüllt sind und der Ressourcen-URL-Pfad mit
/
beginnt.... - members: - group:EXAMPLE_GROUP@GOOGLE.COM - user:EXAMPLE_USER@GOOGLE.COM role: roles/iap.httpsResourceAccessor condition: expression: "accessPolicies/ORGANIZATION_NUMBER/accessLevels/ACCESS_LEVEL_NAME" in request.auth.access_levels && request.path.startsWith("/") title: CONDITION_TITLE ...
Binden Sie die Richtlinie mithilfe des Befehls
set-iam-policy
an die Anwendung.gcloud projects set-iam-policy PROJECT_ID policy.yaml
API
Zum Bearbeiten der Datei policy.json
Ihrer Anwendung gehen Sie wie unten für Ihren Anwendungstyp dargestellt vor. Weitere Informationen zum Verwenden der IAM API für das Verwalten von Zugriffsrichtlinien finden Sie unter Zugriff auf Ressourcen verwalten, die mit IAP gesichert sind.
Bevor Sie die folgenden app-spezifischen API-Schritte ausführen, exportieren Sie Folgendes: Variablen:
export PROJECT_NUM=PROJECT_NUMBER export IAP_BASE_URL=https://iap.googleapis.com/v1beta1/projects/${PROJECT_NUMBER}/iap_web # Replace POLICY_FILE.JSON with the name of JSON file to use for setIamPolicy export JSON_NEW_POLICY=POLICY_FILE.JSON
App Engine
Exportieren Sie die folgenden App Engine-Variablen:
# The APP_ID is usually the project ID export GAE_APP_ID=APP_ID export GAE_BASE_URL=${IAP_BASE_URL}/appengine-${GAE_APP_ID}
Rufen Sie die IAM-Richtlinie für die App Engine-Anwendung mit der Methode
getIamPolicy
ab. Das leere Datenbit am Ende macht dascurl
in POST anstelle von GET.curl -i -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -d '' ${GAE_BASE_URL}/:getIamPolicy
Fügen Sie der JSON-Datei der IAM-Richtlinie die bedingte IAM-Bindung hinzu. Im Folgenden finden Sie ein Beispiel für Eine bearbeitete
policy.json
-Datei, die dasiap.httpsResourceAccessor
bindet wird zwei Nutzern die Rolle „Chrome Enterprise Premium“ zugewiesen. gesicherten Ressourcen. Es wurde eine IAM-Bedingung hinzugefügt, damit sie nur dann Zugriff auf die Ressourcen haben, wenn die Zugriffsebenenanforderung für ACCESS_LEVEL_NAME erfüllt ist und der URL-Pfad der Ressource mit/
beginnt. Es kann nur eine Bedingung pro Bindung vorhanden sein.
Beispieldatei policy.json{ "policy": { "bindings": [ { "role": "roles/iap.httpsResourceAccessor", "members": [ "group:EXAMPLE_GROUP@GOOGLE.COM", "user:EXAMPLE_USER@GOOGLE.COM" ], "condition": { "expression": ""accessPolicies/ORGANIZATION_NUMBER/accessLevels/ACCESS_LEVEL_NAME" in request.auth.access_levels && request.path.startsWith("/")", "title": "CONDITION_NAME" } } ] } }
Legen Sie die neue
policy.json
-Datei mit der MethodesetIamPolicy
fest.curl -i -H "Authorization: Bearer $(gcloud auth print-access-token)" \ ${GAE_BASE_URL}:setIamPolicy -d @${JSON_NEW_POLICY}
App Engine-Dienste und -Versionen
Sie können auch die IAM-Richtlinie eines App Engine-Dienstes, aller Versionen oder einer bestimmten Version eines Dienstes aktualisieren. Führen Sie die folgenden Schritte für eine bestimmte Version eines Dienstes aus:
- Exportieren Sie die folgenden zusätzlichen Variablen.
export GAE_SERVICE=SERVICE_NAME export GAE_VERSION=VERSION_NAME
- Aktualisieren Sie die exportierte Variable GAE_BASE_URL.
export GAE_BASE_URL=${IAP_BASE_URL}/appengine-${GAE_APP_ID}/services/${GAE_SERVICE}/versions/${GAE_VERSION}
- Rufen Sie die IAM-Richtlinie für die Version ab und richten Sie sie mithilfe der oben dargestellten Befehle
getIamPolicy
undsetIamPolicy
ein.
GKE und Compute Engine
Exportieren Sie die Projekt-ID Ihres Back-End-Dienstes.
export BACKEND_SERVICE_NAME=BACKEND_SERVICE_NAME
Rufen Sie die IAM-Richtlinie für die Compute Engine-Anwendung mit der Methode
getIamPolicy
ab. Das leere Datenbit am Ende macht dascurl
in POST anstelle von GET.curl -i -H "Authorization: Bearer $(gcloud auth print-access-token)" \ ${IAP_BASE_URL}/compute/services/${BACKEND_SERVICE_NAME}:getIamPolicy \ -d ''
Fügen Sie der JSON-Datei der IAM-Richtlinie die bedingte IAM-Bindung hinzu. Im Folgenden finden Sie ein Beispiel für Eine bearbeitete
policy.json
-Datei, die dasiap.httpsResourceAccessor
bindet wird zwei Nutzern die Rolle „Chrome Enterprise Premium“ zugewiesen. gesicherten Ressourcen. Es wurde eine IAM-Bedingung hinzugefügt, damit sie nur dann Zugriff auf die Ressourcen haben, wenn die Zugriffsebenenanforderung für ACCESS_LEVEL_NAME erfüllt ist und der URL-Pfad der Ressource mit/
beginnt. Es kann nur eine Bedingung pro Bindung vorhanden sein.
Beispieldatei policy.json{ "policy": { "bindings": [ { "role": "roles/iap.httpsResourceAccessor", "members": [ "group":EXAMPLE_GROUP@GOOGLE.COM, "user:EXAMPLE_USER@GOOGLE.COM" ], "condition": { "expression": ""accessPolicies/ORGANIZATION_NUMBER/accessLevels/ACCESS_LEVEL_NAME" in request.auth.access_levels && request.path.startsWith("/")", "title": "CONDITION_NAME" } } ] } }
Legen Sie die neue
policy.json
-Datei mit der MethodesetIamPolicy
fest.curl -i -H "Content-Type:application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ ${IAP_BASE_URL}/compute/services/${BACKEND_SERVICE_NAME}:setIamPolicy \ -d @${JSON_NEW_POLICY}