Intra-Projekt-Netzwerkrichtlinien erstellen

Auf dieser Seite finden Sie eine Anleitung zum Konfigurieren von Netzwerkrichtlinien für Intra-Projekt-Traffic in Google Distributed Cloud (GDC) Air-Gapped.

In Projektnetzwerkrichtlinien werden Regeln für eingehenden oder ausgehenden Traffic definiert. Sie können Richtlinien definieren, die die Kommunikation innerhalb von Projekten, zwischen Projekten und mit externen IP-Adressen zulassen.

Standardmäßig gelten diese Richtlinien weltweit für alle Zonen. Weitere Informationen zu globalen Ressourcen in einem GDC-Universum finden Sie unter Übersicht über mehrere Zonen.

Wenn die Durchsetzung des Intra-Project-Traffics in einer einzelnen Zone erforderlich ist, lesen Sie Richtlinie auf Arbeitslastebene für Intra-Project-Traffic in einer einzelnen Zone erstellen.

Hinweise

Zum Konfigurieren von Netzwerkrichtlinien für Intra-Projekt-Traffic benötigen Sie Folgendes:

  • Die erforderlichen Identitäts- und Zugriffsrollen. Zum Verwalten von Richtlinien für ein bestimmtes Projekt benötigen Sie die Rolle project-networkpolicy-admin. In Umgebungen mit mehreren Zonen, in denen Sie Richtlinien verwalten müssen, die sich über alle Zonen erstrecken, benötigen Sie die Rolle global-project-networkpolicy-admin. Weitere Informationen finden Sie unter Vordefinierte Rollen und Zugriff vorbereiten.
  • Ein vorhandenes Projekt. Weitere Informationen finden Sie unter Projekt erstellen.

Projektinterne Richtlinie erstellen

Für Traffic innerhalb eines Projekts wendet GDC standardmäßig eine vordefinierte Projektnetzwerkrichtlinie, die Intra-Project-Richtlinie, auf jedes Projekt an. Standardmäßig können Arbeitslasten in einem Projekt-Namespace miteinander kommunizieren, ohne etwas für externe Ressourcen freizugeben.

Standardmäßig gibt es keine Richtlinie für ausgehenden Traffic, sodass ausgehender Traffic für den gesamten Intra-Projekt-Traffic zulässig ist. Wenn Sie jedoch eine einzelne Richtlinie für ausgehenden Traffic festlegen, ist nur der Traffic zulässig, der in der Richtlinie angegeben ist.

Richtlinie für eingehenden Traffic innerhalb des Projekts erstellen

Wenn Sie ein Projekt erstellen, erstellen Sie implizit eine Standard-ProjectNetworkPolicy-Basisressource, die die Kommunikation innerhalb des Projekts ermöglicht. Diese Richtlinie lässt eingehenden Traffic von anderen Arbeitslasten im selben Projekt zu.

Sie können die Standardrichtlinie entfernen. Dadurch wird jedoch die projektinterne Kommunikation für alle Dienste und Arbeitslasten im Projekt verweigert. Verwenden Sie den Befehl kubectl delete, um die Richtlinie zu entfernen:

kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT

Sie können die Standardrichtlinie wieder hinzufügen, indem Sie das folgende Manifest anwenden:

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
  namespace: PROJECT
  name: base-policy-allow-intra-project-traffic
spec:
  policyType: Ingress
  ingress:
  - from:
    - projectSelector:
        projects:
          matchNames:
          - PROJECT
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: Name Ihres Projekts

Richtlinie für ausgehenden Traffic innerhalb eines Projekts erstellen

Wenn Sie die Verhinderung von Datenexfiltration deaktivieren und eine ProjectNetworkPolicy-Richtlinie für das Projekt anwenden, z. B. um den Zugriff auf eine externe Ressource zu verhindern, verwenden Sie die folgende erforderliche Richtlinie, um ausgehenden Traffic innerhalb des Projekts zuzulassen:

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
  namespace: PROJECT
  name: allow-intra-project-outbound-traffic
spec:
  policyType: Egress
  egress:
  - to:
    - projectSelector:
        projects:
          matchNames:
          - PROJECT
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: Name Ihres Projekts

Intra-Projekt-Richtlinie auf Arbeitslast-Ebene erstellen

Netzwerkrichtlinien auf Arbeitslastebene bieten eine detaillierte Steuerung der Kommunikation zwischen einzelnen Arbeitslasten innerhalb eines Projekts. Diese Granularität ermöglicht eine strengere Kontrolle des Netzwerkzugriffs und verbessert so die Sicherheit und Ressourcennutzung.

Richtlinie für eingehenden Traffic auf Arbeitslast- und Projektebene erstellen

Wenn Sie ein Projekt erstellen, erstellen Sie implizit eine standardmäßige ProjectNetworkPolicy-Basisressource, die die Kommunikation zwischen allen Arbeitslasten innerhalb des Projekts ermöglicht. Diese Richtlinie lässt eingehenden Traffic von anderen Arbeitslasten im selben Projekt zu.

Wenn Sie eine Intra-Projekt-Richtlinie auf Arbeitslastebene für eingehenden Traffic erstellen möchten, muss zuerst die Standardbasisrichtlinie gelöscht werden. Andernfalls kann es zu unerwartetem Verhalten kommen.

  1. Führen Sie den folgenden Befehl aus, um die Standardbasisrichtlinie zu löschen:

    kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
    
  2. Wenn Sie eine Intra-Projekt-Richtlinie auf Arbeitslastebene für eingehenden Traffic 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: PROJECT
      name: allow-intra-project-inbound-traffic-from-target-to-subject
    spec:
      policyType: Ingress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
      ingress:
      - from:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
    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: Name Ihres Projekts
    • SUBJECT_LABEL_KEY: Der Schlüssel des Labels, mit dem die Quellarbeitslasten ausgewählt werden. Beispiel: app, tier oder role.
    • SUBJECT_LABEL_VALUE: Der Wert, der mit dem SUBJECT_LABEL_KEY verknüpft ist. Damit wird angegeben, welche Arbeitslasten die Quelle des zulässigen Traffics sind. Wenn SUBJECT_LABEL_KEY beispielsweise app und SUBJECT_LABEL_VALUE backend ist, sind Arbeitslasten mit dem Label app: backend die Traffic-Quelle.
    • TARGET_LABEL_KEY: Der Schlüssel des Labels, mit dem die Zielarbeitslasten ausgewählt werden.
    • TARGET_LABEL_VALUE: Der Wert, der mit dem TARGET_LABEL_KEY verknüpft ist. Damit wird angegeben, welche Arbeitslasten das Ziel des zulässigen Traffics sind.

Richtlinie für ausgehenden Traffic auf Arbeitslast- und Projektebene erstellen

  • Wenn Sie eine Richtlinie für ausgehenden Traffic auf Arbeitslastebene für ein Projekt erstellen möchten, erstellen Sie die folgende benutzerdefinierte Ressource und wenden Sie sie an:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT
      name: allow-intra-project-outbound-traffic-to-subject-from-target
    spec:
      policyType: Egress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
      egress:
      - to:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
    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: Name Ihres Projekts
    • SUBJECT_LABEL_KEY: Der Schlüssel des Labels, mit dem die Quellarbeitslasten ausgewählt werden. Beispiel: app, tier oder role.
    • SUBJECT_LABEL_VALUE: Der Wert, der mit dem SUBJECT_LABEL_KEY verknüpft ist. Damit wird angegeben, welche Arbeitslasten die Quelle des zulässigen Traffics sind. Wenn SUBJECT_LABEL_KEY beispielsweise app und SUBJECT_LABEL_VALUE backend ist, sind Arbeitslasten mit dem Label app: backend die Traffic-Quelle.
    • TARGET_LABEL_KEY: Der Schlüssel des Labels, mit dem die Zielarbeitslasten ausgewählt werden.
    • TARGET_LABEL_VALUE: Der Wert, der mit dem TARGET_LABEL_KEY verknüpft ist. Damit wird angegeben, welche Arbeitslasten das Ziel des zulässigen Traffics sind.

Richtlinie auf Arbeitslast- und Projektebene für eine einzelne Zone erstellen

Netzwerkrichtlinien auf Arbeitslastebene können PNP in einer einzelnen Zone erzwingen. Arbeitslasten in einer einzelnen Zone können bestimmte Labels hinzugefügt werden. So können Sie die Kommunikation zwischen einzelnen Arbeitslasten innerhalb eines Projekts oder in verschiedenen Projekten für diese Zone steuern.

Richtlinie auf Arbeitslastebene für eingehenden Traffic für ein einzelnes Projekt in einer einzelnen Zone erstellen

Wenn Sie ein Projekt erstellen, erstellen Sie implizit eine standardmäßige ProjectNetworkPolicy-Basisressource, die die Kommunikation zwischen allen Arbeitslasten innerhalb des Projekts ermöglicht. Diese Richtlinie lässt eingehenden Traffic von anderen Arbeitslasten im selben Projekt zu.

Wenn Sie eine Intra-Project-Richtlinie auf Arbeitslastebene für eingehenden Traffic für eine einzelne Zone erstellen möchten, muss zuerst die Standardbasisrichtlinie gelöscht werden. Andernfalls kann es zu unerwartetem Verhalten kommen.

  1. Führen Sie den folgenden Befehl aus, um die Standardbasisrichtlinie zu löschen:

    kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
    
  2. Wenn Sie eine Intra-Projekt-Traffic-Netzwerkrichtlinie auf Arbeitslastebene für Ingress mit einer einzelnen Zone 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: PROJECT
      name: allow-single-zone-intra-project-inbound-traffic-from-target-to-subject
    spec:
      policyType: Ingress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
            ZONE_SUBJECT_LABEL_KEY: ZONE_SUBJECT_LABEL_VALUE
      ingress:
      - from:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
                ZONE_TARGET_LABEL_KEY: ZONE_TARGET_LABEL_VALUE
    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: Name Ihres Projekts
    • SUBJECT_LABEL_KEY: Der Schlüssel des Labels, mit dem die Quellarbeitslasten ausgewählt werden. Beispiel: app, tier oder role.
    • SUBJECT_LABEL_VALUE: Der Wert, der mit dem SUBJECT_LABEL_KEY verknüpft ist. Damit wird angegeben, welche Arbeitslasten die Quelle des zulässigen Traffics sind. Wenn SUBJECT_LABEL_KEY beispielsweise app und SUBJECT_LABEL_VALUE backend ist, sind Arbeitslasten mit dem Label app: backend die Traffic-Quelle.
    • TARGET_LABEL_KEY: Der Schlüssel des Labels, mit dem die Zielarbeitslasten ausgewählt werden.
    • TARGET_LABEL_VALUE: Der Wert, der mit dem TARGET_LABEL_KEY verknüpft ist. Damit wird angegeben, welche Arbeitslasten das Ziel des zulässigen Traffics sind.
    • ZONE_SUBJECT_LABEL_KEY: Der Schlüssel des Labels, das zum Auswählen der Quellzone verwendet wird. Beispiel: zone oder region.
    • ZONE_SUBJECT_LABEL_VALUE: Der Wert, der mit dem ZONE_SUBJECT_LABEL_KEY verknüpft ist. Sie gibt an, welche Zone die Quelle des zulässigen Traffics ist. Wenn ZONE_SUBJECT_LABEL_KEY beispielsweise zone und ZONE_SUBJECT_LABEL_VALUE us-central1-a ist, sind Arbeitslasten mit dem Label zone: us-central1-a die Traffic-Quelle.
    • ZONE_TARGET_LABEL_KEY: Der Schlüssel des Labels, mit dem die Zielzone ausgewählt wird.
    • ZONE_TARGET_LABEL_VALUE: Der Wert, der mit dem ZONE_TARGET_LABEL_KEY verknüpft ist. Sie gibt an, welche Zone das Ziel des zulässigen Traffics ist.

Richtlinie auf Arbeitslastebene für ausgehenden Traffic für ein einzelnes Projekt erstellen

  • Wenn Sie eine Intra-Project-Richtlinie auf Arbeitslast- und Einzelzonenebene für den ausgehenden Traffic 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: PROJECT
      name: allow-single-zone-intra-project-outbound-traffic-to-subject-from-target
    spec:
      policyType: Egress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
            ZONE_SUBJECT_LABEL_KEY: ZONE_SUBJECT_LABEL_VALUE
      egress:
      - to:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
                ZONE_TARGET_LABEL_KEY: ZONE_TARGET_LABEL_VALUE
    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: Name Ihres Projekts
    • SUBJECT_LABEL_KEY: Der Schlüssel des Labels, mit dem die Quellarbeitslasten ausgewählt werden. Beispiel: app, tier oder role.
    • SUBJECT_LABEL_VALUE: Der Wert, der mit dem SUBJECT_LABEL_KEY verknüpft ist. Damit wird angegeben, welche Arbeitslasten die Quelle des zulässigen Traffics sind. Wenn SUBJECT_LABEL_KEY beispielsweise app und SUBJECT_LABEL_VALUE backend ist, sind Arbeitslasten mit dem Label app: backend die Traffic-Quelle.
    • TARGET_LABEL_KEY: Der Schlüssel des Labels, mit dem die Zielarbeitslasten ausgewählt werden.
    • TARGET_LABEL_VALUE: Der Wert, der mit dem TARGET_LABEL_KEY verknüpft ist. Damit wird angegeben, welche Arbeitslasten das Ziel des zulässigen Traffics sind.
    • ZONE_SUBJECT_LABEL_KEY: Der Schlüssel des Labels, das zum Auswählen der Quellzone verwendet wird. Beispiel: zone oder region.
    • ZONE_SUBJECT_LABEL_VALUE: Der Wert, der mit dem ZONE_SUBJECT_LABEL_KEY verknüpft ist. Sie gibt an, welche Zone die Quelle des zulässigen Traffics ist. Wenn ZONE_SUBJECT_LABEL_KEY beispielsweise zone und ZONE_SUBJECT_LABEL_VALUE us-central1-a ist, sind Arbeitslasten mit dem Label zone: us-central1-a die Traffic-Quelle.
    • ZONE_TARGET_LABEL_KEY: Der Schlüssel des Labels, mit dem die Zielzone ausgewählt wird.
    • ZONE_TARGET_LABEL_VALUE: Der Wert, der mit dem ZONE_TARGET_LABEL_KEY verknüpft ist. Sie gibt an, welche Zone das Ziel des zulässigen Traffics ist.