Organisationsfremde Netzwerkrichtlinien erstellen

Auf dieser Seite finden Sie eine Anleitung zum Konfigurieren von Netzwerkrichtlinien für Traffic außerhalb der Organisation in Google Distributed Cloud (GDC) mit Air Gap.

Traffic außerhalb der Organisation bezieht sich auf die Kommunikation zwischen Diensten und Arbeitslasten aus verschiedenen Organisationen und externen Endpunkten.

Hinweis

Zum Konfigurieren von Netzwerkrichtlinien für Traffic außerhalb der Organisation benötigen Sie Folgendes:

Richtlinie für Traffic außerhalb der Organisation erstellen

Sie können Richtlinien für eingehenden oder ausgehenden Traffic außerhalb der Organisation definieren, um die Kommunikation zwischen Diensten und Arbeitslasten aus verschiedenen Organisationen und externen Endpunkten zu verwalten.

Sie können globale Projektnetzwerkrichtlinien für Traffic außerhalb der Organisation erstellen, die für Traffic in allen Zonen Ihrer Organisation gelten. Weitere Informationen zu globalen Ressourcen in einem GDC-Universum finden Sie unter Übersicht über mehrere Zonen.

Das Verbinden von Diensten und Arbeitslasten mit einem Ziel außerhalb Ihres Projekts in einer anderen Organisation erfordert eine ausdrückliche Genehmigung. Sie müssen den Schutz vor Daten-Exfiltration deaktivieren, um Traffic außerhalb der Organisation zuzulassen.

Globale Firewallregel für eingehenden Traffic außerhalb der Organisation erstellen

Wenn Sie Arbeitslasten in Ihrem Projekt mit einem externen Load Balancer bereitstellen, müssen Sie auch eine ProjectNetworkPolicy-Richtlinie für eingehenden Traffic erstellen, damit externe Client-IP-Adressen auf die Arbeitslasten zugreifen können.

Diese globale Richtlinie für eingehenden Traffic gilt für alle Zonen in Ihrer Organisation.

Führen Sie die folgenden Schritte aus, um eine neue Firewallregel zu erstellen und eingehenden Traffic von Arbeitslasten in einem Projekt einer anderen Organisation zuzulassen:

Console

  1. Öffnen Sie in der GDC Console des Projekts, das Sie konfigurieren, im Navigationsmenü Netzwerk > Firewall und dann die Seite Firewall.
  2. Klicken Sie in der Aktionsleiste auf Erstellen , um eine neue Firewallregel zu erstellen.
  3. Geben Sie auf der Seite Details zur Firewallregel die folgenden Informationen an:

    1. Geben Sie im Feld Name einen gültigen Namen für Ihre Firewallregel ein.
    2. Wählen Sie im Bereich Trafficrichtung die Option Eingehender Traffic aus, um eingehenden Traffic von Arbeitslasten in anderen Organisationen zuzulassen.
    3. Wählen Sie im Bereich Ziel eine der folgenden Optionen aus:
      • Alle Nutzerarbeitslasten:Ermöglicht Verbindungen zu den Arbeitslasten des Projekts, das Sie konfigurieren.
      • Dienst:Gibt an, dass diese Firewallregel auf einen bestimmten Dienst im Projekt ausgerichtet ist, das Sie konfigurieren.
    4. Wenn Ihr Ziel ein Projektdienst ist, wählen Sie den Namen des Dienstes aus der Liste der verfügbaren Dienste im Drop-down-Menü Dienst aus.
    5. Wählen Sie im Bereich Von die Option Außerhalb der Organisation aus und geben Sie im Feld CIDR den CIDR-Block einer anderen Organisation ein, um Verbindungen vom Netzwerk dieser Organisation zuzulassen.
    6. Wenn Ihr Ziel alle Nutzerarbeitslasten sind, wählen Sie im Bereich Protokolle und Ports eine der folgenden Optionen aus:
      • Alle zulassen:Ermöglicht Verbindungen über ein beliebiges Protokoll oder einen beliebigen Port.
      • Angegebene Protokolle und Ports:Ermöglicht Verbindungen nur über die Protokolle und Ports, die Sie in den entsprechenden Feldern für die Firewallregel für eingehenden Traffic angeben.
  4. Klicken Sie auf der Seite Details zur Firewallregel auf Erstellen.

Sie haben jetzt Verbindungen von Projektarbeitslasten einer anderen Organisation zugelassen. Nachdem Sie die Firewallregel erstellt haben, wird sie in einer Tabelle auf der Seite Firewall angezeigt.

API

Konfigurieren und wenden Sie Ihre eigene benutzerdefinierte ProjectNetworkPolicy-Richtlinie für eingehenden Traffic an:

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
  namespace: PROJECT
  name: allow-inbound-traffic-from-external
spec:
  policyType: Ingress
  subject:
    subjectType: UserWorkload
  ingress:
  - from:
    - ipBlock:
        cidr: CIDR
EOF

Ersetzen Sie Folgendes:

  • GLOBAL_API_SERVER: der kubeconfig-Pfad des globalen API-Servers. Weitere Informationen finden Sie unter Globale und zonale API-Server. Wenn Sie noch keine kubeconfig-Datei für den API-Server generiert haben, finden Sie weitere Informationen unter Anmelden.
  • PROJECT: der Name des GDC-Projekts.
  • CIDR: der CIDR-Block einer anderen Organisation.

Diese Richtlinie ist erforderlich, da der externe Load Balancer Direct Server Return (DSR) verwendet, wodurch die externe Quell-IP-Adresse beibehalten und der Load Balancer auf dem Rückgabepfad umgangen wird.

Globale Firewallregel für ausgehenden Traffic außerhalb der Organisation erstellen

Wenn Sie Daten an Dienste außerhalb der Organisation übertragen möchten, müssen Sie zuerst den Schutz vor Daten-Exfiltration deaktivieren. Anschließend müssen Sie eine Firewallregel für ausgehenden Traffic konfigurieren, um ausgehenden Traffic von Ihren Projektarbeitslasten oder -diensten zuzulassen.

In diesem Abschnitt wird beschrieben, wie Sie ausgehenden Traffic auf Projektebene aktivieren. Informationen zum Verwalten von ausgehenden Verbindungen auf Arbeitslastebene finden Sie unter NAT-Übersicht.

Diese globale Firewallregel für ausgehenden Traffic gilt für alle Zonen in Ihrer Organisation.

Führen Sie die folgenden Schritte aus, um eine neue Firewallregel zu erstellen und ausgehenden Traffic von Projektarbeitslasten oder -diensten zu Arbeitslasten in einer anderen Organisation zuzulassen:

Console

  1. Öffnen Sie in der GDC Console des Projekts, das Sie konfigurieren, im Navigationsmenü Netzwerk > Firewall und dann die Seite Firewall.
  2. Klicken Sie in der Aktionsleiste auf Erstellen , um eine neue Firewallregel zu erstellen.
  3. Geben Sie auf der Seite Details zur Firewallregel die folgenden Informationen an:

    1. Geben Sie im Feld Name einen gültigen Namen für Ihre Firewallregel ein.
    2. Wählen Sie im Bereich Trafficrichtung die Option Ausgehender Traffic aus, um anzugeben, dass diese Firewallregel ausgehenden Traffic steuert.
    3. Wählen Sie im Bereich Ziel eine der folgenden Optionen aus:
      • Alle Nutzerarbeitslasten:Ermöglicht Verbindungen von den Arbeitslasten des Projekts, das Sie konfigurieren.
      • Dienst:Gibt an, dass diese Firewallregel auf einen bestimmten Dienst im Projekt ausgerichtet ist, das Sie konfigurieren.
    4. Wenn Ihr Ziel ein Projektdienst ist, wählen Sie den Namen des Dienstes aus der Liste der verfügbaren Dienste im Drop-down-Menü Dienst aus.
    5. Wählen Sie im Bereich An die Option Außerhalb der Organisation aus und geben Sie im Feld CIDR den CIDR-Block einer anderen Organisation ein, um Verbindungen zum Netzwerk dieser Organisation zuzulassen.
    6. Wenn Ihr Ziel alle Nutzerarbeitslasten sind, wählen Sie im Bereich Protokolle und Ports eine der folgenden Optionen aus:
      • Alle zulassen:Ermöglicht Verbindungen über ein beliebiges Protokoll oder einen beliebigen Port.
      • Angegebene Protokolle und Ports:Ermöglicht Verbindungen nur über die Protokolle und Ports, die Sie in den entsprechenden Feldern für die Firewallregel für ausgehenden Traffic angeben.
  4. Klicken Sie auf der Seite Details zur Firewallregel auf Erstellen.

Sie haben jetzt Verbindungen zu einer anderen Organisation zugelassen. Nachdem Sie die Firewallregel erstellt haben, wird sie in einer Tabelle auf der Seite Firewall angezeigt.

API

Wenn Sie ausgehenden Traffic zu Diensten außerhalb der Organisation zulassen möchten, passen Sie Ihre ProjectNetworkPolicy-Ressource an. Da der Schutz vor Daten-Exfiltration jedoch standardmäßig aktiviert ist, wird in der benutzerdefinierten ProjectNetworkPolicy-Richtlinie für ausgehenden Traffic im Statusfeld ein Validierungsfehler angezeigt und die Datenebene ignoriert sie. Dieses Verhalten ist beabsichtigt.

Sie können Arbeitslasten aus einem bestimmten Projekt übertragen, wenn Sie die Daten-Exfiltration für dieses Projekt zulassen. Der von Ihnen zugelassene ausgehende Traffic ist eine Quellnetzwerkadressübersetzung (NAT) mit einer bekannten IP-Adresse, die für das Projekt zugewiesen wurde.

So aktivieren Sie Ihre benutzerdefinierte Richtlinie für ausgehenden Traffic:

  1. Konfigurieren und wenden Sie Ihre eigene benutzerdefinierte ProjectNetworkPolicy-Richtlinie für ausgehenden Traffic auf alle Nutzerarbeitslasten in einem Projekt an.

    Verwenden Sie das folgende Beispiel:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT
      name: allow-outbound-traffic-to-external
    spec:
      subject:
        subjectType: UserWorkload
      egress:
      - to:
        - ipBlock:
            cidr: CIDR
    EOF
    

    Die Richtlinie lässt ausgehenden Traffic zu allen Hosts im CIDR-Block zu, die sich außerhalb der Organisation befinden. Ihr erster Versuch muss einen beabsichtigten und notwendigen Statusfehler verursachen.

  2. Prüfen Sie, ob im Status ein Validierungsfehler angezeigt wird.

  3. Bitten Sie den IAM-Administrator der Organisation, den Schutz vor Daten-Exfiltration zu deaktivieren. Dadurch wird Ihre Konfiguration aktiviert, während der gesamte andere ausgehende Traffic verhindert wird.

  4. Prüfen Sie die erstellte ProjectNetworkPolicy und vergewissern Sie sich, dass der Fehler im Feld für den Validierungsstatus behoben ist und der Status Ready auf True gesetzt ist. Das bedeutet, dass Ihre Richtlinie wirksam ist:

    kubectl --kubeconfig GLOBAL_API_SERVER \
        get projectnetworkpolicy allow-outbound-traffic-to-external \
        -n PROJECT -o yaml
    

    Ersetzen Sie Folgendes:

    • GLOBAL_API_SERVER: der kubeconfig-Pfad des globalen API-Servers. Weitere Informationen finden Sie unter Globale und zonale API-Server. Wenn Sie noch keine kubeconfig-Datei für den API-Server generiert haben, finden Sie weitere Informationen unter Anmelden.

    • PROJECT: der Name des GDC-Projekts.

Nachdem Sie diese Richtlinie angewendet haben und keine anderen Richtlinien für ausgehenden Traffic definiert haben, wird der gesamte andere ausgehende Traffic für PROJECT abgelehnt.

Richtlinie für Traffic außerhalb der Organisation für Standardcluster erstellen

Standardcluster sind Kubernetes-Cluster auf Projektebene, die mehr Kontrolle, Flexibilität und Clusteradministratorberechtigungen bieten.

Richtlinie für eingehenden Traffic außerhalb der Organisation für Standardcluster erstellen

  1. Wenn Sie eine Richtlinie für eingehenden Traffic außerhalb der Organisation für Standardcluster erstellen möchten, erstellen und wenden Sie die folgende benutzerdefinierte Ressource an:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: STANDARD_CLUSTER_PROJECT
      name: allow-ingress-from-external-endpoint-to-standard-cluster-pod
    spec:
      policyType: Ingress
      subject:
        subjectType: UserWorkload
        userWorkloadSelector:
          labelSelector:
            clusters:
              matchLabels:
                kubernetes.io/metadata.name: STANDARD_CLUSTER_NAME
            namespaces:
              matchLabels:
                kubernetes.io/metadata.name: SUBJECT_NAMESPACE
            workloads:
              matchLabels:
                SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
      ingress:
      - from:
        - ipBlocks:
          - cidr: EXTERNAL_IP
        ports:
        - protocol: TCP
          port: PORT
    EOF
    

    Ersetzen Sie Folgendes:

    • GLOBAL_API_SERVER: der kubeconfig-Pfad des globalen API Servers. Weitere Informationen finden Sie unter Globale und zonale API-Server. Wenn Sie noch keine kubeconfig-Datei für den API-Server generiert haben, finden Sie weitere Informationen unter Anmelden.
    • STANDARD_CLUSTER_PROJECT: der Name des Standardclusterprojekts.
    • STANDARD_CLUSTER_NAME: der Name des Standardclusters.
    • SUBJECT_LABEL_KEY: der Schlüssel des Labels, mit dem die Arbeitslasten des Subjekts ausgewählt werden. Beispiel: app, tier oder role.
    • SUBJECT_LABEL_VALUE: der Wert, der mit SUBJECT_LABEL_KEY verknüpft ist. Wenn SUBJECT_LABEL_KEY beispielsweise app und SUBJECT_LABEL_VALUE backend ist, empfangen Arbeitslasten mit dem Label app: backend den Traffic.
    • EXTERNAL_IP: die IP-Adresse des externen Endpunkts.
    • PORT: der Port der Arbeitslast des Subjekts, für den Traffic zulässig ist.

Richtlinie für ausgehenden Traffic außerhalb der Organisation für Standardcluster erstellen

  1. Wenn Sie eine Richtlinie für ausgehenden Traffic außerhalb der Organisation für Standardcluster erstellen möchten, erstellen und wenden Sie die folgende benutzerdefinierte Ressource an:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: STANDARD_CLUSTER_PROJECT
      name: allow-egress-from-standard-cluster-pod-to-external-endpoint
    spec:
      policyType: Egress
      subject:
        subjectType: UserWorkload
        userWorkloadSelector:
          labelSelector:
            clusters:
              matchLabels:
                kubernetes.io/metadata.name: STANDARD_CLUSTER_NAME
            namespaces:
              matchLabels:
                kubernetes.io/metadata.name: SUBJECT_NAMESPACE
            workloads:
              matchLabels:
                SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
      egress:
      - to:
        - ipBlocks:
          - cidr: EXTERNAL_IP
        ports:
        - protocol: TCP
          port: PORT
    EOF
    

    Ersetzen Sie Folgendes:

    • GLOBAL_API_SERVER: der kubeconfig-Pfad des globalen API Servers. Weitere Informationen finden Sie unter Globale und zonale API-Server. Wenn Sie noch keine kubeconfig-Datei für den API-Server generiert haben, finden Sie weitere Informationen unter Anmelden.
    • STANDARD_CLUSTER_PROJECT: der Name des Standardclusterprojekts.
    • STANDARD_CLUSTER_NAME: der Name des Standardclusters.
    • SUBJECT_LABEL_KEY: der Schlüssel des Labels, mit dem die Arbeitslasten des Subjekts ausgewählt werden. Beispiel: app, tier oder role.
    • SUBJECT_LABEL_VALUE: der Wert, der mit SUBJECT_LABEL_KEY verknüpft ist. Wenn SUBJECT_LABEL_KEY beispielsweise app und SUBJECT_LABEL_VALUE backend ist, senden Arbeitslasten mit dem Label app: backend den Traffic.
    • EXTERNAL_IP: die IP-Adresse des externen Endpunkts.
    • PORT: der Port des externen Endpunkts, für den Traffic zulässig ist.