Cette page explique comment configurer des règles de réseau de trafic inter-projets dans Google Distributed Cloud (GDC) air-gapped.
Le trafic inter-projets désigne la communication entre les services et les charges de travail provenant de différents espaces de noms de projet, mais au sein de la même organisation.
Par défaut, les services et les charges de travail d'un projet sont isolés des services et charges de travail externes. Toutefois, les services et les charges de travail provenant de différents espaces de noms de projet et appartenant à la même organisation peuvent communiquer entre eux en appliquant des règles de réseau de trafic inter-projets.
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 inter-projets est nécessaire dans une seule zone, consultez Créer une stratégie inter-projets au niveau de la charge de travail pour une seule zone.
Avant de commencer
Pour configurer des règles de réseau de trafic multiprojets, 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 inter-projets
Vous pouvez définir des règles de trafic d'entrée ou de sortie entre projets pour gérer la communication entre les projets.
Créer une règle d'entrée inter-projets
Pour que les charges de travail ou les services d'un projet autorisent les connexions provenant d'autres charges de travail d'un autre projet de votre organisation, vous devez configurer une règle de pare-feu d'entrée pour autoriser le trafic entrant des autres charges de travail du projet.
Ce règlement s'applique à toutes les zones de votre organisation.
Suivez les étapes ci-dessous pour créer une règle de pare-feu et autoriser le trafic entrant provenant de charges de travail d'un autre projet :
Console
- Dans la console GDC du projet que vous configurez, accédez à Mise en réseau > Pare-feu dans le menu de navigation pour ouvrir la page Pare-feu.
- Cliquez sur Créer dans la barre d'actions pour commencer à créer une règle de pare-feu.
Sur la page Détails de la règle de pare-feu, saisissez les informations suivantes :
- Dans le champ Nom, saisissez un nom valide pour votre règle de pare-feu.
- Dans la section Direction du trafic, sélectionnez Entrée pour autoriser le trafic entrant des charges de travail d'autres projets.
- Dans la section Ciblage, sélectionnez l'une des options suivantes :
- Toutes les charges de travail utilisateur : autorisez les connexions aux charges de travail du projet que vous configurez.
- Service : indiquez que cette règle de pare-feu cible un service spécifique dans le projet que vous configurez.
- Si votre cible est un service de projet, sélectionnez le nom du service dans la liste des services disponibles dans le menu déroulant Service.
- Dans la section De, sélectionnez l'une des deux options suivantes :
- Tous les projets : autorisez les connexions depuis les charges de travail dans tous les projets de la même organisation.
- Autre projet et Toutes les charges de travail utilisateur : autorisent les connexions depuis les charges de travail d'un autre projet de la même organisation.
- Si vous souhaitez transférer des charges de travail uniquement à partir d'un autre projet, sélectionnez un projet auquel vous avez accès dans la liste des projets du menu déroulant ID du projet.
- Si votre cible concerne toutes les charges de travail utilisateur, sélectionnez l'une des options suivantes dans la section Protocoles et ports :
- Autoriser tout : autorise les connexions utilisant n'importe quel protocole ou port.
- Protocoles et ports spécifiés : autorisez les connexions utilisant uniquement les protocoles et les ports que vous spécifiez dans les champs correspondants de la règle de pare-feu d'entrée.
Sur la page Détails de la règle de pare-feu, cliquez sur Créer.
Vous avez désormais autorisé les connexions depuis les charges de travail d'autres projets de la même organisation. Une fois la règle de pare-feu créée, elle est visible dans un tableau sur la page Pare-feu.
API
La règle suivante permet aux charges de travail du projet PROJECT_1
d'autoriser les connexions des charges de travail du projet PROJECT_2
, ainsi que le trafic de retour pour les mêmes flux. Appliquez la règle :
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
namespace: PROJECT_1
name: allow-inbound-traffic-from-PROJECT_2
spec:
policyType: Ingress
subject:
subjectType: UserWorkload
ingress:
- from:
- projectSelector:
projects:
matchNames:
- PROJECT_2
EOF
Remplacez GLOBAL_API_SERVER
par le chemin d'accès 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.
La commande précédente permet à PROJECT_2
d'accéder à PROJECT_1
, mais n'autorise pas les connexions initiées à partir de PROJECT_1
vers PROJECT_2
. Pour ce dernier, vous avez besoin d'une règle réciproque dans le projet PROJECT_2
. Appliquez le règlement sur la réciprocité :
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
namespace: PROJECT_2
name: allow-inbound-traffic-from-PROJECT_1
spec:
policyType: Ingress
subject:
subjectType: UserWorkload
ingress:
- from:
- projectSelector:
projects:
matchNames:
- PROJECT_1
EOF
Les connexions vers et depuis PROJECT_1
et PROJECT_2
sont désormais autorisées.
Créer une règle de sortie inter-projets
Lorsque vous accordez une règle de trafic d'entrée inter-projets pour permettre aux charges de travail d'un projet d'autoriser les connexions des charges de travail d'un autre projet, cette action accorde également le trafic de retour pour les mêmes flux. Par conséquent, vous n'avez pas besoin de règle de réseau de trafic sortant inter-projets dans le projet d'origine.
Par exemple, si vous créez une règle autorisant le trafic de PROJECT_1
vers PROJECT_2
et que la protection contre l'exfiltration de données est désactivée, vous devez créer une règle d'entrée dans PROJECT_2
et une règle de sortie dans PROJECT_1
. Toutefois, les paquets de réponse sont exclus de l'application des règles. Vous n'avez donc pas besoin de règles supplémentaires.
Suivez les étapes ci-dessous pour créer une règle de pare-feu et autoriser le trafic sortant des charges de travail d'un projet :
- Dans la console GDC du projet que vous configurez, accédez à Mise en réseau > Pare-feu dans le menu de navigation pour ouvrir la page Pare-feu.
- Cliquez sur Créer dans la barre d'actions pour commencer à créer une règle de pare-feu.
Sur la page Détails de la règle de pare-feu, saisissez les informations suivantes :
- Dans le champ Nom, saisissez un nom valide pour votre règle de pare-feu.
- Dans la section Sens du trafic, sélectionnez Sortie pour indiquer que cette règle de pare-feu contrôle le trafic sortant.
- Dans la section Ciblage, sélectionnez l'une des options suivantes :
- Toutes les charges de travail utilisateur : autorisez les connexions à partir des charges de travail du projet que vous configurez.
- Service : indiquez que cette règle de pare-feu cible un service spécifique dans le projet que vous configurez.
- Si votre cible est un service de projet, sélectionnez le nom du service dans la liste des services disponibles dans le menu déroulant Service.
- Dans la section À, sélectionnez l'une des deux options suivantes :
- Tous les projets : autorisez les connexions aux charges de travail dans tous les projets de la même organisation.
- Autre projet et Toutes les charges de travail utilisateur : autorisent les connexions aux charges de travail d'un autre projet de la même organisation.
- Si vous souhaitez transférer des charges de travail uniquement vers un autre projet, sélectionnez un projet auquel vous pouvez accéder dans la liste des projets du menu déroulant ID du projet.
- Si votre cible concerne toutes les charges de travail utilisateur, sélectionnez l'une des options suivantes dans la section Protocoles et ports :
- Autoriser tout : autorise les connexions utilisant n'importe quel protocole ou port.
- Protocoles et ports spécifiés : autorisez les connexions en utilisant uniquement les protocoles et les ports que vous spécifiez dans les champs correspondants de la règle de pare-feu de sortie.
Sur la page Détails de la règle de pare-feu, cliquez sur Créer.
Vous avez désormais autorisé les connexions aux charges de travail d'autres projets au sein de la même organisation. Une fois la règle de pare-feu créée, elle est visible dans un tableau sur la page Pare-feu.
Créer une règle inter-projets 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 sur la communication entre les charges de travail individuelles de différents projets. 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 inter-projets au niveau de la charge de travail
Pour créer une règle inter-projets au niveau de la charge de travail d'entrée, 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_1 name: allow-cross-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_2 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_1
: nom du projet qui reçoit le trafic.PROJECT_2
: nom du projet d'où provient le trafic.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 inter-projets au niveau de la charge de travail
Pour créer une règle de sortie multiprojet 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_1 name: allow-cross-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_2 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_1
: nom du projet qui envoie le trafic.PROJECT_2
: nom du projet qui reçoit le trafic.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 stratégie inter-projets au niveau de la charge de travail à zone unique
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 inter-projets au niveau de la charge de travail d'entrée à zone unique
Pour créer une stratégie multiprojet 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_1 name: allow-single-zone-cross-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_2 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_1
: nom du projet qui reçoit le trafic.PROJECT_2
: nom du projet d'où provient le trafic.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 inter-projets au niveau de la charge de travail pour une seule zone
Pour créer une stratégie multiprojet au niveau de la charge de travail de sortie d'une seule zone, 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_1 name: allow-single-zone-cross-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_2 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_1
: nom du projet qui envoie le trafic.PROJECT_2
: nom du projet qui reçoit le trafic.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é.