Sie können in Access Context Manager benutzerdefinierte Zugriffsebenen verwenden, um den Zugriff auf Google Cloud Ressourcen mit booleschen Ausdrücken zu steuern, die in einer Teilmenge der Common Expression Language (CEL) geschrieben sind. Sie können Anforderungsattribute wie das Quellnetzwerkprojekt, die IP-Adresse, die Identität und Gerätedaten von Drittanbietern für Sicherheitsdienste auswerten, um detaillierte, kontextsensitive Zugriffsanforderungen zu erzwingen.
Wenn Sie Geräteattribute in Ausdrücken für benutzerdefinierte Zugriffsebenen verwenden möchten, benötigen Sie einkostenpflichtiges Abo. Weitere Informationen zum Erstellen von CEL-Ausdrücken finden Sie in der Spezifikation für benutzerdefinierte Zugriffsebenen. Nachdem Sie eine benutzerdefinierte Zugriffsebene erstellt haben, können Sie sie auf dieselbe Weise wie eine grundlegende Zugriffsebene verwalten.
Hinweis
- Erstellen Sie eine Zugriffsrichtlinie für Ihre Organisation.
Benutzerdefinierte Zugriffsebene erstellen
Sie können eine benutzerdefinierte Zugriffsebene mit der Google Cloud Console,
dem gcloud Befehlszeilentool, der REST API oder RPC erstellen.
Console
So erstellen Sie eine benutzerdefinierte Zugriffsebene mit der Google Cloud Console:
Öffnen Sie in der Google Cloud console die Seite Access Context Manager.
Wählen Sie Ihre Organisation aus, wenn Sie dazu aufgefordert werden.
Klicken Sie oben auf der Seite Access Context Manager auf Neu.
Im Bereich Neue Zugriffsebene:
Geben Sie in das Feld Titel der Zugriffsebene einen Titel ein für Zugriffsebene. Der Titel darf maximal 50 Zeichen lang sein und muss mit einem Buchstaben beginnen. Er darf nur Zahlen, Buchstaben, Unterstriche und Leerzeichen enthalten.
Wählen Sie unter Bedingungen erstellen in die Option Erweiterter Modus aus.
Geben Sie im Abschnitt Bedingungen die Ausdrücke für Ihre benutzerdefinierte Zugriffsebene ein. Die Bedingung muss in einen einzelnen booleschen Wert aufgelöst werden.
Beispiele und weitere Informationen zur Unterstützung von Common Expression Language (CEL) und benutzerdefinierten Zugriffsebenen finden Sie in der Spezifikation für benutzerdefinierte Zugriffsebenen.
Klicken Sie auf Speichern.
gcloud
Verwenden Sie zum Erstellen einer benutzerdefinierten Zugriffsebene mit dem gcloud Befehlszeilentool den
gcloud access-context-manager levels create Befehl.
gcloud access-context-manager levels create LEVEL_NAME \ --title=TITLE \ --custom-level-spec=FILE \ --description=DESCRIPTION \ --policy=POLICY_NAME
Ersetzen Sie Folgendes:
LEVEL_NAME: ein eindeutiger Name für die Zugriffsebene. Der Name muss mit einem Buchstaben beginnen und darf nur Buchstaben, Zahlen und Unterstriche enthalten. Der Name darf maximal 50 Zeichen lang sein.TITLE: der kurze, menschenlesbare Titel der Zugriffsebene.FILE: eine YAML-Datei, die Ihren CEL Ausdruck als einzelnes Schlüssel/Wert-Paar enthält:expression: "CEL_EXPRESSION".Beispiele und weitere Informationen zur Unterstützung von Common Expression Language (CEL) und benutzerdefinierten Zugriffsebenen finden Sie in der Spezifikation für benutzerdefinierte Zugriffsebenen.
DESCRIPTION: eine menschenlesbare Beschreibung der Zugriffsebene.POLICY_NAME: der numerische Name der Zugriffsrichtlinie Ihrer Organisation.
Optional können Sie alle
gcloud-weiten Flags einfügen.
custom-level-spec-YAML-Datei
Wenn Sie das gcloud-Befehlszeilentool verwenden, um eine benutzerdefinierte Zugriffsebene zu erstellen, müssen Sie eine YAML-Datei für die Option custom-level-spec angeben. Die YAML-Datei definiert einen CEL-Ausdruck, der in einen einzelnen booleschen Wert aufgelöst wird. Die YAML-Datei
muss ein einzelnes Schlüssel/Wert-Paar im Format
expression: "CEL_EXPRESSION" enthalten. Der Wert für expression muss ein String sein.
Beispiel für eine YAML-Datei
expression: "device.encryption_status == DeviceEncryptionStatus.ENCRYPTED && (origin.region_code in ['US'] || device.is_admin_approved_device)"
Beispielbefehl
gcloud access-context-manager levels create Custom_Trust \
--custom-level-spec=customspec.yaml \
--description="Custom access level for corp." \
--title="Custom Trust Level" \
--policy=1521580097614100
REST
Verwenden Sie zum Erstellen einer benutzerdefinierten Zugriffsebene mit der REST API die
accessPolicies.accessLevels.create
Methode.
Anfragetext
Fügen Sie im Anfragetext für den Aufruf eine Instanz des AccessLevel-Objekts ein.
{
"name": string,
"title": string,
"description": string,
"custom": {
"expr": {
"expression": string,
"title": string,
"description": string
}
}
}
Erstellen Sie für das Feld custom ein Objekt, das die CEL-Ausdrücke für Ihre benutzerdefinierte Zugriffsebene enthält. Der vollständige Ausdruck muss in einen booleschen Wert aufgelöst werden. Die Felder title und description sind optional.
Beispiel
{
"name": "example_custom_level",
"title": "Example custom level",
"description": "An example custom access level.",
"custom": {
"expr": {
"expression": "device.is_corp_owned == true || (device.os_type != OsType.OS_UNSPECIFIED && device.is_admin_approved_device == true)",
"title": "Check for known devices",
"description": "Permits requests from corp-owned devices and admin-approved devices with a known OS."
}
}
}
RPC
Rufen Sie
CreateAccessLevel auf, um eine benutzerdefinierte Zugriffsebene mit RPC zu erstellen.
Fügen Sie für das Feld access_level eine Instanz von AccessLevel ein.
| Felder | |||||
|---|---|---|---|---|---|
name
|
|
||||
title
|
|
||||
description
|
|
||||
custom
|
|
||||
Beispiele für benutzerdefinierte Zugriffsebenen
In diesem Abschnitt finden Sie Beispiele für benutzerdefinierte Zugriffsebenen.
Zugriff anhand des Quellprojekts beschränken
Sie können den Zugriff auf Ressourcen so einschränken, dass nur Anfragen aus bestimmten Google Cloud Projekten und zugehörigen Mandantenprojekten zulässig sind. Die projektbasierte Zugriffsbeschränkung ist nützlich, um Interaktionen durch Workload-Identitäten zu sichern. Dabei handelt es sich um nicht menschliche Identitäten, die zu einem Google Cloud Projekt gehören. Zu den Arbeitslastidentitäten gehören Dienstkonten, Identitäten der Identitätsföderation von Arbeitslasten, verwaltete Arbeitslastidentitäten und Agent-Identitäten.
Der folgende Ausdruck gewährt Zugriff, wenn die Anfrage von projects/123456789 stammt:
originatesFromProjects(origin, ["projects/123456789"])
Zugriff der Workload Identity auf das eigene Netzwerkprojekt beschränken
Sie können eine Workload Identity so einschränken, dass sie nur Anfragen aus Netzwerken stellen kann, die mit einem Google Cloud Projekt verknüpft sind, zu dem die Workload Identity gehört. Das Projekt kann ein Projekt der obersten Ebene oder Mandantenprojekte des Projekts der obersten Ebene sein. Die projektbasierte Zugriffsbeschränkung ist nützlich, um Workload Identity-Interaktionen zu sichern. Im Gegensatz zu originatesFromProjects müssen Sie keine Projektnummern im Ausdruck angeben. So können Sie dieselbe Zugriffsebene für mehrere Projekte verwenden.
Der folgende Ausdruck gewährt Zugriff, wenn das Quellnetzwerkprojekt (oder die zugehörigen Mandantenprojekte) mit dem Projekt übereinstimmt, zu dem die aufrufende Workload Identity gehört:
request.auth.matchesNetworkProject(origin)