Sicherer Zugriff auf SaaS-Anwendungen

Auf dieser Seite wird beschrieben, wie Sie Ihre SaaS-Anwendungen über das sichere Gateway von Chrome Enterprise Premium schützen.

Ein sicheres Gateway von Chrome Enterprise Premium fungiert als Forward-Proxy, der ein Zero-Trust-Zugriffsframework erzwingt und eine detaillierte, kontextsensitive Kontrolle darüber ermöglicht, wer auf Ihre SaaS-Anwendungen zugreift.

So funktioniert die Sicherung des Zugriffs auf SaaS-Anwendungen

Im Folgenden finden Sie eine allgemeine Übersicht darüber, wie ein sicheres Gateway Ihre SaaS-Anwendungen schützt:

  1. Clientseitige Browsereinstellungen leiten den Anwendungs-Traffic über einen sicheren Gateway-Proxy weiter.
  2. Das sichere Gateway prüft kontextsensitiven Zugriffsrichtlinien, um den Clientzugriff (Nutzer und Gerät) zu autorisieren.
  3. Wenn der Clientzugriff zulässig ist, leitet das Gateway Traffic an die Anwendung weiter. Dabei werden eindeutige Quell-IP-Adressen verwendet, die diesem Gateway und der Google Cloud -Region zugewiesen sind. Diese zugewiesenen IP-Adressen sind ausschließlich für das von Ihnen erstellte Gateway reserviert und können nicht von anderen Nutzern oder Gateways verwendet werden. Um den Zugriff zu steuern, können Sie diese dedizierten Quell-IP-Adressen einer Zulassungsliste in Ihrer SaaS-Anwendung hinzufügen.

Hinweise

Bevor Sie das sichere Gateway einrichten, müssen Sie Folgendes erledigt haben:

  • Eine Chrome Enterprise Premium-Lizenz
  • Zugriff auf die Admin-Konsole mit einem Administratorkonto
  • Ein Google Cloud -Projekt mit einem zugewiesenen Rechnungskonto und der folgenden aktivierten API: BeyondCorp API
  • Die folgende IAM-Rolle (Identity and Access Management), die dem Administrator zugewiesen wird, der die Einrichtung vornimmt: Projektebene: Cloud BeyondCorp-Administrator (beyondcorp.admin).

  • Eine SaaS-Anwendung, die Sie schützen möchten. Die Anwendung muss IP allowlisting unterstützen, damit Sicherheitsprüfungen durch das Secure Gateway erzwungen werden können.

Beschränkungen

Für ein sicheres Chrome Enterprise Premium-Gateway gilt die folgende Einschränkung: Ein sicheres Gateway unterstützt keine SaaS-Anwendungen, die nur IPv6-Verbindungen zulassen.

Shell-Umgebung einrichten

Um die Einrichtung zu vereinfachen und mit den Secure Gateway-APIs zu interagieren, definieren Sie die folgenden Umgebungsvariablen in Ihrer Arbeits-Shell.

  • Allgemeine Parameter

    API="beyondcorp.googleapis.com"
    API_VERSION=v1
    PROJECT_ID=MY_PROJECT_ID
    APPLICATION_ID=MY_APPLICATION_ID
    APPLICATION_DISPLAY_NAME="MY_APPLICATION_DISPLAY_NAME"
    HOST_NAME=MY_HOST_NAME

    Ersetzen Sie Folgendes:

    • MY_PROJECT_ID: Die ID des Projekts, in dem das sichere Gateway erstellt wird.
    • MY_APPLICATION_ID: Die ID Ihrer Anwendung, z. B. github. Der Name darf bis zu 63 Zeichen lang sein und Kleinbuchstaben, Ziffern und Bindestriche enthalten. Das erste Zeichen muss ein Buchstabe sein und das letzte Zeichen kann ein Buchstabe oder eine Ziffer sein.
    • MY_APPLICATION_DISPLAY_NAME: Der für Menschen lesbare Name, der angezeigt werden soll.
    • MY_HOST_NAME: Der Hostname Ihrer Anwendung. Beispiel: github.com Der Hostname kann bis zu 253 Zeichen lang sein und muss eines der folgenden Formate haben:

      • Eine gültige IPv4-Adresse
      • Eine gültige IPv6-Adresse
      • Ein gültiger DNS-Name
      • Ein Sternchen (*)
      • Ein Sternchen (*) gefolgt von einem gültigen DNS-Namen
  • Gateway-Parameter sichern

    SECURITY_GATEWAY_ID=MY_SECURITY_GATEWAY_ID
    SECURITY_GATEWAY_DISPLAY_NAME="MY_SECURITY_GATEWAY_DISPLAY_NAME"

    Ersetzen Sie Folgendes:

    • MY_SECURITY_GATEWAY_ID: Die ID des sicheren Gateways. Die ID kann bis zu 63 Zeichen lang sein und Kleinbuchstaben, Ziffern und Bindestriche enthalten. Das erste Zeichen muss ein Buchstabe sein und das letzte Zeichen kann ein Buchstabe oder eine Ziffer sein.
    • MY_SECURITY_GATEWAY_DISPLAY_NAME: Der für Nutzer lesbare Name des sicheren Gateways. Der Name darf maximal 63 Zeichen lang sein und darf nur druckbare Zeichen enthalten.

Sicheres Gateway erstellen

Ein sicheres Gateway für Chrome Enterprise Premium ist ein grundlegender Baustein für die Herstellung sicherer Verbindungen zu Ihren Anwendungen. Dabei werden ein dediziertes Projekt und Netzwerk zugewiesen, die für Isolation und Sicherheit sorgen.

Verwenden Sie eine der folgenden Methoden, um eine Secure Gateway-Ressource zu erstellen.

gcloud

Führen Sie den folgenden Befehl aus: Geben Sie für das Flag --hubs eine oder mehrere Regionen aus der folgenden Liste an.

gcloud beta beyondcorp security-gateways create ${SECURITY_GATEWAY_ID} \
  --project=${PROJECT_ID} \
  --location=global \
  --display-name="MY_SECURITY_GATEWAY_DISPLAY_NAME" \
  --hubs=us-central1
      

REST

Rufen Sie die Create API-Methode mit den Gateway-Details im Anfragetext auf. Geben Sie für das hubs-Objekt eine oder mehrere Regionen aus der folgenden Liste an.

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-X POST \
-d '{ "display_name": "MY_SECURITY_GATEWAY_DISPLAY_NAME", "hubs": { "us-central1": {} } }' \
"https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways?security_gateway_id=${SECURITY_GATEWAY_ID}"
      

Die hubs stellt die regionalen Ressourcen dar, die für die Aktivierung der Egress-Konnektivität zur Zielanwendung erforderlich sind. Sie können einen Hub für jede Region haben. Jeder Hub stellt zwei IP-Adressen zur Verfügung. Sie können die folgenden Regionen angeben:

  • africa-south1
  • asia-east1
  • asia-south1
  • asia-south2
  • asia-southeast1
  • europe-central2
  • europe-north1
  • europe-southwest1
  • europe-west1
  • europe-west2
  • europe-west3
  • europe-west4
  • europe-west8
  • europe-west9
  • northamerica-northeast1
  • northamerica-northeast2
  • northamerica-south1
  • southamerica-east1
  • southamerica-west1
  • us-central1
  • us-east1
  • us-east4
  • us-east5
  • us-west1

SaaS-Anwendung konfigurieren

Nachdem Sie ein sicheres Gateway erstellt haben, können Sie Ihre SaaS-Anwendungen so konfigurieren, dass sie das sichere Gateway für den sicheren Zugriff verwenden.

  1. Rufen Sie die IP-Adressen ab, die vom sicheren Gateway für jeden Hub zugewiesen wurden. Für eine Region werden zwei IP-Adressen zugewiesen.

    gcloud

    gcloud beta beyondcorp security-gateways describe ${SECURITY_GATEWAY_ID} \
    --project=${PROJECT_ID} \
    --location=global
        

    REST

    curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}"
        

    Hier sehen Sie ein Beispiel für eine GET-Antwort eines sicheren Gateways mit hubs. Im Beispiel werden hubs in den Regionen us-central1 und us-east1 erstellt. Alle in der Antwort zurückgegebenen IP-Adressen müssen in der SaaS-Anwendung zugelassen werden.

    gcloud

    createTime: 'CREATE_TIME'
    displayName: My security gateway
    hubs:
      us-central1:
        internetGateway:
          assignedIps:
          - IP_ADDRESS_1
          - IP_ADDRESS_2
      us-east1:
        internetGateway:
          assignedIps:
          - IP_ADDRESS_1
          - IP_ADDRESS_2
    name: projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}
    state: RUNNING
    updateTime: 'UPDATE_TIME'
        

    REST

    {
      "securityGateways": [
        {
          "name": "projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}",
          "createTime": "CREATE_TIME",
          "updateTime": "UPDATE_TIME",
          "displayName": "My security gateway",
          "state": "RUNNING",
          "hubs": {
            "us-central1": {
              "internetGateway": {
                "assignedIps": [
                  "IP_ADDRESS_1",
                  "IP_ADDRESS_2",
                ]
              }
            },
            "us-east1": {
              "internetGateway": {
                "assignedIps": [
                  "IP_ADDRESS_1",
                  "IP_ADDRESS_2",
                ]
              }
            }
          }
        }
      ]
    }
        
  2. Fügen Sie die IP-Adressen der IP-Zulassungsliste Ihrer SaaS-Anwendung hinzu. Für eine GitHub-Anwendung können Sie beispielsweise dieser Anleitung folgen: Zulässige IP-Adressen für Ihre Organisation verwalten.

Anwendungsressource erstellen

Die folgenden Informationen führen Sie durch die Einrichtung und Konfiguration einer sicheren Gateway-Anwendungsressource.

Erstellen Sie eine Ressource für die Secure Gateway-Anwendung in Google Cloud.

Die Anwendungsressource Google Cloud ist eine Unterressource der Secure Gateway-Ressource. Erstellen Sie eine Anwendungsressource, indem Sie die Create API aufrufen.

gcloud

gcloud beta beyondcorp security-gateways applications create ${APPLICATION_ID} \
  --project=${PROJECT_ID} \
  --security-gateway=${SECURITY_GATEWAY_ID} \
  --location=global \
  --display-name="${APPLICATION_DISPLAY_NAME}" \
  --endpoint-matchers="hostname=${HOST_NAME},ports=[443]"
      

REST

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-X POST \
-d "{ \"display_name\": \"${APPLICATION_DISPLAY_NAME}\", \"endpoint_matchers\": [{hostname: \"${HOST_NAME}\", ports: [443]}] }" \
"https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}/applications?application_id=${APPLICATION_ID}"
      

Google Chrome-Proxymodus konfigurieren

Wenn Sie den Traffic für die Anwendungsressource über das sichere Gateway leiten möchten, konfigurieren Sie Chrome, indem Sie in den Chrome-Einstellungen in der Admin-Konsole eine PAC-Datei anwenden.

  1. Erstellen oder aktualisieren Sie eine PAC-Datei.

    • Wenn Sie Ihre erste Anwendung erstellen, erstellen Sie eine pac_config.js-Datei mit der folgenden Beispiel-PAC-Datei.

    • Wenn Sie eine zweite oder weitere Anwendung erstellen, aktualisieren Sie Ihre vorhandene pac_config.js-Datei und fügen Sie die Domains Ihrer neuen Anwendung dem Array „sites“ hinzu, wie im folgenden Beispiel für eine PAC-Datei gezeigt.

    function FindProxyForURL(url, host) {
     const PROXY = "HTTPS ingress.cloudproxy.app:443";
     const sites = ["MY_HOST_NAME"];
    
     for (const site of sites) {
       if (shExpMatch(url, 'https://' + site + '/*') || shExpMatch(url, '*.' + site + '/*')) {
         return PROXY;
       }
     }
    return 'DIRECT';
    }

    Wenn Sie eine vorhandene PAC-Datei verwenden, die nicht speziell für ein sicheres Gateway ist, führen Sie die PAC-Dateien zusammen, indem Sie die Domains Ihrer Anwendung dem Array „sites“ hinzufügen.

  2. Laden Sie die Datei so hoch, dass sie öffentlich heruntergeladen werden kann. Sie können die Datei beispielsweise in Cloud Storage hochladen und sie öffentlich herunterladbar machen, indem Sie allen Nutzern die Rolle Storage Object User für den Bucket zuweisen.

  3. Wenn Sie dafür sorgen möchten, dass die hochgeladene Datei immer die neueste Version ist, können Sie das Caching-Verhalten anpassen, indem Sie den Header Cache-Control auf no-cache festlegen. Diese Einstellung verhindert, dass Browser und Zwischenserver eine Kopie der Datei speichern, sodass Chrome immer die aktuelle Version herunterlädt.

    Weitere Informationen zu Cache-Control und den Auswirkungen auf das Browser-Caching finden Sie unter Cache-Control-Header.

  4. Kopieren Sie die öffentliche URL der hochgeladenen Datei.

Proxy-Moduseinstellungen aktualisieren

  1. Rufen Sie die Admin-Konsole auf.
  2. Klicken Sie auf Geräte > Chrome > Einstellungen.
  3. Wählen Sie eine Organisationseinheit oder Gruppe aus und klicken Sie dann auf Proxymodus.
  4. Wählen Sie auf der Seite „Proxymodus“ die Option Für den Proxyserver immer die unten angegebene automatische Konfiguration verwenden aus und geben Sie die URL der PAC-Datei aus Cloud Storage ein.

Zugriffsrichtlinie konfigurieren

Sie können eine Zugriffsrichtlinie anwenden, um den Zugriff entweder auf der Ebene des sicheren Gateways zu steuern, was sich auf alle zugehörigen Anwendungen auswirkt, oder auf der Ebene der einzelnen Anwendungen, um eine detailliertere Steuerung zu ermöglichen.

Zugriffsrichtlinie sicher aktualisieren

Mit dem Befehl setIamPolicy wird die gesamte vorhandene Richtlinie durch die von Ihnen angegebene Richtlinie ersetzt. Um zu vermeiden, dass vorhandene Berechtigungen versehentlich entfernt werden, empfehlen wir, dem Muster „Lesen-Ändern-Schreiben“ zu folgen. So wird sichergestellt, dass Sie die vorhandene Richtlinie nur ergänzen und nicht überschreiben.

  1. Lesen: Rufen Sie zuerst die aktuelle Zugriffsrichtlinie ab.

  2. Ändern: Bearbeiten Sie die Richtliniendatei lokal, um Berechtigungen hinzuzufügen oder zu ändern.

  3. Schreiben: Wenden Sie die aktualisierte Richtliniendatei an.

Aktuelle Richtlinie abrufen

Rufen Sie die aktuelle Richtlinie ab, bevor Sie Änderungen vornehmen.

Das Feld etag in der Richtlinie dient als Versions-ID. Sie verhindert Konflikte, wenn mehrere Administratoren gleichzeitig Änderungen vornehmen.

Mit dem folgenden Befehl wird die Richtlinie abgerufen und in einer Datei mit dem Namen policy.json gespeichert.

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}/applications/${APPLICATION_ID}:getIamPolicy" > policy.json

Nachdem Sie den Befehl ausgeführt haben, wird eine policy.json-Datei mit der aktuellen Richtlinie erstellt.

Richtliniendatei ändern

Öffnen Sie die Datei policy.json in einem Texteditor. Wenn Sie einer Gruppe Zugriff auf das sichere Gateway gewähren möchten, fügen Sie die Gruppe der Liste members für die Rolle roles/beyondcorp.securityGatewayUser hinzu.

Ihr policy.json sollte in etwa so aussehen:

{
  "policy": {
    "version": 3,
    "bindings": [
      {
        "role": "roles/beyondcorp.securityGatewayUser",
        "members": [
          "group:existing-group@example.com"
        ]
      }
    ],
    "etag": "BwXN8_d-bOM="
  }
}

Wenn Sie eine neue Gruppe hinzufügen möchten, fügen Sie dem Array members einen neuen Eintrag hinzu. Setzen Sie nach dem vorherigen Eintrag ein Komma.

Im folgenden Beispiel wird new-group@example.com hinzugefügt:

{
  "policy": {
    "version": 3,
    "bindings": [
      {
        "role": "roles/beyondcorp.securityGatewayUser",
        "members": [
          "group:existing-group@example.com",
          "group:new-group@example.com"
        ]
      }
    ],
    "etag": "BwXN8_d-bOM="
  }
}

Sie können auch andere Arten von Mitgliedern wie serviceAccount, user, group, principal und principalSet in Richtlinienbindungen hinzufügen. Weitere Informationen finden Sie unter IAM-Hauptkonten.

Aktualisierte Richtlinie anwenden

Nachdem Sie die policy.json-Datei bearbeitet und gespeichert haben, wenden Sie sie mit dem Befehl setIamPolicy auf die Ressource an. Dieser Befehl verwendet die etag aus Ihrer Datei, um sicherzustellen, dass Sie die richtige Version aktualisieren.

jq '{policy: .}' policy.json | curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d @- \
    "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}/applications/${APPLICATION_ID}:setIamPolicy"

Richtlinie für bedingten Zugriff hinzufügen

Sie können auch Zugriffsrichtlinien mit Bedingungen festlegen. Bedingungen geben Anforderungen an, z. B. dass die IP-Adresse eines Nutzers von einem bestimmten Standort stammt.

Das folgende Beispiel zeigt eine Richtlinie, die nur dann Zugriff gewährt, wenn die Quell-IP-Adresse innerhalb einer angegebenen Zugriffsebene liegt:

{
  "policy": {
    "version": 3,
    "bindings": [
      {
        "role": "roles/beyondcorp.securityGatewayUser",
        "members": [
          "group:group@example.com"
        ],
        "condition": {
          "expression": "request.auth.access_levels.contains('accessPolicies/1234567890/accessLevels/in_us')",
          "title": "Source IP must be in US"
        }
      }
    ],
    "etag": "BwXN8_d-bOM="
  }
}

Folgen Sie dazu der Anleitung oben.

Chrome Enterprise Premium-Erweiterung installieren

Die Chrome Enterprise Premium-Erweiterung ist ein integraler Bestandteil eines sicheren Gateways und unterstützt die Authentifizierung. Installieren Sie die Erweiterung für alle Nutzer des sicheren Gateways. Informationen zum Bereitstellen der Erweiterung finden Sie unter Apps und Erweiterungen ansehen und festlegen.

  1. Rufen Sie die Admin-Konsole auf.
  2. Klicken Sie auf Chrome-Browser > Apps und Erweiterungen.
  3. Klicken Sie auf den Tab Nutzer und Browser.
  4. Klicken Sie zum Hinzufügen einer Chrome-Erweiterung auf die Schaltfläche +.
  5. Suchen Sie nach ekajlcmdfcigmdbphhifahdfjbkciflj und erzwingen Sie dann die Installation für alle Nutzer in der Organisationseinheit oder Gruppe.
  6. Klicken Sie auf die installierte Erweiterung, rufen Sie das Feld Richtlinie für Erweiterungen auf und geben Sie den folgenden JSON-Wert an:

    {
     "securityGateway": {
       "Value": {
         "authentication": {},
         "context": { "resource": "projects/MY_PROJECT_ID/locations/global/securityGateways/MY_SECURITY_GATEWAY_ID" }
       }
     }
    }

Nutzererfahrung

Nach Abschluss der Einrichtung wird Endnutzern, die auf die geschützte SaaS-Anwendung zugreifen, der Zugriff basierend auf der auf die Anwendung angewendeten Zugriffsrichtlinie gewährt oder verweigert.

Auf die Anwendung in Chrome zugreifen

Die Chrome Enterprise Premium-Erweiterung ist erforderlich, um den Traffic über das sichere Gateway zu leiten. Die Erweiterung übernimmt die Authentifizierung zwischen dem Nutzer und dem sicheren Gateway. Die Erweiterung wird automatisch über die Domainrichtlinie installiert.

Wenn Nutzer auf die von Ihnen konfigurierte SaaS-Anwendung zugreifen, wird ihr Traffic über das sichere Gateway geleitet, das prüft, ob sie die Zugriffsrichtlinie erfüllen. Wenn die Nutzer die Prüfungen der Zugriffsrichtlinie bestehen, erhalten sie Zugriff auf die Anwendung.

Wenn der Browserzugriff auf die Anwendung durch die Autorisierungsrichtlinie abgelehnt wird, erhalten Nutzer eine Access denied-Meldung.

Nächste Schritte