VPC Service Controls mit Apigee und Apigee Hybrid verwenden

Sie lesen die Dokumentation zu Apigee X.
Apigee Edge-Dokumentation aufrufen

Apigee ist in VPC Service Controls eingebunden, einem Dienst, mit dem Sie Ressourcen Ihrer Google Cloud-Projekte isolieren können. Das trägt dazu bei, Datenverluste/Exfiltrationen zu verhindern.

In diesem Abschnitt wird beschrieben, wie Sie VPC Service Controls mit Apigee verwenden.

Übersicht

VPC Service Controls definiert einen Dienstperimeter, der als Grenze zwischen Projekten und anderen Diensten fungiert. Dienstperimeter sind eine Methode auf Organisationsebene, mit der Sie Google Cloud-Dienste in Ihren Projekten schützen können, um das Risiko einer Daten-Exfiltration zu minimieren.

Mit VPC Service Controls können Sie außerdem dafür sorgen, dass zum privatem Zugriff auf Ressourcen berechtigte Clients innerhalb eines Perimeters keinen Zugriff auf nicht autorisierte Ressourcen außerhalb des Perimeters haben.

Ausführliche Informationen zu den Vorteilen von Dienstperimetern finden Sie unter VPC Service Controls.

Beachten Sie Folgendes bei der Verwendung von VPC Service Controls:

  • Sowohl das Google Cloud-Projekt als auch die zugehörige Laufzeit liegen innerhalb des VPC Service Controls-Perimeters des Projekts.
  • Die Interaktion zwischen Diensten innerhalb eines Perimeters kann mit der Funktion Über VPC zugängliche Dienste eingeschränkt werden.

Apigee und Apigee Hybrid können in VPC Service Controls eingebunden werden. Eine vollständige Liste der Produkte, die in VPC Service Controls eingebunden werden können, finden Sie unter Unterstützte Produkte.

VPC Service Controls mit Apigee einrichten

Das Einrichten von VPC Service Controls mit Apigee umfasst folgende allgemeine Schritte:

  1. Aktivieren Sie VPC Service Controls.
  2. Erstellen Sie einen neuen Dienstperimeter.
  3. Konfigurieren Sie den Dienstperimeter.

Diese Schritte werden unten genauer beschrieben.

So richten Sie VPC Service Controls mit Apigee ein:

  1. Um VPC Service Controls für die Peering-Verbindung von Ihrem Netzwerk zu Apigee zu aktivieren führen Sie folgenden Befehl aus:

    gcloud services vpc-peerings enable-vpc-service-controls \
      --network=NETWORK_NAME --project=PROJECT_ID

    Wobei:

    • NETWORK_NAME der Name Ihres VPC-Peering-Netzwerks ist.

      Wenn Sie während der Apigee-Einrichtung die Standardwerte verwendet haben, lautet der Name des Netzwerks "DEFAULT". In Produktionsumgebungen wäre dies der Name Ihres benutzerdefinierten Peering-Netzwerks.

    • PROJECT_ID ist der Name des Projekts, das Sie während der Apigee-Einrichtung erstellt haben.

    Mit diesem Befehl aktivieren Sie VPC Service Controls für Ihr Projekt. Sie können diesen Befehl mehrmals ausführen, um VPC Service Controls für mehrere Projekte zu aktivieren.

  2. Erstellen Sie einen neuen Perimeter, wie in der VPC Service Controls-Kurzanleitung beschrieben. Wenn Sie einen Perimeter erstellen, wählen Sie aus, welche Projekte innerhalb dieses Perimeters hinzugefügt werden sollen und welche Dienste gesichert werden sollen.

    Für Apigee und Apigee hybrid empfiehlt Google, dass Sie beim Erstellen eines Perimeters alle Dienste sichern, einschließlich der Apigee APIs.

    Weitere Informationen finden Sie unter Dienstperimeter erstellen.

  3. Konfigurieren Sie den Dienstperimeter, wie unter Details zu Dienstperimetern und Konfigurationen beschrieben.

Informationen zum Hinzufügen eines integrierten Portals im Perimeter finden Sie unter Integriertes Portal zum Perimeter hinzufügen.

VPC Service Controls mit Apigee Hybrid einrichten

Apigee Hybrid unterstützt VPC Service Controls. Es müssen jedoch zusätzliche Schritte ausgeführt werden. Gehen Sie so vor, um Apigee Hybrid in VPC Service Controls einzubinden:

  1. Richten Sie eine private Verbindung ein.
  2. Sichern Sie zusätzliche Dienste innerhalb des Perimeters.
  3. Richten Sie ein privates Repository ein. Ein privates Repository befindet sich innerhalb des Perimeters und muss nicht zwingend ein lokales Repository sein, solange es sich innerhalb des Perimeters befindet.
  4. Übertragen Sie die Apigee Images in Ihr privates Repository.
  5. Aktualisieren Sie Überschreibungen, um das private Repository während der hybriden Installation und Konfiguration zu verwenden.

Die einzelnen Schritte werden im folgenden Verfahren ausführlicher beschrieben.

So richten Sie VPC Service Controls mit Apigee Hybrid ein:

  1. Richten Sie private IP-Adressen für Ihre hybriden Netzwerkhosts ein, wie unter Private Verbindungen zu Google APIs und Google-Diensten einrichten beschrieben. Dazu müssen Sie Routen, Firewallregeln und DNS-Einträge konfigurieren, damit die Google APIs auf diese privaten IP-Adressen zugreifen können.
  2. Führen Sie die Schritte unter VPC Service Controls mit Apigee einrichten aus.

    Dabei müssen Sie folgende Dienste zusätzlich zu den Apigee-Diensten innerhalb Ihres Perimeters sichern:

    • Anthos Service Mesh
    • Cloud Monitoring (Stackdriver)
    • Google Kubernetes Engine (wenn Sie GKE ausführen)
    • Google Container Registry (wenn Sie dies als lokales Repository verwenden)

    Folgen Sie der Anleitung unter Details und Konfiguration des Dienstperimeters, um diese Dienste zu Ihrem Perimeter hinzuzufügen.

  3. Kopieren Sie die Apigee-Images in Ihr privates Repository:
    1. Laden Sie die signierten Apigee-Images aus Docker Hub herunter. Achten Sie darauf, die neuesten Versionsnummern anzugeben.

      Beispiel:

      docker pull google/apigee-installer:1.3.3
      docker pull google/apigee-authn-authz:1.3.3
      docker pull google/apigee-mart-server:1.3.3
      docker pull google/apigee-synchronizer:1.3.3
      docker pull google/apigee-runtime:1.3.3
      docker pull google/apigee-hybrid-cassandra-client:1.3.3
      docker pull google/apigee-hybrid-cassandra:1.3.3
      docker pull google/apigee-cassandra-backup-utility:1.3.3
      docker pull google/apigee-udca:1.3.3
      docker pull google/apigee-stackdriver-logging-agent:1.6.8
      docker pull google/apigee-prom-prometheus:v2.9.2
      docker pull google/apigee-stackdriver-prometheus-sidecar:0.7.5
      docker pull google/apigee-connect-agent:1.3.3
      docker pull google/apigee-watcher:1.3.3
      docker pull google/apigee-operators:1.3.3
      docker pull google/apigee-kube-rbac-proxy:v0.4.1
    2. Taggen Sie die Images.

      Im folgenden Beispiel werden Images in einem US-basierten GCR-Repository getaggt:

      docker tag google/apigee-installer:1.3.3 us.gcr.io/project_ID/apigee-installer:1.3.3
      docker tag google/apigee-authn-authz:1.3.3 us.gcr.io/project_ID/apigee-authn-authz:1.3.3
      docker tag google/apigee-mart-server:1.3.3 us.gcr.io/project_ID/apigee-mart-server:1.3.3
      docker tag google/apigee-synchronizer:1.3.3 us.gcr.io/project_ID/apigee-synchronizer:1.3.3
      docker tag google/apigee-runtime:1.3.3 us.gcr.io/project_ID/apigee-runtime:1.3.3
      docker tag google/apigee-hybrid-cassandra-client:1.3.3 us.gcr.io/project_ID/apigee-hybrid-cassandra-client:1.3.3
      docker tag google/apigee-hybrid-cassandra:1.3.3 us.gcr.io/project_ID/apigee-hybrid-cassandra:1.3.3
      docker tag google/apigee-cassandra-backup-utility:1.3.3 us.gcr.io/project_ID/apigee-cassandra-backup-utility:1.3.3
      docker tag google/apigee-udca:1.3.3 us.gcr.io/project_ID/apigee-udca:1.3.3
      docker tag google/apigee-stackdriver-logging-agent:1.6.8 us.gcr.io/project_ID/apigee-stackdriver-logging-agent:1.6.8
      docker tag google/apigee-prom-prometheus:v2.9.2 us.gcr.io/project_ID/apigee-prom-prometheus:v2.9.2
      docker tag google/apigee-stackdriver-prometheus-sidecar:0.7.5 us.gcr.io/project_ID/apigee-stackdriver-prometheus-sidecar:0.7.5
      docker tag google/apigee-connect-agent:1.3.3 us.gcr.io/project_ID/apigee-connect-agent:1.3.3
      docker tag google/apigee-watcher:1.3.3 us.gcr.io/project_ID/apigee-watcher:1.3.3
      docker tag google/apigee-operators:1.3.3 us.gcr.io/project_ID/apigee-operators:1.3.3
      docker tag google/apigee-kube-rbac-proxy:v0.4.1 us.gcr.io/project_ID/apigee-kube-rbac-proxy:v0.4.1

      Obwohl dies nicht erforderlich ist, empfiehlt Google, dass Sie für jedes Image die Projekt-ID oder einen anderen identifizierenden Wert in den Repository-Pfad aufnehmen.

    3. Übertragen Sie die Images in Ihr privates Repository.

      Im folgenden Beispiel werden die Images in ein US-basiertes GCR-Repository übertragen:

      docker push us.gcr.io/project_ID/apigee-installer:1.3.3
      docker push us.gcr.io/project_ID/apigee-authn-authz:1.3.3
      docker push us.gcr.io/project_ID/apigee-mart-server:1.3.3
      docker push us.gcr.io/project_ID/apigee-synchronizer:1.3.3
      docker push us.gcr.io/project_ID/apigee-runtime:1.3.3
      docker push us.gcr.io/project_ID/apigee-hybrid-cassandra-client:1.3.3
      docker push us.gcr.io/project_ID/apigee-hybrid-cassandra:1.3.3
      docker push us.gcr.io/project_ID/apigee-cassandra-backup-utility:1.3.3
      docker push us.gcr.io/project_ID/apigee-cassandra-backup-utility:1.3.3
      docker push us.gcr.io/project_ID/apigee-udca:1.3.3
      docker push us.gcr.io/project_ID/apigee-stackdriver-logging-agent:1.6.8
      docker push us.gcr.io/project_ID/apigee-prom-prometheus:v2.9.2
      docker push us.gcr.io/project_ID/apigee-stackdriver-prometheus-sidecar:0.7.5
      docker push us.gcr.io/project_ID/apigee-connect-agent1.3.3
      docker push us.gcr.io/project_ID/apigee-watcher1.3.3
      docker push us.gcr.io/project_ID/apigee-operators1.3.3
      docker push us.gcr.io/project_ID/apigee-kube-rbac-proxy:v0.4.1

      Obwohl dies nicht erforderlich ist, empfiehlt Google, dass Sie für jedes Image die Projekt-ID oder einen anderen identifizierenden Wert in den Repository-Pfad aufnehmen.

  4. Aktualisieren Sie Ihre Überschreibungsdatei so, dass die Image-URLs auf Ihr privates Repository verweisen, wie unter Konfigurationsüberschreibungen angeben beschrieben.

    Sie müssen die Image-URLs der folgenden Komponenten ändern:

    Komponentenname (in der Überschreibungsdatei) Bild-URL
    ao your_private_repo/apigee-operators
    authz your_private_repo/apigee-authn-authz
    cassandra your_private_repo/apigee-hybrid-cassandra

    auth: your_private_repo/apigee-hybrid-cassandra-client
    backup: your_private_repo/apigee-cassandra-backup-utility
    restore: your_private_repo/apigee-cassandra-backup-utility
    connectAgent your_private_repo/apigee-connect-agent
    installer your_private_repo/apigee-installer
    kubeRBACProxy your_private_repo/apigee-kube-rbac-proxy
    logger your_private_repo/apigee-stackdriver-logging-agent
    mart your_private_repo/apigee-mart-server
    metrics your_private_repo/apigee-prom-prometheus

    sdSidecar: your_private_repo/apigee-stackdriver-prometheus-sidecar
    runtime your_private_repo/apigee-runtime
    synchronizer your_private_repo/apigee-synchronizer
    udca your_private_repo/apigee-udca

    fluentd: your_private_repo/apigee-stackdriver-logging-agent
    watcher your_private_repo/apigee-watcher

  5. Wenden Sie Ihre Änderungen mit den neuen Images in GCR an, wie unter Konfiguration auf den Cluster anwenden beschrieben.

Integrierten Portalen Zugriff auf den Perimeter gewähren

VPC-SC unterstützt die Zuweisung von VPC-SC-Zugriffsebenen für integrierte Portale, aber dieser Prozess erfordert zusätzliche Schritte, wie in diesem Abschnitt beschrieben.

Wenn Sie den integrierten Portalen keine Zugriffsebene zuweisen, sind integrierte Portale für Apigee-SC-fähige Apigee-Organisationen nicht verfügbar.

So gewähren Sie Portalen eine Zugriffsebene:

  • Innerhalb des Perimeters werden keine integrierten Portale platziert.
  • Ermöglicht den Zugriff auf integrierte Portale von außerhalb des Perimeters.
  • Ermöglicht die Freigabe von VPC-SC-geschützten Apigee-Daten (z. B. Anwendungsdaten) für Portalnutzer außerhalb des VPC-SC-Perimeters.

Weitere Informationen finden Sie unter Zugriff auf geschützte Ressourcen von außerhalb eines Perimeters zulassen.

Vorbereitung

Bevor Sie Perimeterzugriff auf ein integriertes Portal gewähren, müssen Sie den Access Context Manager API für Ihr Projekt aktivieren, falls dies nicht bereits geschehen ist. Sie können dies über die Google Cloud Console oder mit dem Befehl services enable tun.

Um zu prüfen, ob die API aktiviert ist, prüfen Sie die Ausgabe des Befehls services list, wie unter Schritt 2: Apigee APIs aktivieren beschrieben.

Außerdem benötigen Sie die E-Mail-Adresse des Dienstkontos für das Projekt, in dem das Portal verwendet wird. Dazu benötigen Sie die GCP-Projekt-ID und die Projektnummer. In den folgenden Schritten wird beschrieben, wie Sie diese Werte erhalten:

  1. Rufen Sie die GCP-Projektdetails mit dem Befehl projects list ab, wie im folgenden Beispiel gezeigt:
    gcloud projects list

    Dieser Befehl gibt die Projekt-ID (in der Spalte PROJECT_ID) und die Projektnummer (in der Spalte PROJECT_NUMBER) für jedes Projekt in Ihrer GCP-Organisation zurück.

  2. Ermitteln Sie die E-Mail-Adresse des Apigee-Dienstkontos. Dies ist das Konto, das vom Apigee-Installationsprogramm erstellt wurde, als Sie Ihre Organisation in Schritt 3: Organisation erstellen bereitgestellt haben.

    Verwenden Sie den Befehl iam service-accounts list mit der folgenden Syntax, um diese E-Mail-Adresse abzurufen:

    gcloud iam service-accounts list --project GCP_PROJECT_ID

    Beispiele:

    gcloud iam service-accounts list --project my-project
    
    DISPLAY NAME                              EMAIL                                                DISABLED
    Apigee default service account            service-8675309@gcp-sa-apigee.iam.gserviceaccount.com  False
    Compute Engine default service account     8675309-compute@developer.gserviceaccount.com          False

    Das gewünschte Dienstkonto ist das Konto, dessen E-Mail-Adresse dem folgenden Format entspricht:
    service-GCP_PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com

    Beispiel:
    service-8675309@gcp-sa-apigee.iam.gserviceaccount.com

  3. Rufen Sie die Richtlinien-ID (oder Perimeter-ID) mit dem Befehl access-context-manager policies list ab. Übergeben Sie die Organisations-ID an diesen Befehl, wie im folgenden Beispiel gezeigt:

    gcloud access-context-manager policies list --organization=organizations/GCP_ORG_ID

    gcloud antwortet mit einer Liste der Richtlinien, die mit der angegebenen Organisation verknüpft sind. Beispiel:

    gcloud access-context-manager policies list --organization=organizations/2244340
    
    NAME          ORGANIZATION      TITLE                 ETAG
    04081981      2244340           Default policy        421924c5a97c0Icu8

    Die Richtlinien-ID von VPC-SC (auch als Perimeter-ID bezeichnet) ist die ID des VPC-SC-Dienstperimeters, der als Grenze zwischen Ihrem Projekt und anderen Diensten fungiert. Es ist der Wert in der Spalte NAME.

Schritte zum Gewähren des Perimeterzugriffs auf integrierte Portale

So gewähren Sie Perimeterzugriff auf ein integriertes Portal:

  1. Erfassen Sie die E-Mail-Adresse des Dienstkontos und die Richtlinien-ID der VPC-SC, wie unter Vorbereitungen beschrieben.
  2. Erstellen Sie auf Ihrem Administratorcomputer eine Bedingungsdatei, die die Dienstkontoadresse angibt, die dem Portal Zugriff über den Perimeter gewährt.

    Sie können der Datei einen beliebigen Namen eingeben, aber die Erweiterung muss *.yaml lauten. Beispiel: my-portal-access-rules.yaml

  3. Fügen Sie in der Bedingungsdatei einen Abschnitt members hinzu, der das Apigee-Dienstkonto angibt, wie im folgenden Beispiel gezeigt:

    - members:
      - serviceAccount:service-8675309@gcp-sa-apigee.iam.gserviceaccount.com

    Beachten Sie, dass das Hinzufügen eines members-Abschnitts ausreichend ist; Sie müssen keinen Bereich für die Zugriffsebene hinzufügen. Weitere Informationen zum Erstellen einer Bedingungsdatei finden Sie unter Zugriff nach Nutzer oder Dienstkonto beschränken.

  4. Erstellen Sie mit dem Befehl access-context-manager levels create eine Zugriffsebene. Beispiel:
    gcloud access-context-manager levels create ACCESS_LEVEL_ID \
      --title ACCESS_LEVEL_TITLE \
      --basic-level-spec PATH/TO/CONDITIONS_FILE.yaml \
      --policy=POLICY_ID

    Wobei:

    • ACCESS_LEVEL_ID eine Kennung für die neue Zugriffsebene ist, die gewährt wird. Beispiel: my-portal-access-level.
    • ACCESS_LEVEL_TITLE der Titel der Zugriffsebene ist. Sie können einen beliebigen Titel auswählen. Google empfiehlt jedoch, einen aussagekräftigen Wert zu wählen, damit Sie und andere Administratoren wissen, wofür er gilt. Beispiel: Mein Portalzugriffsebene.
    • CONDITIONS_FILE der Pfad zur YAML-Datei ist, die Sie im vorherigen Schritt erstellt haben.
    • POLICY_ID die Richtlinien- oder Perimeter-ID darstellt.

    Beispiele:

    gcloud access-context-manager levels create my-portal-access-level \
      --title My Portal Access Level \
      --basic-level-spec ~/my-portal-access-rules.yaml \
      --policy=04081981
  5. Aktualisieren Sie den Perimeter mit der neuen Zugriffsebene mit dem Befehl access-context-manager perimeters update:
    gcloud access-context-manager perimeters update POLICY_ID \
      --add-access-levels=ACCESS_LEVEL_ID \
      --policy=POLICY_ID

    Beispiele:

    gcloud access-context-manager perimeters update 04081981 \
      --add-access-levels=my-portal-access-level \
      --policy=04081981

Fehlerbehebung

Prüfen Sie Folgendes:

  • Wenn die Access Context Manager API für Ihr GCP-Projekt nicht aktiviert ist, werden Sie von gcloud aufgefordert, sie zu aktivieren, wenn Sie versuchen, Richtlinien aufzulisten oder festzulegen.
  • Achten Sie darauf, dass Sie die GCP-Organisations-ID und nicht die Apigee-Organisations-ID verwenden, wenn Sie Details zu der Organisation abrufen.
  • Einige der in diesem Abschnitt beschriebenen Befehle erfordern höhere Berechtigungen. Wenn Sie beispielsweise Details zu Dienstkonten für ein Projekt abrufen möchten, müssen Sie Inhaber dieses Projekts sein.
  • Führen Sie den Befehl iam service-accounts describe aus, um zu überprüfen, ob das Dienstkonto vorhanden ist:

    gcloud iam service-accounts describe service-8675309@gcp-sa-apigee.iam.gserviceaccount.com

    gcloud antwortet mit Informationen zum Dienstkonto, einschließlich des Anzeigenamens und der Projekt-ID, zu der es gehört. Wenn das Dienstkonto nicht vorhanden ist, gibt gcloud den Fehler NOT_FOUND zurück.

Beschränkungen

Die Einbindung von Apigee in VPC Service Controls unterliegt folgenden Einschränkungen:

  • Integrierte Portale erfordern zusätzliche Schritte für die Konfiguration.
  • Sie müssen Drupal-Portale innerhalb des Dienstperimeters bereitstellen.