Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Zugriffsebenen erstellen und anwenden

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.
  • Prüfen Sie, ob Ihrem Projekt eine der folgenden Rollen zugewiesen wurde.

    • Access Context Manager-Administrator
    • Access Context Manager-Bearbeiter

Zugriffsebene erstellen

Der folgende Vorgang erstellt eine Zugriffsebene.

Angenommen, Sie möchten eine Zugriffsebene erstellen, die es einer Gruppe interner Prüfer ermöglicht, für ein Projekt auf die Operations-Suite von Google Cloud zuzugreifen. 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

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

    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. Klicken Sie im Bereich Neue Zugriffsebene im Abschnitt Bedingungen auf Attribut hinzufügen und dort auf Geräterichtlinie.

  5. Klicken Sie auf das Drop-down-Menü Speicherverschlüsselung und wählen Sie Verschlüsselt aus. Beachten Sie, dass diese Regel nur funktioniert, wenn Sie die Endpunktprüfung auf den Geräten Ihrer Mitarbeiter einrichten.

  6. Klicken Sie noch einmal auf Attribut hinzufügen und wählen Sie IP-Subnetzwerke aus.

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

  8. Klicken Sie auf Speichern.

gcloud

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

  2. Speichern Sie die Datei. In diesem Beispiel heißt die Datei CONDITIONS.yaml.

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

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

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

  1. Rufen Sie die IAP-Administratorseite auf.

    Rufen Sie die IAP-Administratorseite auf.

  2. Klicken Sie auf das Kästchen neben den Ressourcen, für die Sie IAM-Berechtigungen aktualisieren möchten.

  3. Klicken Sie auf der rechten Seite im Infobereich auf Mitglied hinzufügen.

  4. Geben Sie in das Feld Neues Mitglied die Mitglieder ein, denen Sie eine Rolle zuweisen möchten.

  5. Wählen Sie in der Drop-down-Liste Rolle auswählen die Rolle Nutzer IAP-gesicherter Web-Apps aus.

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

  7. Wenn Sie den Mitgliedern weitere Rollen hinzufügen möchten, klicken Sie auf Weitere Rolle hinzufügen.

  8. Wenn Sie mit dem Hinzufügen von Rollen fertig sind, klicken Sie auf Speichern.

gcloud

Derzeit können Sie das gcloud-Tool nur zum Festlegen bedingter Bindungen auf Projektebene verwenden.

Zum Festlegen bedingter Bindungen bearbeiten Sie die Datei policy.yaml Ihres Projekts in folgender Weise:

  1. Öffnen Sie mit dem folgenden gcloud-Befehl die IAM-Richtlinie für die Anwendung:

    gcloud projects get-iam-policy PROJECT_ID > policy.yaml
    
  2. 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
    ...
    
  3. 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.

Vor den anwendungsspezifischen API-Schritten müssen Sie Folgendes ausführen:

  1. Erstellen Sie ein Dienstkonto in dem Projekt, in dem Ihre Anwendung bereitgestellt wird.
  2. Authentifizieren Sie Ihr neues Dienstkonto mit gcloud auth activate-service-account.
  3. Laden Sie die JSON-Datei mit den Anmeldedaten für ihr neues Dienstkonto herunter.

    1. Rufen Sie die Seite Dienstkonten auf.
      Zur Seite "Dienstkonten"

    2. Klicken Sie auf die E-Mail-Adresse des Dienstkontos.

    3. Klicken Sie auf Bearbeiten.

    4. Klicken Sie auf Schlüssel erstellen.

    5. Wählen Sie JSON als Schlüsseltyp aus.

    6. Erstellen Sie einen neuen Schlüssel. Klicken Sie hierzu auf Erstellen und schließen Sie das Bestätigungsfenster, das angezeigt wird.

  4. Exportieren Sie die folgenden Variablen.

    export PROJECT_NUM=PROJECT_NUMBER
    export IAP_BASE_URL=https://iap.googleapis.com/v1beta1/projects/${PROJECT_NUMBER}/iap_web
    # Replace with the path to your local service account's downloaded JSON file
    export JSON_CREDS=EXAMPLE.IAM.GSERVICEACCOUNT.COM.JSON
    # Replace POLICY_FILE.JSON with the name of JSON file to use for
    setIamPolicy export JSON_NEW_POLICY=POLICY_FILE.JSON
    

  5. Konvertieren Sie die JSON-Datei mit den Anmeldedaten für das Dienstkonto mithilfe von Oauth2l in einen OAuth-Zugriffstoken. Führen Sie hierzu den folgenden Befehl aus.

    oauth2l header --json ${JSON_CREDS} cloud-platform

  6. Wenn Sie den obigen Befehl das erste Mal ausführen, folgen Sie bei Aufforderung den folgenden Schritten:

    1. Rufen Sie den Bestätigungscode ab. Klicken Sie hierzu auf den angezeigten Link und kopieren Sie den Code.
    2. Fügen Sie den Bestätigungscode in die Eingabeaufforderung der Anwendung ein.
    3. Kopieren Sie das zurückgegebene Inhabertoken.
    4. Exportieren Sie eine neue Variable, die dem zurückgegebenen Inhabertoken zugewiesen wurde.
      export CLOUD_OAUTH_TOKEN=AUTHORIZATION_BEARER_TOKEN
  7. Wenn Sie diesen Befehl vorher schon einmal ausgeführt haben, exportieren Sie die folgende Variable.

    export CLOUD_OAUTH_TOKEN ="$(oauth2l header --json ${JSON_CREDS} cloud-platform)"

App Engine

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

  2. Rufen Sie die IAM-Richtlinie für die App Engine-Anwendung mit der Methode getIamPolicy ab. Das leere Datenbit am Ende wandelt die curl-Anfrage in POST anstelle von GET um.

    curl -i -H "${CLOUD_OAUTH_TOKEN}" ${GAE_BASE_URL}/:getIamPolicy \
         -d ''
    

  3. Fügen Sie der JSON-Datei der IAM-Richtlinie die bedingte IAM-Bindung hinzu. Im Folgenden finden Sie ein Beispiel für eine bearbeitete Datei policy.json, mit der die Rolle iap.httpsResourceAccessor an zwei Nutzer gebunden und diesen Zugriff auf die mit BeyondCorp Enterprise gesicherten Ressourcen gewährt wird. 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"
              }
            }
        ]
      }
    }
    

  4. Legen Sie die neue Datei policy.json mit der Methode setIamPolicy fest.

    curl -i -H "${CLOUD_OAUTH_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:

  1. Exportieren Sie die folgenden zusätzlichen Variablen.
    export GAE_SERVICE=SERVICE_NAME
    export GAE_VERSION=VERSION_NAME
    
  2. 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}
  3. Rufen Sie die IAM-Richtlinie für die Version ab und richten Sie sie mithilfe der oben dargestellten Befehle getIamPolicy und setIamPolicy ein.

GKE und Compute Engine

  1. Exportieren Sie die Projekt-ID Ihres Back-End-Dienstes.

    export BACKEND_SERVICE_NAME=BACKEND_SERVICE_NAME

  2. Rufen Sie die IAM-Richtlinie für die Compute Engine-Anwendung mit der Methode getIamPolicy ab. Das leere Datenbit am Ende wandelt die curl-Anfrage in POST anstelle von GET um.

    curl -i -H "${CLOUD_OAUTH_TOKEN}" ${IAP_BASE_URL}/compute/services/${BACKEND_SERVICE_NAME}:getIamPolicy \
         -d ''

  3. Fügen Sie der JSON-Datei der IAM-Richtlinie die bedingte IAM-Bindung hinzu. Im Folgenden finden Sie ein Beispiel für eine bearbeitete Datei policy.json, mit der die Rolle iap.httpsResourceAccessor an zwei Nutzer gebunden und diesen Zugriff auf die mit BeyondCorp Enterprise gesicherten Ressourcen gewährt wird. 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"
            }
          }
        ]
      }
    }
    

  4. Legen Sie die neue Datei policy.json mit der Methode setIamPolicy fest.

    curl -i -H "Content-Type:application/json" \
         -H "$(oauth2l header --json ${JSON_CREDS} cloud-platform)" \
         ${IAP_BASE_URL}/compute/services/${BACKEND_SERVICE_NAME}:setIamPolicy \
         -d @${JSON_NEW_POLICY}