Benutzerdefinierte Zugriffsebene erstellen

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

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:

  1. Öffnen Sie in der Google Cloud console die Seite Access Context Manager.

    Zur Seite "Access Context Manager"

  2. Wählen Sie Ihre Organisation aus, wenn Sie dazu aufgefordert werden.

  3. Klicken Sie oben auf der Seite Access Context Manager auf Neu.

  4. Im Bereich Neue Zugriffsebene:

    1. 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.

    2. Wählen Sie unter Bedingungen erstellen in die Option Erweiterter Modus aus.

    3. 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.

    4. 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
Typ String
Beschreibung

Erforderlich.

Der Ressourcenname für die Zugriffsebene. Die POLICY_ID ist der numerische Name der Zugriffsrichtlinie Ihrer Organisation. Der SHORT_NAME muss mit einem Buchstaben beginnen und darf nur Buchstaben, Zahlen und Unterstriche enthalten.

Format :

            accessPolicies/policy_id/accessLevels/short_name
            
title
Typ String
Beschreibung

Ein menschenlesbares Label für die Zugriffsebene. Zugriffsebenen müssen eindeutige Namen haben.

description
Typ String
Beschreibung

Eine Beschreibung der Zugriffsebene.

custom
Typ String
Beschreibung

CEL-Ausdrücke für Ihre benutzerdefinierte Zugriffsebene. Der vollständige Ausdruck muss in einen booleschen Wert aufgelöst werden.

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)