1. Introduction
Private Service Connect permet à un producteur de services d'offrir des services de manière privée à un client. Private Service Connect offre les avantages suivants:
- Un réseau VPC de producteur de services peut accepter plusieurs clients du service.
- Chaque client se connecte à une adresse IP interne qu'il a définie. Private Service Connect effectue une traduction d'adresse réseau (NAT) pour acheminer la requête vers le producteur de services.
Figure 2. Private Service Connect utilise des points de terminaison et des rattachements de service pour permettre aux clients de services d'envoyer du trafic depuis le réseau VPC du client vers les services du réseau VPC du producteur de services (cliquez pour agrandir).
Points abordés
- Avantages de Private Service Connect
- Concepts clés pour les clients de services
- Concepts clés pour les producteurs de services
- Créer un environnement de producteur
- Exposer le service (environnement de producteur) via un rattachement de service
- Créer un environnement grand public
- Créer une règle de transfert dans le réseau consommateur
- Valider l'accès des consommateurs
- Activer le contrôle d'accès aux règles
- Bloquer l'accès à une règle de transfert de client à l'aide d'une règle de pare-feu de sortie
Prérequis
- Avoir des connaissances sur le déploiement de clusters et de services GKE
- Connaissance des équilibreurs de charge internes
- Possibilité de créer des VPC dans deux projets
- Capacité à créer un cluster GKE
2. Avantages de Private Service Connect
Avec PSC, vous bénéficiez de plusieurs avantages par rapport à l'appairage de VPC:
Meilleur contrôle de l'espace d'adresses IP privées
- En tant que client du service, vous pouvez contrôler l'adresse IP privée utilisée pour vous connecter au service géré auquel vous souhaitez accéder.
- En tant que client de services, vous n'avez pas à vous soucier de réserver des plages d'adresses IP privées pour les services de backend utilisés dans votre VPC. Il vous suffit de choisir une adresse IP de votre propre sous-réseau pour vous connecter aux services du producteur.
- En tant que producteur de services, vous pouvez choisir de déployer un modèle mutualisé, dans lequel votre VPC contient des services qui desservent les VPC de plusieurs clients. Les clients ayant des plages de sous-réseaux qui se chevauchent ne sont plus un problème.
- En tant que fournisseur de services, vous pouvez faire évoluer votre service vers autant d'instances de VM que nécessaire, sans avoir à contacter votre client pour obtenir plus d'adresses IP.
Sécurité et isolation améliorées
- En tant que client du service, vous seul pouvez initier la communication avec le producteur de services. Cette connectivité unidirectionnelle simplifie drastiquement la configuration du pare-feu, mais réduit également le risque de trafic frauduleux provenant du producteur de services.
- En tant que producteur de services, vous n'avez pas besoin de modifier vos règles de pare-feu en fonction des plages de sous-réseaux du VPC du client. Vous pouvez simplement créer des règles de pare-feu pour la plage d'adresses IP NAT configurée pour votre service.
Meilleure évolutivité
- PSC permet une conception hautement évolutive en prenant en charge des milliers de clients, et permet aux producteurs de services de proposer des services hautement évolutifs mutualisés ou mono-locataires.
- En tant que client du service utilisant Private Service Connect, vous pouvez créer les ressources requises dans votre VPC. L'ampleur de cette opération n'est pas affectée par le nombre de ressources de ce type créées dans le VPC du producteur.
3. Concepts clés pour les clients de services
Vous pouvez utiliser des points de terminaison Private Service Connect pour utiliser des services situés en dehors de votre réseau VPC. Les clients du service créent des points de terminaison Private Service Connect qui se connectent à un service cible.
Points de terminaison
Vous utilisez des points de terminaison Private Service Connect pour vous connecter à un service cible. Les points de terminaison possèdent une adresse IP interne dans votre réseau VPC et sont basés sur la ressource de règle de transfert.
Vous envoyez le trafic vers le point de terminaison, qui le transfère à des cibles situées en dehors de votre réseau VPC.
Cibles
Les points de terminaison Private Service Connect ont une cible, qui est le service auquel vous souhaitez vous connecter:
- Un groupe d'API:
- Toutes les API : la plupart des API Google
- VPC-SC : API compatibles avec VPC Service Controls
- Un service publié dans un autre réseau VPC Ce service peut être géré par votre propre organisation ou par un tiers.
Service publié
Pour connecter votre point de terminaison au service d'un producteur de services, vous avez besoin du rattachement de service du service. L'URI du rattachement de service a le format suivant: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
4. Concepts clés pour les producteurs de services
Pour mettre un service à la disposition des clients, vous devez créer un ou plusieurs sous-réseaux dédiés à utiliser pour la traduction d'adresses réseau (NAT, Network Address Translation) des adresses IP des consommateurs. Vous créez ensuite un rattachement de service qui fait référence à ces sous-réseaux.
Sous-réseaux Private Service Connect
Pour exposer un service, le producteur de services crée d'abord un ou plusieurs sous-réseaux avec l'objectif Private Service Connect.
Lorsqu'une requête est envoyée depuis le réseau VPC d'un consommateur, son adresse IP source est traduite à l'aide de la NAT source (SNAT) vers une adresse IP sélectionnée dans l'un des sous-réseaux Private Service Connect.
Si vous souhaitez conserver les informations sur l'adresse IP de connexion du client, consultez la section Afficher les informations de connexion du client.
Ces sous-réseaux ne peuvent pas être utilisés pour des ressources telles que des instances de VM ou des règles de transfert. Les sous-réseaux ne servent qu'à fournir les adresses IP de la SNAT des connexions client entrantes.
Le sous-réseau Private Service Connect doit contenir au moins une adresse IP pour 63 VM consommatrices,afin que 1 024 tuples sources soient alloués à chaque VM consommateur pour la traduction d'adresse réseau.
La taille minimale d'un sous-réseau Private Service Connect est /24.
Rattachements de service
Les producteurs de services exposent leur service via un rattachement de service.
- Pour exposer un service, un producteur de services crée un rattachement de service qui fait référence à la règle de transfert de l'équilibreur de charge du service.
- Pour accéder à un service, un client du service crée un point de terminaison qui fait référence au rattachement de service.
Préférences de connexion
Lorsque vous créez un service, vous choisissez comment le rendre disponible. Vous disposez de deux options :
- Acceptez automatiquement les connexions pour tous les projets : n'importe quel client du service peut configurer un point de terminaison et se connecter automatiquement au service.
- Acceptez les connexions pour les projets sélectionnés : les clients du service configurent un point de terminaison pour se connecter au service, et le producteur de services accepte ou refuse les demandes de connexion.
Conditions requises et limites
- Les limites pour Private Service Connect s'appliquent.
- Vous pouvez créer un rattachement de service dans GKE 1.21.4-gke.300 et versions ultérieures.
- Vous ne pouvez pas utiliser le même sous-réseau dans plusieurs configurations de rattachement de service.
- Vous devez créer un service GKE qui utilise un équilibreur de charge TCP/UDP interne.
5. Environnement de test
Le réseau du consommateur se compose d'une adresse IP statique utilisée pour envoyer les requêtes envoyées au producteur de services, en plus du rattachement target-service-attachment qui est mappé au rattachement de service du producteur (service publié).
Penchons-nous à présent sur le réseau des producteurs. Notez que le réseau du producteur ne dispose pas d'un mappage avec le réseau du client, mais qu'il contient un rattachement de service (service publié) utilisé par le client pour les services. Le rattachement de service du producteur est exposé par un ILB L4 d'entrée GKE (service publié) qui permet la communication avec les pods GKE. applications associées.
Le sous-réseau NAT est utilisé lorsqu'une requête est envoyée depuis un réseau VPC consommateur. L'adresse IP source du consommateur est traduite à l'aide de la NAT source (SNAT) en une adresse IP sélectionnée dans l'un des sous-réseaux Private Service Connect.
Ces sous-réseaux ne peuvent pas être utilisés pour des ressources telles que des instances de VM ou des règles de transfert. Les sous-réseaux ne servent qu'à fournir les adresses IP de la SNAT des connexions client entrantes.
Pour en savoir plus sur L4ILB pour GKE Private Service Connect et obtenir un accès direct au contenu utilisé pour faire référence à cet atelier, reportez-vous à ce qui suit.
Configuration de l'environnement au rythme de chacun
- Connectez-vous à la console Google Cloud, puis créez un projet ou réutilisez un projet existant. (Si vous ne possédez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.)
- Le nom du projet est le nom à afficher pour les participants au projet. Il s'agit d'une chaîne de caractères qui n'est pas utilisée par les API Google, et que vous pouvez modifier à tout moment.
- L'ID du projet doit être unique sur l'ensemble des projets Google Cloud et doit être immuable (vous ne pouvez pas le modifier une fois que vous l'avez défini). Cloud Console génère automatiquement une chaîne unique dont la composition importe peu, en général. Dans la plupart des ateliers de programmation, vous devrez référencer l'ID du projet (généralement identifié comme
PROJECT_ID
), donc s'il ne vous convient pas, générez-en un autre au hasard ou définissez le vôtre, puis vérifiez s'il est disponible. Il est ensuite "gelé" une fois le projet créé. - La troisième valeur est le numéro de projet, utilisé par certaines API. Pour en savoir plus sur ces trois valeurs, consultez la documentation.
- Vous devez ensuite activer la facturation dans Cloud Console afin d'utiliser les ressources/API Cloud. L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Pour arrêter les ressources afin d'éviter qu'elles ne vous soient facturées après ce tutoriel, suivez les instructions de nettoyage indiquées à la fin de l'atelier. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai gratuit pour bénéficier d'un crédit de 300 $.
Démarrer Cloud Shell
Bien que Google Cloud puisse être utilisé à distance depuis votre ordinateur portable, nous allons nous servir de Google Cloud Shell pour cet atelier de programmation, un environnement de ligne de commande exécuté dans le cloud.
Depuis la console GCP, cliquez sur l'icône Cloud Shell de la barre d'outils située dans l'angle supérieur droit :
Le provisionnement et la connexion à l'environnement prennent quelques instants seulement. Une fois l'opération terminée, le résultat devrait ressembler à ceci :
Cette machine virtuelle contient tous les outils de développement nécessaires. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances du réseau et l'authentification. Vous pouvez réaliser toutes les activités de cet atelier dans un simple navigateur.
6. Avant de commencer
L'atelier de programmation nécessite deux projets, bien que ce ne soit pas obligatoire pour PSC. Prenez note des références à la prise en charge d'un ou de plusieurs projets.
Projet unique : mettre à jour le projet pour assurer la compatibilité avec les réseaux de producteurs et de consommateurs
Dans Cloud Shell, assurez-vous que l'ID de votre projet est configuré.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME consumerproject=YOUR-PROJECT-NAME echo $prodproject echo $consumerproject
Projets multiples : mettre à jour le projet pour qu'il prenne en charge le réseau de producteurs
Dans Cloud Shell, assurez-vous que l'ID de votre projet est configuré.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME echo $prodproject
Respectez la convention de code de couleur suivante:
7. Créer le réseau VPC des producteurs
Réseau VPC
Depuis Cloud Shell
gcloud compute networks create gke-producer-l4-vpc --project=$prodproject --subnet-mode=custom
Créer un sous-réseau de cluster GKE
Depuis Cloud Shell
gcloud compute networks subnets create node-subnet1 --project=$prodproject --range=192.168.10.0/24 --network=gke-producer-l4-vpc --region=us-central1 --secondary-range=pod=10.10.10.0/24,service=10.10.20.0/24 --enable-private-ip-google-access
Créer un cluster GKE
Depuis Cloud Shell
gcloud container clusters create gke-psc-l4 \ --release-channel=rapid \ --enable-ip-alias \ --zone=us-central1-a \ --network gke-producer-l4-vpc \ --num-nodes 1 \ --subnetwork node-subnet1 \ --cluster-secondary-range-name pod \ --services-secondary-range-name service
Créer un sous-réseau pour Private Service Connect (sous-réseau NAT)
Vous devez créer un ou plusieurs sous-réseaux dédiés à utiliser avec Private Service Connect. Si vous utilisez la console Google Cloud pour publier un service, vous pouvez créer les sous-réseaux au cours de cette procédure.
Pour en savoir plus sur les sous-réseaux Private Service Connect, consultez la section Sous-réseaux Private Service Connect.
Depuis Cloud Shell
gcloud beta compute networks subnets create gke-nat-subnet \ --project $prodproject \ --network gke-producer-l4-vpc \ --region us-central1 \ --range 100.100.10.0/24 \ --purpose PRIVATE_SERVICE_CONNECT
8. Déployer une charge de travail et des services
Le fichier manifeste suivant décrit un déploiement qui exécute un exemple d'image de conteneur d'application Web. Enregistrez le fichier manifeste sous le nom my-deployment.yaml à partir de Cloud Shell.
apiVersion: apps/v1 kind: Deployment metadata: name: psc-ilb spec: replicas: 3 selector: matchLabels: app: psc-ilb template: metadata: labels: app: psc-ilb spec: containers: - name: whereami image: gcr.io/google-samples/whereami:v1.2.1 ports: - name: http containerPort: 8080 readinessProbe: httpGet: path: /healthz port: 8080 scheme: HTTP initialDelaySeconds: 5 timeoutSeconds: 1
Appliquer le fichier manifeste à votre cluster à partir de Cloud Shell
kubectl apply -f my-deployment.yaml
Créer un service
Le fichier manifeste suivant décrit un service qui crée un équilibreur de charge TCP/UDP interne sur le port TCP 8080. Enregistrez le fichier manifeste sous le nom my-service.yaml à partir de Cloud Shell.
apiVersion: v1 kind: Service metadata: name: gke-l4-psc annotations: networking.gke.io/load-balancer-type: "Internal" spec: type: LoadBalancer selector: app: psc-ilb ports: - port: 80 targetPort: 8080 protocol: TCP
Appliquer le fichier manifeste à votre cluster à partir de Cloud Shell
kubectl apply -f my-service.yaml
Créer un ServiceAttachment
Le fichier manifeste suivant décrit un rattachement de service qui expose le service que vous avez créé aux clients du service. Enregistrez le fichier manifeste sous le nom my-psc.yaml à partir de Cloud Shell.
apiVersion: networking.gke.io/v1beta1 kind: ServiceAttachment metadata: name: emoji-sa namespace: default spec: connectionPreference: ACCEPT_AUTOMATIC natSubnets: - gke-nat-subnet proxyProtocol: false resourceRef: kind: Service name: gke-l4-psc
Appliquer le fichier manifeste à votre cluster à partir de Cloud Shell
kubectl apply -f my-psc.yaml
Le rattachement ServiceAttachment comporte les champs suivants:
- connectionPreference:la préférence de connexion qui détermine la manière dont les clients se connectent au service. Vous pouvez utiliser l'approbation automatique du projet avec ACCEPT_AUTOMATIC ou l'approbation explicite du projet avec ACCEPT_MANUAL. Pour en savoir plus, consultez Publier des services à l'aide de Private Service Connect.
- natSubnets: liste de noms de ressources de sous-réseau à utiliser pour le rattachement de service.
- proxyProtocol:lorsque ce paramètre est défini sur "true", l'adresse IP source du consommateur et l'ID de connexion Private Service Connect sont disponibles dans les requêtes. Ce champ est facultatif et est défini par défaut sur "false" s'il n'est pas fourni.
- consumerAllowList::liste des projets client autorisés à se connecter à consumerAllowList:. Ce champ ne peut être utilisé que lorsque la valeur de connectionPreference est ACCEPT_MANUAL. Pour en savoir plus sur ce champ et d'autres options, consultez la page Publier des services à l'aide de Private Service Connect.
Producer Validation
Afficher les détails d'un rattachement de service
Vous pouvez afficher les détails d'un rattachement de service à l'aide de la commande suivante depuis Cloud Shell
kubectl describe serviceattachment emoji-sa
Afficher l'ILB GKE L4
Dans la console Cloud, accédez à Services réseau → Équilibrage de charge → Interfaces.
Identifiez l'adresse IP de l'interface qui s'aligne sur le sous-réseau de nœud précédemment défini 192.168.10.0/24. Notez que votre adresse IP peut être différente dans la capture d'écran ci-dessous.
Afficher le service publié
Dans la console Cloud, accédez à Services réseau → Private Service Connect → Services publiés
Identifiez le service avec le réseau utilisé dans l'atelier, gke-producer-l4-vpc,, (voir la capture d'écran ci-dessous, bien que les valeurs du service et de la cible puissent différer).
Cliquez sur le nom du service pour afficher l'écran ci-dessous. Notez les détails du rattachement de service renseignés dans les informations générales. Notez également la section "Projets connectés" est vide puisque le client n'a pas encore s'inscrire auprès du service. Les options ACCEPT et REJECT resteront grisées, car Connection preference (Préférence de connexion) est définie sur "ACCEPT_AUTOMATICALLY". Cette option peut être remplacée à tout moment par "ACCEPT_MANUAL" en modifiant le fichier YAML du rattachement de service (my-psc.yaml).
9. Créer le réseau VPC de clients
Dans la section suivante, le VPC consommateur est configuré dans un projet distinct. La communication entre le réseau du client et du producteur s'effectue via le rattachement de service défini dans le réseau du client.
L'atelier de programmation nécessite deux projets, bien que ce ne soit pas obligatoire pour PSC. Prenez note des références à la prise en charge d'un ou de plusieurs projets.
Projet unique : mettre à jour le projet pour assurer la compatibilité avec les réseaux de producteurs et de consommateurs
Dans Cloud Shell, assurez-vous que l'ID de votre projet est configuré.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] consumerproject=YOUR-PROJECT-NAME prodproject=YOUR-PROJECT-NAME echo $prodproject echo $consumerproject
Projets multiples : mettre à jour un projet pour prendre en charge un réseau
Dans Cloud Shell, assurez-vous que l'ID de votre projet est configuré.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] consumerproject=YOUR-PROJECT-NAME echo $consumerproject
Réseau VPC
Depuis Cloud Shell
gcloud compute networks create vpc-demo-consumer --project=$consumerproject --subnet-mode=custom
Créer un sous-réseau pour PSC
Depuis Cloud Shell
gcloud compute networks subnets create consumer-subnet --project=$consumerproject --range=10.0.60.0/24 --network=vpc-demo-consumer --region=us-central1
Créer un sous-réseau pour les instances de VM
Depuis Cloud Shell
gcloud compute networks subnets create consumer-subnet-vm --project=$consumerproject --range=10.0.70.0/24 --network=vpc-demo-consumer --region=us-central1
Créer une adresse IP statique pour accéder au service publié
Depuis Cloud Shell
gcloud compute addresses create vpc-consumer-psc --region=us-central1 --subnet=consumer-subnet --addresses 10.0.60.100
Créer des règles de pare-feu
Pour autoriser IAP à se connecter à vos instances de VM, créez une règle de pare-feu qui:
- S'applique à toutes les instances de VM auxquelles vous souhaitez rendre accessibles à l'aide d'IAP.
- Autorise le trafic entrant provenant de la plage d'adresses IP 35.235.240.0/20. Cette plage contient toutes les adresses IP utilisées par IAP pour le transfert TCP
Depuis Cloud Shell
gcloud compute firewall-rules create psclab-iap-consumer --network vpc-demo-consumer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging
Créer une règle de pare-feu de sortie (non obligatoire pour PSC) afin de surveiller le trafic PSC du client vers le rattachement de service du producteur
gcloud compute --project=$consumerproject firewall-rules create vpc-consumer-psc --direction=EGRESS --priority=1000 --network=vpc-demo-consumer --action=ALLOW --rules=all --destination-ranges=10.0.60.0/24 --enable-logging
10. Créer l'instance de test consommateur 1
Depuis Cloud Shell
gcloud compute instances create consumer-instance-1 --zone=us-central1-a --machine-type=e2-micro --private-network-ip=10.0.70.10 --no-address --subnet=consumer-subnet-vm --tags=google1 --image-family=debian-10 --image-project=debian-cloud
11. Créer l'instance de test consommateur 2
Depuis Cloud Shell
gcloud compute instances create consumer-instance-2 --zone=us-central1-a --machine-type=e2-micro --private-network-ip=10.0.70.20 --no-address --subnet=consumer-subnet-vm --tags=google2 --image-family=debian-10 --image-project=debian-cloud
12. Créer un rattachement de service
Lors d'une étape précédente, vous avez copié la chaîne du rattachement de service Producer en lieu sûr. Insérons la valeur stockée dans le rattachement "target-service-attachment". .
Depuis Cloud Shell
gcloud compute forwarding-rules create vpc-consumer-psc-fr --region=us-central1 --network=vpc-demo-consumer --address=vpc-consumer-psc --target-service-attachment=yoursavedproducerserviceattachment
13. Validation - Client
Nous utiliserons CURL & les journaux de pare-feu pour valider la communication du client et du producteur.
Dans le projet du client, les adresses IP statiques sont utilisées pour établir la communication avec le producteur. Ce mappage de l'adresse IP statique avec la règle de transfert du consommateur est validé à l'aide de la syntaxe suivante.
Dans les VPC du client, utilisez le shell et identifiez la règle de transfert et l'adresse IP statique.
gcloud compute forwarding-rules describe vpc-consumer-psc-fr --region us-central1
Dans la sortie ci-dessous, nous utiliserons 10.0.60.100 pour atteindre le producteur lors d'une prochaine étape.
IPAddress: 10.0.60.100 creationTimestamp: '2021-09-30T21:13:54.124-07:00' id: '3564572805904938477' kind: compute#forwardingRule labelFingerprint: 42WmSpB8rSM= name: vpc-consumer-psc-fr network: https://www.googleapis.com/compute/v1/projects/deepakmichaelstage/global/networks/vpc-demo-consumer networkTier: PREMIUM pscConnectionId: '36583161500548196' pscConnectionStatus: ACCEPTED
Afficher le service connecté
Dans la console Cloud, accédez à Services réseau → Private Service Connect → Points de terminaison connectés et afficher le point de terminaison nouvellement créé
Permet de se connecter à consumer-instance-1 et de tester l'accès au service publié par le producteur
Dans Cloud Shell, ouvrez un nouvel onglet en cliquant sur le signe +
Depuis Cloud Shell, effectuez les opérations suivantes:
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-1" --project "$projectname"
Une fois connecté à l'instance consumer-instance-1, exécutez une commande curl sur l'adresse IP 10.0.60.100 de la règle de transfert
Depuis Cloud Shell, effectuez les opérations suivantes:
user@consumer-instance-1:~$ curl 10.0.60.100
Exemple de résultat :
user@consumer-instance-1:~$ curl 10.0.60.100 { "cluster_name": "gke-psc-l4", "host_header": "10.0.60.100", "node_name": "gke-gke-psc-l4-default-pool-f2c6e301-vnlz.c.prodprojectid.internal", "pod_name": "psc-ilb-588887dfdb-w7tbr", "pod_name_emoji": "🤷", "project_id": "prodorijectid", "timestamp": "2021-10-01T17:43:37", "zone": "us-central1-a"
Permet de se connecter à consumer-instance-2 et de tester l'accès au service publié par le producteur
Dans Cloud Shell, ouvrez un nouvel onglet en cliquant sur le signe +
Depuis Cloud Shell, effectuez les opérations suivantes:
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-2" --project "$projectname"
Depuis Cloud Shell, effectuez les opérations suivantes:
user@consumer-instance-2:~$ curl 10.0.60.100
Exemple de résultat :
deepakmichael@consumer-instance-2:~$ curl 10.0.60.100 { "cluster_name": "gke-psc-l4", "host_header": "10.0.60.100", "node_name": "gke-gke-psc-l4-default-pool-f2c6e301-vnlz.c.prodproject.internal", "pod_name": "psc-ilb-588887dfdb-4jdql", "pod_name_emoji": "🧑🏿", "project_id": "prodproject", "timestamp": "2021-10-01T17:49:51", "zone": "us-central1-a"
14. Journalisation de pare-feu : validation allouée
Validez la règle de pare-feu "vpc-consumner-psc" de l'explorateur de journaux capture le flux entre l'instance de VM et l'adresse IP statique
- Dans la console Cloud, identifiez la journalisation des opérations → Explorateur de journaux.
- Dans le champ "Requête", remplacez l'entrée ci-dessous par votreprojetconsommateur, puis sélectionnez "Exécuter la requête".
logName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")
- Les résultats de la requête fournissent les éléments suivants, d'après la capture d'écran fournie.
- Développez le journal (jsonPayload → Connection) et identifiez la sortie fournie ci-dessous. Notez l'adresse IP de dest_ip: 10.0.60.100 est l'adresse IP TCP STATIQUE utilisée pour accéder au service de producteur, et src_ip: 10.0.70.10 ou 10.0.70.20 correspond aux adresses IP des instances de VM. La disposition est autorisée.
15. Validation - Producteur
À partir du projet Producers, vérifiez que le rattachement de service est bien connecté. Accédez à Services réseau → Private Service Connect → Services publiés
Cliquez sur le service pour afficher votre projet de consommateur connecté et son état, comme illustré ci-dessous.
16. Restreindre l'accès à un service publié
Jusqu'à présent, nous avons vérifié que les deux instances ont accès aux services publiés. Nous allons créer une règle de pare-feu de sortie pour refuser l'accès de l'instance consumer-instance-2 au service publié.
Par défaut, GCP autorise toute la sortie, mais refuse tout le trafic d'entrée. Dans les étapes suivantes, nous allons créer une règle de pare-feu basée sur un tag réseau "google2" déjà défini. utilisée lors de la création de l'instance "consumer-instance-2" pour refuser l'accès au service publié.
Ouvrez un nouvel onglet Cloud Shell en cliquant sur le bouton + Exécuter la règle de pare-feu suivante dans Cloud Shell.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute --project=$projectname firewall-rules create psc-endpoint-deny-egress --direction=EGRESS --priority=999 --network=vpc-demo-consumer --action=DENY --rules=all --destination-ranges=10.0.60.100/32 --target-tags=google2 --enable-logging
Vérifions maintenant si consumer-instance-2 peut accéder au service publié. Si votre session a expiré, vous devrez ouvrir une nouvelle fenêtre Cloud Shell et vous connecter à la VM comme indiqué ci-dessous.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-2" --project "$projectname"
Depuis Cloud Shell, effectuez les opérations suivantes:
user@consumer-instance-2:~$ curl 10.0.60.100
Exemple de résultat :
user@consumer-instance-2:~$ curl 10.0.60.100 curl: (7) Failed to connect to 10.0.60.100 port 80: Connection timed out
Journalisation de pare-feu : validation refusée
Valider la règle de pare-feu "psc-endpoint-deny-egress" de l'explorateur de journaux capture le flux entre l'instance de VM et l'adresse IP statique
- Dans la console Cloud, identifiez la journalisation des opérations → Explorateur de journaux.
- Dans le champ "Requête", mettez à jour l'entrée ci-dessous avec votreprojetconsommateur et sélectionnez "Exécuter la requête".
logName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:psc-endpoint-deny-egress")
- Les résultats de la requête fournissent les éléments suivants, d'après la capture d'écran fournie.
- Développez le journal et identifiez la sortie fournie ci-dessous. Notez l'adresse IP de dest_ip: 10.0.60.100 correspond à l'adresse IP STATIC TCP et que src_ip: 10.0.70.10 ou 10.0.70.20 correspond à la ou aux adresses IP des instances de VM. La disposition est refusée.
17. Étapes de nettoyage
Étapes de nettoyage du réseau du producteur
Supprimer les composants de l'atelier à partir d'une seule interface Cloud Shell dans le terminal du projet Producer
gcloud container clusters delete gke-psc-l4 --region us-central1-a --quiet gcloud compute networks subnets delete gke-nat-subnet --region=us-central1 --quiet gcloud compute networks subnets delete node-subnet1 --region=us-central1 --quiet gcloud compute networks delete gke-producer-l4-vpc --quiet
Étapes de nettoyage du réseau du consommateur
Supprimer les composants de l'atelier à partir d'une seule fenêtre Cloud Shell dans le terminal du projet client
gcloud compute instances delete consumer-instance-1 --zone=us-central1-a --quiet gcloud compute instances delete consumer-instance-2 --zone=us-central1-a --quiet gcloud compute forwarding-rules delete vpc-consumer-psc-fr --region=us-central1 --quiet gcloud compute addresses delete vpc-consumer-psc --region=us-central1 --quiet gcloud compute firewall-rules delete psclab-iap-consumer --quiet gcloud compute networks subnets delete consumer-subnet --region=us-central1 --quiet gcloud compute networks subnets delete consumer-subnet-vm --region=us-central1 --quiet gcloud compute firewall-rules delete vpc-consumer-psc --quiet gcloud compute firewall-rules delete psc-endpoint-deny-egress --quiet gcloud compute networks delete vpc-demo-consumer --quiet
18. Félicitations !
Bravo ! Vous avez terminé cet atelier de programmation.
Points abordés
- Avantages de Private Service Connect
- Concepts clés pour les clients de services
- Concepts clés pour les producteurs de services
- Créer un environnement de producteur
- Exposer le service (environnement de producteur) via un rattachement de service
- Créer un environnement grand public
- Créer une règle de transfert dans le réseau consommateur
- Valider l'accès des consommateurs
- Activer le contrôle d'accès aux règles
- Vous avez utilisé une règle de pare-feu de sortie pour bloquer l'accès à une règle de transfert de client.