Cette page explique comment configurer des règles de réseau pour le trafic intra-projet dans Google Distributed Cloud (GDC) air-gapped.
Les règles de réseau du projet définissent des règles d'entrée ou de sortie. Vous pouvez définir des règles qui autorisent la communication au sein des projets, entre les projets et vers des adresses IP externes.
Par défaut, ces règles s'appliquent à toutes les zones du monde. Pour en savoir plus sur les ressources globales dans un univers GDC, consultez Présentation des multizones.
Si l'application du trafic intra-projet est nécessaire dans une seule zone, consultez Créer une stratégie intra-projet au niveau de la charge de travail pour une seule zone.
Avant de commencer
Pour configurer des règles de réseau de trafic intra-projet, vous devez disposer des éléments suivants :
- Les rôles d'identité et d'accès nécessaires. Pour gérer les règles d'un projet spécifique, vous devez disposer du rôle
project-networkpolicy-admin
. Pour les environnements multizones dans lesquels vous devez gérer des règles qui s'appliquent à toutes les zones, vous avez besoin du rôleglobal-project-networkpolicy-admin
. Pour en savoir plus, consultez Préparer les rôles et les accès prédéfinis. - Un projet existant. Pour en savoir plus, consultez Créer un projet.
Créer une règle intra-projet
Pour le trafic au sein d'un projet, GDC applique par défaut une stratégie de réseau de projet prédéfinie, la stratégie intra-projet, à chaque projet. Par défaut, les charges de travail d'un espace de noms de projet peuvent communiquer entre elles sans rien exposer aux ressources externes.
Par défaut, aucune règle de sortie n'est appliquée. Le trafic sortant est donc autorisé pour tout le trafic intra-projet. Toutefois, lorsque vous définissez une seule règle de trafic sortant, seul le trafic spécifié par la règle est autorisé.
Créer une règle d'entrée intra-projet
Lorsque vous créez un projet, vous créez implicitement une ressource ProjectNetworkPolicy
de base par défaut qui permet la communication au sein du projet. Cette règle autorise le trafic entrant provenant d'autres charges de travail du même projet.
Vous pouvez supprimer la règle par défaut, mais sachez que cela entraînera le refus de la communication intra-projet pour tous les services et charges de travail du projet. Pour supprimer la règle, utilisez la commande kubectl delete
:
kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
Vous pouvez rajouter la règle par défaut en appliquant le fichier manifeste suivant :
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
Remplacez les éléments suivants :
GLOBAL_API_SERVER
: chemin d'accès au fichier kubeconfig du serveur d'API global. Pour en savoir plus, consultez Serveurs d'API globaux et zonaux. Si vous n'avez pas encore généré de fichier kubeconfig pour le serveur d'API, consultez Se connecter pour en savoir plus.PROJECT
: nom de votre projet.
Créer une règle de sortie intra-projet
Lorsque vous désactivez la protection contre l'exfiltration de données et que vous appliquez une règle de sortie ProjectNetworkPolicy
au projet, par exemple en empêchant l'accès à une ressource externe, utilisez la règle requise suivante pour autoriser le trafic sortant intra-projet :
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
Remplacez les éléments suivants :
GLOBAL_API_SERVER
: chemin d'accès au fichier kubeconfig du serveur d'API global. Pour en savoir plus, consultez Serveurs d'API globaux et zonaux. Si vous n'avez pas encore généré de fichier kubeconfig pour le serveur d'API, consultez Se connecter pour en savoir plus.PROJECT
: nom de votre projet.
Créer une règle intra-projet au niveau de la charge de travail
Les règles de réseau au niveau de la charge de travail offrent un contrôle précis de la communication entre les charges de travail individuelles d'un projet. Cette précision permet un contrôle plus strict de l'accès au réseau, ce qui améliore la sécurité et l'utilisation des ressources.
Créer une règle d'entrée intra-projet au niveau de la charge de travail
Lorsque vous créez un projet, vous créez implicitement une ressource ProjectNetworkPolicy
de base par défaut qui permet la communication intra-projet entre toutes les charges de travail. Cette règle autorise le trafic entrant provenant d'autres charges de travail du même projet.
Pour créer une règle d'entrée au niveau de la charge de travail intrapériphérique, la règle de base par défaut doit d'abord être supprimée. Dans le cas contraire, un comportement inattendu peut se produire.
Pour supprimer la règle de base par défaut, exécutez la commande suivante :
kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
Pour créer une règle d'entrée au niveau de la charge de travail intra-projet, créez et appliquez la ressource personnalisée suivante :
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
Remplacez les éléments suivants :
GLOBAL_API_SERVER
: chemin d'accès au fichier kubeconfig du serveur d'API global. Pour en savoir plus, consultez Serveurs d'API globaux et zonaux. Si vous n'avez pas encore généré de fichier kubeconfig pour le serveur d'API, consultez Se connecter pour en savoir plus.PROJECT
: nom de votre projet.SUBJECT_LABEL_KEY
: clé du libellé utilisé pour sélectionner les charges de travail sources. Par exemple,app
,tier
ourole
.SUBJECT_LABEL_VALUE
: valeur associée àSUBJECT_LABEL_KEY
. Il spécifie les charges de travail qui sont à l'origine du trafic autorisé. Par exemple, siSUBJECT_LABEL_KEY
estapp
et queSUBJECT_LABEL_VALUE
estbackend
, les charges de travail portant le libelléapp: backend
sont la source de trafic.TARGET_LABEL_KEY
: clé du libellé utilisé pour sélectionner les charges de travail de destination.TARGET_LABEL_VALUE
: valeur associée àTARGET_LABEL_KEY
. Il spécifie les charges de travail qui sont la destination du trafic autorisé.
Créer une règle de sortie intra-projet au niveau de la charge de travail
Pour créer une règle de sortie intra-projet au niveau de la charge de travail, créez et appliquez la ressource personnalisée suivante :
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
Remplacez les éléments suivants :
GLOBAL_API_SERVER
: chemin d'accès au fichier kubeconfig du serveur d'API global. Pour en savoir plus, consultez Serveurs d'API globaux et zonaux. Si vous n'avez pas encore généré de fichier kubeconfig pour le serveur d'API, consultez Se connecter pour en savoir plus.PROJECT
: nom de votre projet.SUBJECT_LABEL_KEY
: clé du libellé utilisé pour sélectionner les charges de travail sources. Par exemple,app
,tier
ourole
.SUBJECT_LABEL_VALUE
: valeur associée àSUBJECT_LABEL_KEY
. Il spécifie les charges de travail qui sont à l'origine du trafic autorisé. Par exemple, siSUBJECT_LABEL_KEY
estapp
et queSUBJECT_LABEL_VALUE
estbackend
, les charges de travail portant le libelléapp: backend
sont la source de trafic.TARGET_LABEL_KEY
: clé du libellé utilisé pour sélectionner les charges de travail de destination.TARGET_LABEL_VALUE
: valeur associée àTARGET_LABEL_KEY
. Il spécifie les charges de travail qui sont la destination du trafic autorisé.
Créer une règle intra-projet au niveau de la charge de travail pour une seule zone
Les règles de réseau au niveau de la charge de travail peuvent appliquer le PNP dans une seule zone. Vous pouvez ajouter des libellés spécifiques aux charges de travail d'une même zone. Cela vous permet de contrôler la communication entre les charges de travail individuelles d'un projet ou de différents projets pour cette zone.
Créer une règle intra-projet au niveau de la charge de travail d'entrée à zone unique
Lorsque vous créez un projet, vous créez implicitement une ressource ProjectNetworkPolicy
de base par défaut qui permet la communication intra-projet entre toutes les charges de travail. Cette règle autorise le trafic entrant provenant d'autres charges de travail du même projet.
Pour créer une stratégie intra-projet au niveau de la charge de travail d'entrée à zone unique, vous devez d'abord supprimer la stratégie de base par défaut. Dans le cas contraire, un comportement inattendu peut se produire.
Pour supprimer la règle de base par défaut, exécutez la commande suivante :
kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
Pour créer une règle de réseau de trafic intra-projet au niveau de la charge de travail Ingress à zone unique, créez et appliquez la ressource personnalisée suivante :
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
Remplacez les éléments suivants :
GLOBAL_API_SERVER
: chemin d'accès au fichier kubeconfig du serveur d'API global. Pour en savoir plus, consultez Serveurs d'API globaux et zonaux. Si vous n'avez pas encore généré de fichier kubeconfig pour le serveur d'API, consultez Se connecter pour en savoir plus.PROJECT
: nom de votre projet.SUBJECT_LABEL_KEY
: clé du libellé utilisé pour sélectionner les charges de travail sources. Par exemple,app
,tier
ourole
.SUBJECT_LABEL_VALUE
: valeur associée àSUBJECT_LABEL_KEY
. Il spécifie les charges de travail qui sont à l'origine du trafic autorisé. Par exemple, siSUBJECT_LABEL_KEY
estapp
et queSUBJECT_LABEL_VALUE
estbackend
, les charges de travail portant le libelléapp: backend
sont la source de trafic.TARGET_LABEL_KEY
: clé du libellé utilisé pour sélectionner les charges de travail de destination.TARGET_LABEL_VALUE
: valeur associée àTARGET_LABEL_KEY
. Il spécifie les charges de travail qui sont la destination du trafic autorisé.ZONE_SUBJECT_LABEL_KEY
: clé du libellé utilisé pour sélectionner la zone source. Par exemple,zone
ouregion
.ZONE_SUBJECT_LABEL_VALUE
: valeur associée àZONE_SUBJECT_LABEL_KEY
. Elle indique la zone qui est la source du trafic autorisé. Par exemple, siZONE_SUBJECT_LABEL_KEY
estzone
et queZONE_SUBJECT_LABEL_VALUE
estus-central1-a
, les charges de travail portant le libellézone: us-central1-a
sont la source de trafic.ZONE_TARGET_LABEL_KEY
: clé du libellé utilisé pour sélectionner la zone de destination.ZONE_TARGET_LABEL_VALUE
: valeur associée àZONE_TARGET_LABEL_KEY
. Elle spécifie la zone de destination du trafic autorisé.
Créer une règle de sortie intra-projet au niveau de la charge de travail pour une seule zone
Pour créer une règle de sortie de niveau charge de travail intra-projet à zone unique, créez et appliquez la ressource personnalisée suivante :
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
Remplacez les éléments suivants :
GLOBAL_API_SERVER
: chemin d'accès au fichier kubeconfig du serveur d'API global. Pour en savoir plus, consultez Serveurs d'API globaux et zonaux. Si vous n'avez pas encore généré de fichier kubeconfig pour le serveur d'API, consultez Se connecter pour en savoir plus.PROJECT
: nom de votre projet.SUBJECT_LABEL_KEY
: clé du libellé utilisé pour sélectionner les charges de travail sources. Par exemple,app
,tier
ourole
.SUBJECT_LABEL_VALUE
: valeur associée àSUBJECT_LABEL_KEY
. Il spécifie les charges de travail qui sont à l'origine du trafic autorisé. Par exemple, siSUBJECT_LABEL_KEY
estapp
et queSUBJECT_LABEL_VALUE
estbackend
, les charges de travail portant le libelléapp: backend
sont la source de trafic.TARGET_LABEL_KEY
: clé du libellé utilisé pour sélectionner les charges de travail de destination.TARGET_LABEL_VALUE
: valeur associée àTARGET_LABEL_KEY
. Il spécifie les charges de travail qui sont la destination du trafic autorisé.ZONE_SUBJECT_LABEL_KEY
: clé du libellé utilisé pour sélectionner la zone source. Par exemple,zone
ouregion
.ZONE_SUBJECT_LABEL_VALUE
: valeur associée àZONE_SUBJECT_LABEL_KEY
. Elle indique la zone qui est la source du trafic autorisé. Par exemple, siZONE_SUBJECT_LABEL_KEY
estzone
et queZONE_SUBJECT_LABEL_VALUE
estus-central1-a
, les charges de travail portant le libellézone: us-central1-a
sont la source de trafic.ZONE_TARGET_LABEL_KEY
: clé du libellé utilisé pour sélectionner la zone de destination.ZONE_TARGET_LABEL_VALUE
: valeur associée àZONE_TARGET_LABEL_KEY
. Elle spécifie la zone de destination du trafic autorisé.