Zugriffsberechtigungen verwalten

In diesem Dokument wird erläutert, wie Sie Ihre vorhandenen Zugriffsbindungen verwalten, die definieren, wie Zugriffsrichtlinien auf Ihre Nutzergruppen oder Dienstkonten angewendet werden. Sie können diese Bindungen nach Bedarf ansehen, ändern und löschen. Zugriffsbindungen bestimmen, wie Zugriffsebenen und Sitzungssteuerungen auf eine Nutzergruppe oder ein Dienstkonto angewendet werden.

Informationen zum Erstellen von Zugriffsbindungen für Nutzer sowie weitere Details zu Zugriffsebenen und Sitzungssteuerungen finden Sie unter Richtlinien mit Zugriffsbindungen auf Nutzergruppen anwenden.

Weitere Informationen zum Erstellen von Zugriffsbindungen für Dienstkonten, siehe Kontextsensitiven Zugriff für Dienstkonten konfigurieren.

Zugriffsbindungen auflisten

So listen Sie alle zuvor erstellten Zugriffsbindungen für Nutzergruppen auf:

gcloud

Führen Sie den folgenden Befehl aus, um alle Zugriffsbindungen für Nutzer mithilfe der gcloud CLI aufzulisten. Wenn Sie Zugriffsbindungen für Dienstkonten auflisten möchten, müssen Sie einen Filter verwenden.

gcloud access-context-manager cloud-bindings list \
  --organization ORGANIZATION_ID

ORG_ID: Ihre Organisations-ID. Wenn die Property access-context-manager/organization nicht festgelegt wurde, ersetzen Sie ORG_ID im optionalen Flag --organization durch die ID der Organisation, die Sie beim Erstellen der Rolle GcpAccessAdmin verwendet haben.

Wenn Sie Zugriffsbindungen für bestimmte Ressourcen auflisten möchten, können Sie ein Filterflag verwenden.

  --filter="FILTER"

Ersetzen Sie FILTER durch einen Filter, der die Ressource beschreibt, an die die Zugriffsrichtlinie gebunden ist. Beispiele:

  • Nutzergruppen: principal:group_key

  • Dienstkonten: principal:service_account OR principal:service_account_project_number

REST API

Führen Sie den folgenden Befehl aus, um alle USER_LOGIN-Zugriffsbindungen aufzulisten:

curl -H "X-Goog-User-Project: PROJECT_ID" -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/organizations/ORGANIZATION_ID/gcpUserAccessBindings"

Wenn Sie Zugriffsbindungen für bestimmte Ressourcen auflisten möchten, können Sie einen Filterparameter verwenden.

curl -H "X-Goog-User-Project: PROJECT_ID" -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/organizations/ORGANIZATION_ID/gcpUserAccessBindings?filter=FILTER"

Ersetzen Sie Folgendes:

  • PROJECT_ID: die ID des Projekts.
  • ORGANIZATION_ID: die ID der Organisation.
  • FILTER: ein Filter, der die Ressource beschreibt, an die die Zugriffsrichtlinie gebunden ist. Beispiele:

    • Nutzergruppen: principal:group_key

    • Dienstkonten: principal:service_account OR principal:service_account_project_number

Zugriffsbindung ansehen

Nachdem die Zugriffsbindungen für eine Gruppe von Nutzern erstellt wurden, wird der Zugriff auf die Google Cloud Console und Google Cloud APIs gemäß der Erfüllung der gebundenen Zugriffsebene gesteuert.

Sie können die Details der erstellten Zugriffsbindung ansehen, sie bearbeiten oder löschen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Access Context Manager auf.

    Zu Access Context Manager

  2. Wählen Sie ein Projekt aus, wenn Sie dazu aufgefordert werden. Die Zugriffsbindungen werden auf der Seite Access Context Manager aufgeführt.

gcloud

Führen Sie den folgenden Befehl aus, um die Details einer Zugriffsbindung aufzurufen:

  gcloud access-context-manager cloud-bindings describe \
  --binding=BINDING_ID

BINDING_ID ist die ID der Zugriffsbindung oder die vollqualifizierte Kennzeichnung für die Zugriffsbindung.

API

Details einer Zugriffsbindung ansehen:

HTTP-Methode und URL:

GET https://accesscontextmanager.googleapis.com/v1/BINDING_ID

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/BINDING_ID"

PowerShell

Führen Sie folgenden Befehl aus:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://accesscontextmanager.googleapis.com/v1/BINDING_ID" | Select-Object -Expand Content

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:


{
  "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
  "groupKey": "045jfvxd0ybeul8",
  "accessLevels": [
    "accessPolicies/305009197125/accessLevels/device_lock"
  ],
  "dryRunAccessLevels": [
    "accessPolicies/305009197125/accessLevels/another"
  ]
}

Zugriffsbindung aktualisieren

Sie können eine Zugriffsbindung aktualisieren, um Folgendes zu tun:

  • Hinzufügen, Entfernen oder Ändern von Anwendungen, auf die eine Richtlinie angewendet wird.
  • Ändern der Zugriffsebenen für eine Anwendung in einer Nutzergruppe.
  • Eine neue Zugriffsebene für Probeläufe hinzufügen oder eine vorhandene in eine Live-Ebene hochstufen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Access Context Manager auf.

    Zu Access Context Manager

  2. Wählen Sie ein Projekt aus, wenn Sie dazu aufgefordert werden.

  3. Wählen Sie auf der Seite Access Context Manager eine Zugriffsbindung aus und klicken Sie dann auf Bearbeiten, um sie zu aktualisieren.

Sie können Zugriffsbindungen mit Zugriffsebenen für Testläufe oder Sitzungs steuerungen in der Google Cloud Console nicht aktualisieren.

gcloud

  1. Erstellen Sie eine YAML-Bindungsdatei.

    gcloud access-context-manager cloud-bindings update \
      --binding=ACCESS_BINDING \
      --binding-file=BINDING_FILE_PATH \
      --level=DEFAULT_ACCESS_LEVEL \
      --dry-run-level=DEFAULT_DRY_RUN_ACCESS_LEVEL
    [  --session-length=DEFAULT_SESSION_LENGTH                ]
    [  --session-reauth-method=DEFAULT_SESSION_REAUTH_METHOD  ]
    

    Ersetzen Sie Folgendes:

    • ACCESS_BINDING hat das Format organizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME.
    • BINDING_FILE_PATH: Der Pfad zur YAML-Datei, die das Zugriffsbindungsschema enthält. Die Bindungsdatei unterstützt nur scopedAccessSettings.
    • DEFAULT_ACCESS_LEVEL: Der optionale Name der Zugriffsebene im Format accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME. Ersetzen Sie POLICY_ID durch die ID der Zugriffsrichtlinie und ACCESS_LEVEL_NAME durch den Namen der Zugriffsebene.
    • DEFAULT_DRY_RUN_ACCESS_LEVEL_2: Ein optionaler Name der Zugriffsebene im Format `accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME`. Fügen Sie dieses Flag hinzu, um die angegebene Zugriffsebene für Probeläufe standardmäßig auf alle Anwendungen anzuwenden, wenn sie nicht in der YAML-Datei angegeben sind.
    • DEFAULT_SESSION_LENGTH: Die optionale Sitzungsdauer im Stundenformat, z. B. 15h für 15 Stunden oder 2h für zwei Stunden.
    • DEFAULT_SESSION_REAUTH_METHOD: Die optionale Methode, mit der Nutzer aufgefordert werden, ihre Identität noch einmal zu bestätigen. Sie muss eine der folgenden sein:
      • LOGIN: Die Standardanmeldung anwenden, die MFA oder andere von Workspace definierte Faktoren umfassen kann.
      • PASSWORD: Nur ein Passwort anfordern, auch wenn andere Faktoren definiert sind. Wenn Passwörter mit einem externen IdP verwaltet werden, werden Nutzer zum IdP weitergeleitet. Wenn die IdP-Sitzung aktiv ist, werden Nutzer implizit neu authentifiziert. Wenn der IdP nicht aktiv ist, müssen sich Nutzer über den IdP anmelden.
      • SECURITY_KEY: Einen Hardware-Sicherheitsschlüssel anfordern.

    Zusammenwirken der Argumente --level und --binding-file

    • Wenn Sie nur --binding-file verwenden, werden die Richtlinien nur auf die Anwendungen in der Datei angewendet.
    • Wenn Sie nur --level verwenden, gilt die Zugriffsebene für alle Anwendungen.
    • Wenn Sie beide verwenden, werden die Regeln kombiniert. Der Wert --level gilt für alle Anwendungen, während die Richtlinien in der YAML-Datei, die mit --binding-file angegeben wird, nur für die in der Datei definierten Anwendungen gelten.

    Mit Sitzungssteuerungen arbeiten

    • Verwenden Sie --session-length und --session-reauth-method, um Standard-Sitzungssteuerungen für alle Anwendungen festzulegen.
    • Wenn Sie auch Sitzungssteuerungen in der YAML-Datei definieren, überschreiben diese Sitzungssteuerungen die Standardeinstellungen für diese spezifischen Anwendungen.
    • Sie müssen --session-length und --session-reauth-method zusammen verwenden.

    Wenn Sie eine Standardzugriffsebene oder eine Standardzugriffsebene für Probeläufe entfernen möchten, geben Sie einen leeren String an, z. B. --level= oder --dry-run-level=. Wenn diese Argumente nicht angegeben werden, nimmt der Befehl update keine Änderungen vor.

    Wenn Sie eine Sitzungssteuerung entfernen möchten, legen Sie --session-length=0 fest.

API

  1. Erstellen Sie einen JSON-Text.

    {
      "accessLevels": [
        "DEFAULT_ACCESS_LEVEL"
      ],
      "scopedAccessSettings": [
        {
          "scope": {
            "clientScope": {
              "restrictedClientApplication": {
                "clientId": "CLIENT_ID"
              }
            }
          },
          "activeSettings": {
            "accessLevels": [
              "ACCESS_LEVEL_A"
            ],
            "sessionSettings": {
              "sessionLength": "SESSION_LENGTH",
              "sessionReauthMethod": "SESSION_REAUTH_METHOD",
              "sessionLengthEnabled": true
            }
          }
        },
        {
          "scope": {
            "clientScope": {
              "restrictedClientApplication": {
                "name": "CLIENT_NAME"
              }
            }
          },
          "activeSettings": {
            "accessLevels": [
              "ACCESS_LEVEL_C"
            ]
          }
        }
      ]
    }
    

    Ersetzen Sie Folgendes:

    • DEFAULT_ACCESS_LEVEL: Der optionale Name der Zugriffsebene im Format accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME. Ersetzen Sie POLICY_ID durch die ID der Zugriffsrichtlinie und ACCESS_LEVEL_NAME durch den Namen der Zugriffsebene.
    • CLIENT_ID: Die OAuth-Client-ID. Wenn eine Anwendung sessionSettings enthält, können Sie entweder clientId oder name verwenden.
    • ACCESS_LEVEL_A: Ein Name der Zugriffsebene im Format accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME.
    • SESSION_LENGTH: Die Sitzungsdauer im ISO 8601-Format für die Dauer, z. B. 30m für 30 Minuten oder 2h für zwei Stunden.
    • SESSION_REAUTH_METHOD: Die optionale Methode, mit der Nutzer aufgefordert werden, ihre Identität noch einmal zu bestätigen. Sie muss eine der folgenden sein:

      • LOGIN: Die Standardanmeldung anwenden, die MFA oder andere von Workspace definierte Faktoren umfassen kann.
      • PASSWORD: Nur ein Passwort anfordern, auch wenn andere Faktoren definiert sind. Wenn Passwörter mit einem externen IdP verwaltet werden, werden Nutzer zum IdP weitergeleitet. Wenn die IdP-Sitzung aktiv ist, werden Nutzer implizit neu authentifiziert. Wenn der IdP nicht aktiv ist, müssen sich Nutzer über den IdP anmelden.
      • SECURITY_KEY: Einen Hardware-Sicherheitsschlüssel anfordern.
    • CLIENT_NAME: Der Clientname. Wenn eine Anwendung sessionSettings enthält, können Sie entweder name oder clientId verwenden.

    • ACCESS_LEVEL_C: Ein Name der Zugriffsebene im Format accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME.

  2. Senden Sie die PATCH-Anfrage.

    PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING?updateMask=FIELD_MASK
    

    Ersetzen Sie Folgendes:

    • ACCESS_BINDING hat das Format organizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME.
    • FIELD_MASK: Eine erforderliche, durch Kommas getrennte Liste der Felder, die Sie aktualisieren möchten. Dadurch wird der API mitgeteilt, welche Teile der Zugriffsbindung geändert werden sollen.

    fieldMask sollte die JSON-Schlüssel der obersten Ebene im Anfragetext enthalten, die Sie aktualisieren möchten. Dazu können accessLevels, dryRunAccessLevels und scopedAccessSettings gehören.

    Wenn der Vorgang erfolgreich war, sollten Sie eine Darstellung des JSON-Objekts erhalten. Bei einem Problem erhalten Sie eine Fehlermeldung.

Zugriffsbindungen löschen

Console

  1. Rufen Sie in der Google Cloud Console die Seite Access Context Manager auf.

    Zu Access Context Manager

  2. Wählen Sie ein Projekt aus, wenn Sie dazu aufgefordert werden.

  3. Wählen Sie auf der Seite Access Context Manager eine Zugriffsbindung aus und klicken Sie dann auf Löschen.

gcloud

   gcloud access-context-manager cloud-bindings delete \
       --binding ACCESS_BINDING

Ersetzen Sie Folgendes:

  • ACCESS_BINDING hat das Format organizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME.
  • ACCESS_BINDING_NAME ist der eindeutige String, der für die Kennzeichnung name zurückgegeben wurde, als die Zugriffsbindung erstellt wurde.

API

Ersetzen Sie vor der Verwendung der Anfragedaten Folgendes:

  • ACCESS_BINDING_NAME ist der eindeutige String, der für die Kennzeichnung name zurückgegeben wurde, als die Zugriffsbindung erstellt wurde.

HTTP-Methode und URL:

DELETE https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME"

PowerShell

Führen Sie folgenden Befehl aus:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME" | Select-Object -Expand Content

Sie sollten einen erfolgreichen Statuscode (2xx) und eine leere Antwort erhalten.