Pour définir une règle de réseau pour les charges de travail de machine virtuelle (VM) au niveau de l'espace de noms du projet, utilisez la ressource ProjectNetworkPolicy
, une règle de réseau multicluster pour Google Distributed Cloud air-gapped (GDC). Il vous permet de définir des règles qui autorisent la communication au sein des projets, entre les projets et vers des adresses IP externes.
Pour le trafic au sein d'un projet, GDC applique par défaut une règle de réseau de projet prédéfinie, la règle intra-projet, à chaque projet. Pour activer et contrôler le trafic entre les projets d'une même organisation, définissez des règles inter-projets. Lorsque plusieurs règles sont présentes, GDC combine de manière additive les règles de chaque projet. GDC autorise également le trafic si au moins une des règles correspond.
Demander une autorisation et un accès
Pour effectuer les tâches listées sur cette page, vous devez disposer du rôle Administrateur NetworkPolicy du projet. Demandez à votre administrateur IAM de projet de vous accorder le rôle Administrateur de NetworkPolicy de projet (project-networkpolicy-admin
) dans l'espace de noms du projet dans lequel réside la VM.
Trafic intra-projet
Par défaut, les charges de travail de VM dans un espace de noms de projet peuvent communiquer entre elles sans exposer les services au monde extérieur, même si les VM font partie de différents clusters au sein du même projet.
Stratégie de réseau pour le trafic d'Ingress intra-projet
Lorsque vous créez un projet, vous créez une ProjectNetworkPolicy
de base par défaut sur le serveur de l'API Management pour autoriser 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 le supprimer, mais soyez prudent, car cela entraînera le refus de la communication entre les projets et les charges de travail des conteneurs.
Règle de réseau pour le trafic de sortie intra-projet
Par défaut, aucune action n'est requise de votre part concernant le trafic sortant. En effet, en l'absence de règle de sortie, tout le trafic est autorisé. Toutefois, lorsque vous définissez une seule règle, seul le trafic qu'elle spécifie est autorisé.
Lorsque vous désactivez la protection contre l'exfiltration de données et que vous appliquez un ProjectNetworkPolicy
de sortie au projet, par exemple en empêchant l'accès à une ressource externe, utilisez une règle requise pour autoriser la sortie intra-projet :
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
apiVersion: networking.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
namespace: PROJECT_1
name: allow-intra-project-egress-traffic
spec:
policyType: Egress
ingress:
- from:
- projects:
matchNames:
- PROJECT_1
EOF
Trafic multiprojets (au sein de l'organisation)
Les charges de travail de VM provenant de différents espaces de noms de projet mais appartenant à la même organisation peuvent communiquer entre elles en appliquant une règle de réseau multiprojet.
Règle de réseau de trafic d'Ingress inter-projets
Pour que les charges de travail d'un projet autorisent les connexions provenant d'autres charges de travail dans un autre projet, vous devez configurer une règle Ingress pour autoriser les autres charges de travail du projet à transférer des données.
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. Vous pouvez également utiliser cette stratégie si vous souhaitez accéder à votre VM dans PROJECT_1
à partir d'une source située dans PROJECT_2
.
Exécutez la commande suivante pour appliquer la règle :
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
apiVersion: networking.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
namespace: PROJECT_1
name: allow-ingress-traffic-from-PROJECT_2
spec:
policyType: Ingress
subject:
subjectType: UserWorkload
ingress:
- from:
- projects:
matchNames:
- PROJECT_2
EOF
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
. Exécutez la commande suivante pour appliquer la règle de réciprocité :
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
apiVersion: networking.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
namespace: PROJECT_2
name: allow-ingress-traffic-from-PROJECT_1
spec:
policyType: Ingress
subject:
subjectType: UserWorkload
ingress:
- from:
- projects:
matchNames:
- PROJECT_1
EOF
Vous avez maintenant autorisé les connexions initiées vers et depuis PROJECT_1
et PROJECT_2
.
Utilisez les définitions suivantes pour vos variables.
Variable | Définition |
---|---|
MANAGEMENT_API_SERVER | Chemin d'accès kubeconfig du serveur de l'API Management. |
PROJECT_1 | Nom d'un projet GDC correspondant à PROJECT_1 dans l'exemple. |
PROJECT_2 | Nom d'un projet GDC correspondant à PROJECT_2 dans l'exemple. |
Règle de réseau pour le trafic de sortie inter-projets
Lorsque vous accordez une stratégie de trafic d'entrée multiprojet pour permettre aux charges de travail d'un projet, PROJECT_1
, d'autoriser les connexions à partir des charges de travail d'un autre projet, PROJECT_2
, cela accorde également le trafic de retour pour les mêmes flux. Vous n'avez donc pas besoin de règle de mise en réseau pour le trafic de sortie entre projets.
Trafic inter-organisation
Pour connecter une charge de travail de VM à une destination en dehors de votre projet et située dans une autre organisation, une approbation explicite est requise. Cette approbation est due à la fonctionnalité de prévention de l'exfiltration de données, que GDC active par défaut et qui empêche un projet d'avoir une sortie vers des charges de travail en dehors de l'organisation dans laquelle réside le projet. Les instructions pour ajouter une règle de sortie spécifique et activer l'exfiltration de données sont fournies dans cette section.
Règle de réseau pour le trafic entrant entre organisations
Pour autoriser le trafic entrant entre différentes organisations, un ProjectNetworkPolicy
doit être appliqué. Il autorise le trafic provenant de clients externes à l'organisation vers votre projet (par exemple, pour se connecter à la VM à l'aide de SSH).
Aucune règle de sortie correspondante n'est requise pour le trafic de réponse. Le trafic de retour est autorisé de manière implicite.
Si vous souhaitez accéder à votre VM dans PROJECT_1
à partir d'une source externe à l'organisation dans laquelle réside la VM, vous devez appliquer la règle suivante. Vous devez obtenir et utiliser le CIDR
qui contient votre adresse IP source. CIDR
doit être au format network/len
.
Par exemple, 192.0.2.0/21
est une valeur valide.
Configurez et appliquez votre
ProjectNetworkPolicy
Ingress#39;entrée en suivant l'exemplekubectl
. Appliquez la règle à toutes les charges de travail utilisateur dansPROJECT_1
. Elle autorise le trafic entrant vers tous les hôtes deCIDR
, qui résident en dehors de l'organisation.Appliquez votre configuration
ProjectNetworkPolicy
:kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF apiVersion: networking.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: namespace: PROJECT_1 name: allow-external-traffic spec: policyType: Ingress subject: subjectType: UserWorkload ingress: - from: - ipBlock: cidr: CIDR EOF
Règle de réseau pour le trafic sortant entre organisations
Pour activer le transfert de données vers des services en dehors de l'organisation, personnalisez la règle réseau de votre projet, ProjectNetworkPolicy
. Étant donné que la protection contre l'exfiltration de données est activée par défaut, votre ProjectNetworkPolicy
de sortie personnalisé affiche une erreur de validation dans le champ d'état et le plan de données l'ignore. Ce processus est volontaire.
Comme indiqué dans Sécurité et connectivité, les charges de travail peuvent transférer des données lorsque vous autorisez l'exfiltration de données pour un projet donné. Le trafic que vous autorisez pour le transfert de données sortant est une traduction d'adresse réseau source (NAT) utilisant une adresse IP connue allouée au projet.
La section Sécurité et connectivité fournit également des informations sur l'application des règles réseau du projet (ProjectNetworkPolicy
).
Aucune règle Ingress correspondante n'est requise pour le trafic de réponse. Le trafic de retour est autorisé de manière implicite.
Activez votre règle de sortie personnalisée :
Configurez et appliquez votre propre sortie personnalisée
ProjectNetworkPolicy
en suivant l'exemplekubectl
. Appliquez la règle à toutes les charges de travail utilisateur dansPROJECT_1
. Elle autorise le trafic sortant vers tous les hôtes deCIDR
, qui résident en dehors de l'organisation. Votre première tentative entraîne une erreur d'état nécessaire, ce qui est normal.Appliquez votre configuration
ProjectNetworkPolicy
:kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF apiVersion: networking.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: namespace: PROJECT_1 name: allow-egress-traffic-to-NAME spec: policyType: Egress subject: subjectType: UserWorkload egress: - to: - ipBlock: cidr: CIDR EOF
Lorsque vous avez terminé, vérifiez qu'une erreur de validation s'affiche dans votre état.
Demandez à l'administrateur de désactiver la protection contre l'exfiltration de données. Cela permet d'activer votre configuration tout en empêchant toute autre sortie.
Vérifiez le
ProjectNetworkPolicy
que vous venez de créer et assurez-vous que l'erreur a disparu du champ de l'état de validation et que l'étatReady
estTrue
, ce qui indique que votre règle est en vigueur :kubectl --kubeconfig MANAGEMENT_API_SERVER get projectnetworkpolicy allow-egress-traffic-to-NAME -n PROJECT_1 -o yaml
Remplacez les variables en utilisant les définitions suivantes.
Variable Définition MANAGEMENT_API_SERVER
Chemin d'accès kubeconfig du serveur de l'API Management. PROJECT_1
Nom du projet GDC. CIDR
Bloc CIDR (Classless Inter-Domain Routing) de la destination autorisée. NAME
Nom associé à la destination. Une fois cette règle appliquée, et à condition que vous n'ayez pas défini d'autres règles de sortie, tout autre trafic de sortie est refusé pour
PROJECT_1
.