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 Rolleglobal-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.
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
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 ProjektsSUBJECT_LABEL_KEY
: Der Schlüssel des Labels, mit dem die Quellarbeitslasten ausgewählt werden. Beispiel:app
,tier
oderrole
.SUBJECT_LABEL_VALUE
: Der Wert, der mit demSUBJECT_LABEL_KEY
verknüpft ist. Damit wird angegeben, welche Arbeitslasten die Quelle des zulässigen Traffics sind. WennSUBJECT_LABEL_KEY
beispielsweiseapp
undSUBJECT_LABEL_VALUE
backend
ist, sind Arbeitslasten mit dem Labelapp: 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 demTARGET_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 ProjektsSUBJECT_LABEL_KEY
: Der Schlüssel des Labels, mit dem die Quellarbeitslasten ausgewählt werden. Beispiel:app
,tier
oderrole
.SUBJECT_LABEL_VALUE
: Der Wert, der mit demSUBJECT_LABEL_KEY
verknüpft ist. Damit wird angegeben, welche Arbeitslasten die Quelle des zulässigen Traffics sind. WennSUBJECT_LABEL_KEY
beispielsweiseapp
undSUBJECT_LABEL_VALUE
backend
ist, sind Arbeitslasten mit dem Labelapp: 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 demTARGET_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.
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
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 ProjektsSUBJECT_LABEL_KEY
: Der Schlüssel des Labels, mit dem die Quellarbeitslasten ausgewählt werden. Beispiel:app
,tier
oderrole
.SUBJECT_LABEL_VALUE
: Der Wert, der mit demSUBJECT_LABEL_KEY
verknüpft ist. Damit wird angegeben, welche Arbeitslasten die Quelle des zulässigen Traffics sind. WennSUBJECT_LABEL_KEY
beispielsweiseapp
undSUBJECT_LABEL_VALUE
backend
ist, sind Arbeitslasten mit dem Labelapp: 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 demTARGET_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
oderregion
.ZONE_SUBJECT_LABEL_VALUE
: Der Wert, der mit demZONE_SUBJECT_LABEL_KEY
verknüpft ist. Sie gibt an, welche Zone die Quelle des zulässigen Traffics ist. WennZONE_SUBJECT_LABEL_KEY
beispielsweisezone
undZONE_SUBJECT_LABEL_VALUE
us-central1-a
ist, sind Arbeitslasten mit dem Labelzone: 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 demZONE_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 ProjektsSUBJECT_LABEL_KEY
: Der Schlüssel des Labels, mit dem die Quellarbeitslasten ausgewählt werden. Beispiel:app
,tier
oderrole
.SUBJECT_LABEL_VALUE
: Der Wert, der mit demSUBJECT_LABEL_KEY
verknüpft ist. Damit wird angegeben, welche Arbeitslasten die Quelle des zulässigen Traffics sind. WennSUBJECT_LABEL_KEY
beispielsweiseapp
undSUBJECT_LABEL_VALUE
backend
ist, sind Arbeitslasten mit dem Labelapp: 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 demTARGET_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
oderregion
.ZONE_SUBJECT_LABEL_VALUE
: Der Wert, der mit demZONE_SUBJECT_LABEL_KEY
verknüpft ist. Sie gibt an, welche Zone die Quelle des zulässigen Traffics ist. WennZONE_SUBJECT_LABEL_KEY
beispielsweisezone
undZONE_SUBJECT_LABEL_VALUE
us-central1-a
ist, sind Arbeitslasten mit dem Labelzone: 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 demZONE_TARGET_LABEL_KEY
verknüpft ist. Sie gibt an, welche Zone das Ziel des zulässigen Traffics ist.