Configurer un périmètre VPC Service Controls pour un réseau de cloud privé virtuel

Découvrez comment configurer un périmètre de service à l'aide de VPC Service Controls. Ce utilise des paramètres réseau tels que des pare-feu, Private Service Connect et les configurations DNS nécessaires pour utiliser efficacement un périmètre VPC Service Controls. Ce tutoriel explique ensuite comment les services sont autorisés ou refusés, et comment créer des exceptions précises pour une liste d'autorisation de services spécifiques.

Objectifs

  • Configurez un périmètre VPC Service Controls avec des options et des contrôles réseau pour limiter les chemins d'exfiltration.
  • autoriser ou refuser l'accès aux services à l'intérieur du périmètre à partir des requêtes proviennent de celui-ci ou de l'extérieur.
  • Autoriser ou refuser l'accès aux services extérieurs au périmètre des requêtes en provenance dans le périmètre.
  • Utiliser l'organisation "Restreindre l'utilisation du service des ressources" et VPC Service Controls.

Coûts

Ce tutoriel utilise les composants facturables Google Cloud suivants :

Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.

Une fois que vous avez terminé ce tutoriel, évitez de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.

Avant de commencer

  1. Ce tutoriel nécessite un projet dans votre organisation. Si vous n'avez pas encore d'organisation Google Cloud, consultez la création et la gestion d'une organisation.

  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine, Access Context Manager, and Cloud DNS APIs.

    Enable the APIs

  5. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  6. Make sure that you have the following role or roles on the organization: Access Context Manager Admin, Organization Policy Administrator

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the organization.
    3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

    4. For all rows that specify or include you, check the Role colunn to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      Accéder à IAM
    2. Sélectionnez l'organisation.
    3. Cliquez sur Accorder l'accès.
    4. Dans le champ Nouveaux comptes principaux, saisissez votre identifiant utilisateur. Il s'agit généralement de l'adresse e-mail d'un compte Google.

    5. Dans la liste Sélectionner un rôle, sélectionnez un rôle.
    6. Pour attribuer des rôles supplémentaires, cliquez sur Ajouter un autre rôle et ajoutez chaque rôle supplémentaire.
    7. Cliquez sur Enregistrer.
    8. Make sure that you have the following role or roles on the project: Compute Admin, DNS Administrator, IAP-Secured Tunnel User, Service Account User, Service Directory Editor

      Check for the roles

      1. In the Google Cloud console, go to the IAM page.

        Go to IAM
      2. Select the project.
      3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

      4. For all rows that specify or include you, check the Role colunn to see whether the list of roles includes the required roles.

      Grant the roles

      1. In the Google Cloud console, go to the IAM page.

        Accéder à IAM
      2. Sélectionnez le projet.
      3. Cliquez sur Accorder l'accès.
      4. Dans le champ Nouveaux comptes principaux, saisissez votre identifiant utilisateur. Il s'agit généralement de l'adresse e-mail d'un compte Google.

      5. Dans la liste Sélectionner un rôle, sélectionnez un rôle.
      6. Pour attribuer des rôles supplémentaires, cliquez sur Ajouter un autre rôle et ajoutez chaque rôle supplémentaire.
      7. Cliquez sur Enregistrer.

      Configurer le périmètre VPC Service Controls

      Pour implémenter un périmètre VPC Service Controls pour un réseau VPC, vous devez implémenter des contrôles réseau qui refusent le trafic vers les services externes. La les sections suivantes détaillent les configurations réseau que vous devez implémenter dans réseaux VPC à l'intérieur de votre périmètre et un exemple de configuration de périmètre.

      Préparer votre réseau VPC

      Dans cette section, vous configurez une connectivité privée aux API et services Google pour votre réseau VPC afin de limiter un certain nombre de chemins de sortie réseau vers Internet.

      1. Dans Cloud Shell, définissez des variables:

        gcloud config set project PROJECT_ID
        gcloud config set compute/region REGION
        gcloud config set compute/zone ZONE

        Remplacez les éléments suivants :

        • PROJECT_ID : ID du projet dans lequel vous allez créer des ressources.
        • REGION: une région proche de votre emplacement (par exemple, us-central1
        • ZONE: une zone proche de votre emplacement (par exemple, us-central1-a
      2. Créez un réseau VPC et un sous-réseau avec l'accès privé à Google activé :

        gcloud compute networks create restricted-vpc --subnet-mode=custom
        gcloud compute networks subnets create restricted-subnet \
        --range=10.0.0.0/24 \
        --network=restricted-vpc \
        --enable-private-ip-google-access
      3. Créez un point de terminaison Private Service Connect et un de transfert Google Cloud configurée pour utiliser Groupe vpc-sc:

        gcloud compute addresses create restricted-psc-endpoint \
        --global \
        --purpose=PRIVATE_SERVICE_CONNECT \
        --addresses=10.0.1.1 \
        --network=restricted-vpc
        
        gcloud compute forwarding-rules create restrictedpsc \
        --global \
        --network=restricted-vpc \
        --address=restricted-psc-endpoint \
        --target-google-apis-bundle=vpc-sc
      4. Configurez la règle de serveur DNS Cloud pour rediriger les requêtes des API Google Cloud vers votre point de terminaison Private Service Connect :

        gcloud dns managed-zones create restricted-dns-zone \
          --description="Private DNS Zone to map Google API queries to the Private Service Connect endpoint for Google APIs" \
          --dns-name="googleapis.com." \
          --networks=restricted-vpc \
          --visibility=private
        
        gcloud dns record-sets create googleapis.com  \
        --rrdatas=10.0.1.1 \
        --type=A \
        --ttl=300 \
        --zone=restricted-dns-zone
        
        gcloud dns record-sets create *.googleapis.com  \
        --rrdatas="googleapis.com." \
        --type=CNAME \
        --ttl=300 \
        --zone=restricted-dns-zone
      5. Configurez une règle de pare-feu de faible priorité pour refuser tout le trafic sortant:

        gcloud compute firewall-rules create deny-all-egress \
        --priority=65534 \
        --direction=egress \
        --network=restricted-vpc \
        --action=DENY \
        --rules=all \
        --destination-ranges=0.0.0.0/0
      6. Configurez une règle de pare-feu avec une priorité plus élevée pour autoriser le trafic à atteindre l'adresse IP utilisée par votre point de terminaison Private Service Connect :

        gcloud compute firewall-rules create allow-psc-for-google-apis \
        --priority=1000 \
        --direction=egress \
        --network=restricted-vpc \
        --action=ALLOW \
        --rules=tcp:443 \
        --destination-ranges=10.0.1.1

        Ces règles de pare-feu refusent globalement la sortie, avant d'autoriser de manière sélective la sortie vers le point de terminaison Private Service Connect. Cette configuration refuse le trafic sortant vers les domaines par défaut accessibles par défaut via l'accès privé à Google la règles de pare-feu implicites.

      Créer un périmètre VPC Service Controls

      Dans cette section, vous allez créer un périmètre VPC Service Controls.

      1. Dans Cloud Shell, créez une stratégie d'accès comme condition préalable pour Créez un périmètre VPC Service Controls:

        gcloud access-context-manager policies create \
        --organization=ORGANIZATION_ID --title "Access policy at organization node"

        Le résultat ressemble à ce qui suit :

        "Create request issued
        Waiting for operation [operations/accessPolicies/123456789/create/123456789] to complete...done."
        

        Il ne peut y avoir qu'un seul conteneur de stratégie d'accès au niveau du nœud d'organisation. Si un a déjà été créée dans votre organisation, le résultat ressemble à ce qui suit:

        "ALREADY_EXISTS: Policy already exists with parent ContainerKey{containerId=organizations/123456789012, numericId=123456789012}"
        

        Si ce message s'affiche, passez à l'étape suivante.

      2. Créez un périmètre VPC Service Controls qui limite le Services Cloud Storage et Compute Engine.

        export POLICY_ID=$(gcloud access-context-manager policies list \
        --organization=ORGANIZATION_ID \
        --format="value(name)")
        
        gcloud access-context-manager perimeters create demo_perimeter \
        --title="demo_perimeter" \
        --resources=projects/$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") \
        --restricted-services="storage.googleapis.com,compute.googleapis.com" \
        --enable-vpc-accessible-services \
        --policy=$POLICY_ID \
        --vpc-allowed-services="RESTRICTED-SERVICES"

      Vérifier les services autorisés en provenance du trafic extérieur à votre périmètre

      Les sections suivantes expliquent comment le périmètre VPC Service Controls autorise ou refuse l'accès aux requêtes provenant de l'extérieur du périmètre vous pouvez autoriser de manière sélective l'entrée vers les services en configurant des niveaux d'accès et règles d'entrée.

      Pour simuler le trafic en dehors de votre périmètre, vous pouvez exécuter des commandes dans Cloud Shell. Cloud Shell est une ressource extérieure à votre propre projet et périmètre. Le périmètre autorise ou refuse les requêtes, même si elles disposent des droits Identity and Access Management suffisants pour aboutir.

      Ce tutoriel utilise les API Compute Engine, Cloud Storage et Cloud Resource Manager, mais les mêmes concepts s'appliquent également à d'autres services.

      Vérifier que le périmètre refuse le trafic externe vers les services restreints

      Dans cette section, vous allez vérifier que le périmètre refuse le trafic externe vers les services soumis à des restrictions.

      Schéma de l'architecture illustrant comment un périmètre VPC Service Controls refuse l'accès à des services restreints

      Le schéma précédent montre comment un client autorisé se voit refuser l'accès à à l'intérieur du périmètre que vous avez configuré comme restreint, mais est autorisé à accéder à des services que vous n'avez pas configurés comme étant restreints.

      Dans les étapes suivantes, vous allez vérifier ce concept à l'aide de Cloud Shell pour tenter de créer une VM dans votre réseau VPC, ce qui échoue en raison de la configuration du périmètre VPC Service Controls.

      1. Dans Cloud Shell, exécutez la commande suivante pour créer une VM au sein de votre réseau VPC.

        gcloud compute instances create demo-vm \
            --machine-type=e2-micro \
            --subnet=restricted-subnet \
            --scopes=https://www.googleapis.com/auth/cloud-platform \
            --no-address

        Le résultat ressemble à ce qui suit :

        "ERROR: (gcloud.compute.instances.create) Could not fetch resource:
        - Request is prohibited by organization's policy."
        

        La requête échoue, car Cloud Shell se trouve en dehors de votre périmètre et que Compute Engine est configuré avec l'indicateur --restricted-services.

      2. Dans Cloud Shell, exécutez la commande suivante pour accéder au service Resource Manager, qui n'est pas configuré dans le --restricted-services.

        gcloud projects describe PROJECT_ID

        Une réponse positive renvoie les détails du projet. Cette réponse montre que votre périmètre autorise le trafic externe vers API Cloud Resource Manager.

        Vous avez démontré que le périmètre refuse le trafic externe aux services configurés dans --restricted-services et autorise l'accès externe Trafic vers des services qui ne sont pas explicitement configurés dans --restricted-services.

      Les sections suivantes présentent les formats d'exceptions permettant d'atteindre à l'intérieur du périmètre.

      Vérifier qu'un niveau d'accès autorise une exception au périmètre

      Dans cette section, vous allez vérifier qu'un niveau d'accès permet une exception au périmètre. Un niveau d'accès est utile lorsque vous souhaitez créer une exception pour le trafic externe afin d'accéder à tous les services restreints à l'intérieur du périmètre et que vous n'avez pas besoin d'exceptions précises pour chaque service ou autre attribut.

      Schéma de l'architecture illustrant la façon dont un niveau d'accès accorde une exception à tous les services situés à l'intérieur du périmètre VPC Service Controls

      Le schéma précédent montre comment un niveau d'accès permet à un client autorisé pour accéder à tous les services restreints à l'intérieur du périmètre.

      Dans les étapes suivantes, vous allez vérifier ce concept en créant un niveau d'accès, puis en envoyant une requête réussie au service Compute Engine. Ce est autorisée, même si vous avez configuré Compute Engine comme restreint.

      1. Dans Cloud Shell, créez un fichier YAML qui décrit la configuration d'un niveau d'accès et appliquez-le à votre périmètre. Ce crée un niveau d'accès pour l'identité de l'utilisateur pour exécuter le tutoriel.

        export USERNAME=$(gcloud config list account --format "value(core.account)")
        
        cat <<EOF > user_spec.yaml
        - members:
          - user:$USERNAME
        EOF
        
        gcloud access-context-manager levels create single_user_level \
        --title="single-user access level" \
        --basic-level-spec=user_spec.yaml \
        --policy=$POLICY_ID
        
        gcloud access-context-manager perimeters update demo_perimeter \
        --add-access-levels=single_user_level \
        --policy=$POLICY_ID
      2. Dans Cloud Shell, exécutez à nouveau la commande suivante pour tenter de créer une VM :

        gcloud compute instances create demo-vm \
        --machine-type=e2-micro \
        --subnet=restricted-subnet \
        --scopes=https://www.googleapis.com/auth/cloud-platform \
        --no-address

        Cette fois, la requête fonctionne. Votre périmètre empêche le trafic externe à l'aide des services restreints, mais le niveau d'accès que vous avez configuré une exception.

      Vérifier qu'une règle d'entrée autorise une exception précise au périmètre

      Dans cette section, vous allez vérifier qu'une règle d'entrée autorise une exception précise. au périmètre. Par rapport au niveau d'accès à faible précision, un niveau d'accès ultraprécis règle d'entrée peuvent configurer des attributs supplémentaires sur la source de trafic et autoriser l'accès à des services ou méthodes spécifiques.

      Schéma d&#39;architecture montrant comment une règle d&#39;entrée permet à une exception précise de s&#39;appliquer à des services spécifiés à l&#39;intérieur du périmètre

      Le schéma précédent montre comment une règle d'entrée permet à un réseau client d'accéder uniquement à un service spécifié à l'intérieur du périmètre, sans autoriser l'accès à d'autres services restreints.

      Lors des étapes suivantes, vous allez valider ce concept en remplaçant le niveau d'accès avec une règle d'entrée qui permet à un client autorisé d'accéder uniquement service Compute Engine, mais ne permet pas l'accès à d'autres services.

      1. Dans l'onglet Cloud Shell, exécutez la commande suivante pour supprimer le niveau d'accès.

        gcloud access-context-manager perimeters update demo_perimeter \
        --policy=$POLICY_ID \
        --clear-access-levels
      2. Dans l'onglet Cloud Shell, créez une règle d'entrée qui autorise votre identité d'utilisateur pour entrer service Compute Engine uniquement et appliquer la règle à votre périmètre.

        cat <<EOF > ingress_spec.yaml
        - ingressFrom:
            identities:
            - user:$USERNAME
            sources:
            - accessLevel: '*'
          ingressTo:
            operations:
            - methodSelectors:
              - method: '*'
              serviceName: compute.googleapis.com
            resources:
            - '*'
        EOF
        
        gcloud access-context-manager perimeters update demo_perimeter \
        --set-ingress-policies=ingress_spec.yaml \
        --policy=$POLICY_ID
      3. Dans l'onglet Cloud Shell, exécutez la commande suivante pour créer un bucket Cloud Storage dans le périmètre.

        gcloud storage buckets create gs://PROJECT_ID-01

        Le résultat ressemble à ce qui suit :

        "ERROR: (gcloud.storage.buckets.create) HTTPError 403: Request is prohibited by organization's policy."
        

        Cloud Shell étant un client situé en dehors du périmètre, le Le périmètre VPC Service Controls empêche Cloud Shell communiquer avec des services restreints à l'intérieur du périmètre.

      4. Dans l'onglet Cloud Shell, exécutez la commande suivante pour créer un au service Compute Engine situé dans le périmètre.

        gcloud compute instances describe demo-vm --zone=ZONE

        Une réponse positive renvoie les détails de demo-vm. Cette réponse montre que votre périmètre autorise le trafic externe répondant aux de votre règle d'entrée au service Compute Engine.

      Vérifier les services autorisés pour le trafic à l'intérieur de votre périmètre

      Les sections suivantes expliquent comment le périmètre VPC Service Controls autorise ou refuse les requêtes adressées à des services depuis l'intérieur du périmètre, et comment vous pouvez autoriser de manière sélective la sortie vers les services externes par des règles de sortie.

      Pour illustrer la différence entre le trafic à l'intérieur et à l'extérieur du périmètre, les sections suivantes utilisent à la fois Cloud Shell en dehors du périmètre et Instance Compute Engine que vous créez à l'intérieur du périmètre. Les commandes que vous exécutez à partir de la session SSH sur l'instance Compute Engine à l'intérieur du périmètre utilisent l'identité du compte de service associé, tandis que les commandes exécutées à partir de Cloud Shell en dehors du périmètre utilisent votre propre identité. Quand ? en suivant la configuration recommandée pour ce tutoriel, le périmètre autorise ou refuse des requêtes, même si elles disposent de droits IAM suffisants pour réussir.

      Ce tutoriel utilise l'API Compute Engine, l'API Cloud Storage et API Cloud Resource Manager, mais les mêmes concepts s'appliquent également à d'autres services.

      Vérifier que le périmètre autorise le trafic interne vers des services restreints à l'intérieur du périmètre

      Dans cette section, vous allez vérifier que le périmètre autorise le trafic provenant du réseau points de terminaison situés à l'intérieur de votre périmètre si le service est également configuré dans Services accessibles par VPC.

      Schéma architectural illustrant comment la configuration de vpc-accessible-services permet d&#39;accéder aux services à partir de vos points de terminaison réseau internes

      Le schéma précédent montre comment un périmètre permet au trafic provenant des points de terminaison du réseau situés dans le périmètre d'atteindre les services restreints que vous avez également configurés en tant que services accessibles par VPC. Services que vous n'avez pas configurés Les services accessibles par VPC ne sont pas accessibles depuis les points de terminaison du réseau périmètre.

      Dans les étapes suivantes, vous allez vérifier ce concept en établissant un à l'instance Compute Engine à l'intérieur du périmètre, à envoyer des requêtes aux services.

      1. Dans Cloud Shell, créez une règle de pare-feu autorisant SSH le trafic entrant vers votre réseau VPC en autorisant le trafic d'entrée provenant de l'adresse IP 35.235.240.0/20 d'adresses IP utilisée par le IAP pour le transfert TCP service:

        gcloud compute firewall-rules create demo-allow-ssh \
        --direction=INGRESS \
        --priority=1000 \
        --network=restricted-vpc \
        --action=ALLOW \
        --rules=tcp:22 \
        --source-ranges=35.235.240.0/20 
      2. Démarrez une session SSH sur cette instance :

        gcloud compute ssh demo-vm --zone=ZONE

        Vérifiez que vous êtes bien connecté à l'instance demo-vm en confirmant que l'invite de ligne de commande a été modifiée pour afficher le nom d'hôte de votre instance:

        username@demo-vm:~$
        

        Si la commande précédente échoue, un message d'erreur semblable à celui-ci peut s'afficher : suivantes:

        "[/usr/bin/ssh] exited with return code [255]"
        

        Dans ce cas, il est possible que l'instance Compute Engine n'ait pas terminé au démarrage. Patientez une minute, puis réessayez.

      3. À partir de la session SSH à l'intérieur de votre périmètre, vérifiez les services votre périmètre permet d'utiliser en interne un service Google Cloud est configuré dans la liste d'autorisation des services accessibles par VPC. Par exemple, essayez une commande via le service Compute Engine.

        gcloud compute instances describe demo-vm --zone=ZONE

        Une réponse positive renvoie les détails de demo-vm. Cette réponse montre que votre périmètre autorise le trafic interne vers l'API Compute Engine.

      4. À partir de la session SSH à l'intérieur de votre périmètre, vérifiez que les services non inclus dans la liste d'autorisation des services accessibles par VPC ne sont pas autorisés votre VM. Par exemple, la commande suivante utilise le service Resource Manager, qui n'est pas configuré dans la liste d'autorisation des services accessibles par VPC.

        gcloud projects describe PROJECT_ID

        Le résultat ressemble à ce qui suit :

        "ERROR: (gcloud.projects.list) PERMISSION_DENIED: Request is prohibited by organization's policy."
        

        Votre instance Compute Engine et les autres points de terminaison du réseau de demander des services configurés dans la liste d'autorisation des services accessibles par VPC. Toutefois, des ressources sans serveur ou du trafic de service provenant de l'extérieur de votre périmètre peuvent demander ce service. Si vous souhaitez empêcher un service dans votre projet, consultez les Règle d'utilisation des ressources du service restreint.

      Vérifier que le périmètre refuse le trafic interne vers des services restreints situés en dehors du périmètre

      Dans cette section, vous vérifiez que le périmètre bloque la communication des services situés à l'intérieur du périmètre avec les services Google Cloud situés en dehors du périmètre.

      Schéma architectural illustrant comment un périmètre VPC Service Controls refuse l&#39;accès du trafic situé à l&#39;intérieur du périmètre aux services restreints situés en dehors du périmètre

      Le schéma précédent montre comment le trafic interne ne peut pas communiquer avec services restreints et externes à ce périmètre.

      Dans les étapes suivantes, vous allez vérifier ce concept en essayant d'envoyer vers un service restreint situé dans le périmètre et vers un service restreint situées en dehors du périmètre.

      1. Dans la session SSH de votre périmètre, exécutez la commande suivante pour créer un bucket de stockage dans votre périmètre. Cette commande fonctionne car le service Cloud Storage est configuré à la fois dans restricted-services et accessible-services.

        gcloud storage buckets create gs://PROJECT_ID-02

        Une réponse réussie crée le bucket de stockage. Cette réponse montre que votre périmètre autorise le trafic interne vers le bucket Cloud Storage Google Cloud.

      2. À partir de la session SSH à l'intérieur de votre périmètre, exécutez la commande suivante : pour lire les données d'un bucket situé en dehors de votre périmètre. Ce un bucket public autorise l'accès en lecture seule à allUsers, mais le périmètre refuse le trafic depuis l'intérieur de votre périmètre vers un service restreint situé à l'extérieur le périmètre.

        gcloud storage cat gs://solutions-public-assets/vpcsc-tutorial/helloworld.txt

        Le résultat ressemble à ce qui suit :

        "ERROR: (gcloud.storage.objects.describe) HTTPError 403: Request is prohibited
        by organization's policy."
        

        Cette réponse montre que vous pouvez utiliser des services restreints du périmètre, mais une ressource située à l'intérieur de celui-ci ne peut pas communiquer services restreints et externes à ce périmètre.

      Vérifier qu'une règle de sortie autorise une exception au périmètre

      Dans cette section, vous allez vérifier qu'une règle de sortie autorise une exception au périmètre.

      Schéma d&#39;architecture illustrant la façon dont une règle de sortie autorise des exceptions spécifiques à atteindre un service restreint situé en dehors du périmètre

      Le schéma précédent montre comment le trafic interne peut communiquer avec une ressource externe spécifique lorsque vous accordez une exception étroite avec la règle de sortie.

      Dans les étapes suivantes, vous allez vérifier ce concept en créant une règle de sortie l'accès à un bucket Cloud Storage public situé en dehors du périmètre autorisé par la règle de sortie.

      1. Ouvrez une nouvelle session Cloud Shell en cliquant sur  Ouvrir un nouvel onglet dans Cloud Shell. Dans les étapes suivantes, vous allez basculer entre le premier onglet avec la session SSH à l'intérieur de votre périmètre et le deuxième onglet dans Cloud Shell en dehors de votre périmètre, où l'invite de ligne de commande commence par username@cloudshell.

      2. Dans l'onglet Cloud Shell, créez une règle de sortie qui autorise à partir de l'identité du compte de service associé à demo-vm à l'aide de google.storage.objects.get vers un bucket public dans un bucket externe projet. Mettez à jour le périmètre avec la règle de sortie.

        export POLICY_ID=$(gcloud access-context-manager policies list \
        --organization=ORGANIZATION_ID \
        --format="value(name)")
        
        export SERVICE_ACCOUNT_EMAIL=$(gcloud compute instances describe demo-vm \
        --zone=ZONE) \
        --format="value(serviceAccounts.email)"
        cat <<EOF > egress_spec.yaml
        - egressFrom:
            identities:
              - serviceAccount:$SERVICE_ACCOUNT_EMAIL
          egressTo:
            operations:
            - methodSelectors:
              - method: 'google.storage.objects.get'
              serviceName: storage.googleapis.com
            resources:
            - projects/950403849117
        EOF
        
        gcloud access-context-manager perimeters update demo_perimeter \
        --set-egress-policies=egress_spec.yaml \
        --policy=$POLICY_ID
      3. Revenez à l'onglet contenant la session SSH sur la VM située dans votre périmètre. où l'invite de ligne de commande commence par username@demo-vm.

      4. À partir de la session SSH à l'intérieur de votre périmètre, envoyez une autre requête au un bucket Cloud Storage et vérifier qu'il fonctionne.

        gcloud storage cat gs://solutions-public-assets/vpcsc-tutorial/helloworld.txt

        Le résultat ressemble à ce qui suit :

        "Hello world!
        This is a sample file in Cloud Storage that is viewable to allUsers."
        

        Cette réponse démontre que votre périmètre et votre règle de sortie autorisent le trafic provenant d'une identité spécifique vers un bucket Cloud Storage spécifique.

      5. À partir de la session SSH à l'intérieur de votre périmètre, vous pouvez également tester d'autres qui n'étaient pas explicitement autorisées par l'exception de règle de sortie. Pour exemple, la commande suivante nécessite l'autorisation google.storage.buckets.list d'autorisation refusée par votre périmètre.

        gcloud storage ls gs://solutions-public-assets/vpcsc-tutorial/*

        Le résultat ressemble à ce qui suit :

        "ERROR: (gcloud.storage.cp) Request is prohibited by organization's policy."
        

        Cette réponse démontre que votre périmètre refuse le trafic interne provenant de lister les objets dans le bucket externe, ce qui indique que la règle de sortie autorise de manière stricte les méthodes spécifiées explicitement.

      Pour plus de références sur les modèles courants de partage de données en dehors de votre service périmètre, consultez échange de données sécurisé avec des règles d'entrée et de sortie.

      (Facultatif) Configurer la règle d'utilisation des ressources du service restreint

      Vous pouvez également avoir des exigences internes ou de conformité pour n'autoriser que les API approuvées individuellement à utiliser dans votre environnement. Dans ce cas, vous pouvez également configurer Utilisation des ressources du service restreint Service de règles d'administration. En appliquant la règle d'administration à un projet, vous limiter les services qui peuvent être créés dans ce projet. Toutefois, La règle d'administration n'empêche pas les services de ce projet de communiquer avec les services dans d'autres projets. En comparaison, VPC Service Controls vous permet de définir un périmètre la communication avec des services extérieurs au périmètre.

      Par exemple, si vous définissez une règle d'administration Compute Engine et refusez l'utilisation de Cloud Storage dans votre projet, une VM projet n'a pas pu créer de bucket Cloud Storage dans votre projet. Cependant, la VM peut envoyer des requêtes à un bucket Cloud Storage d'un autre projet. Par conséquent, l'exfiltration avec le service Cloud Storage est toujours possible. Pour implémenter et tester ce scénario, procédez comme suit:

      1. Passez à l'onglet Cloud Shell, où l'invite de ligne de commande commence par username@cloudshell.
      2. Dans l'onglet Cloud Shell, créez un fichier YAML décrivant Service de règles d'administration qui n'autorisera que l'utilisation de l'instance Compute Engine et refuser tous les autres services, puis l'appliquer à votre projet.

        cat <<EOF > allowed_services_policy.yaml
        constraint: constraints/gcp.restrictServiceUsage
        listPolicy:
          allowedValues:
          - compute.googleapis.com
          inheritFromParent: true
        EOF
        
        gcloud resource-manager org-policies set-policy allowed_services_policy.yaml \
        --project=PROJECT_ID
      3. Revenez à l'onglet contenant la session SSH sur la VM située dans votre périmètre. où l'invite de ligne de commande commence par username@demo-vm.

      4. À partir de la session SSH à l'intérieur de votre périmètre, exécutez la commande suivante pour : pour afficher le bucket de stockage précédemment créé dans ce projet.

        gcloud storage buckets describe gs://PROJECT_ID

        Le résultat ressemble à ce qui suit :

        "ERROR: (gcloud.storage.buckets.create) HTTPError 403: Request is disallowed by organization's constraints/gcp.restrictServiceUsage constraint for 'projects/123456789' attempting to use service 'storage.googleapis.com'."
        

        Cette réponse démontre que le service de règles d'administration refuse le service Cloud Storage à l'intérieur de votre projet, quelle que soit la configuration de votre périmètre.

      5. À partir de la session SSH à l'intérieur de votre périmètre, exécutez la commande suivante : pour afficher un bucket de stockage situé en dehors du périmètre autorisé par votre de sortie.

        gcloud storage cat gs://solutions-public-assets/vpcsc-tutorial/helloworld.txt

        Le résultat ressemble à ce qui suit :

        "Hello world!
        This is a sample file in Cloud Storage that is viewable to allUsers."
        

        Une réponse positive renvoie le contenu de helloworld.txt dans l'instance bucket de stockage. Cette réponse démontre que votre une règle de périmètre et de sortie permet au trafic interne d'atteindre un espace de stockage externe bucket dans certaines conditions limitées, mais le service de règles d'administration refuse service Cloud Storage dans votre projet, quelle que soit la configuration périmètre. Des services extérieurs à votre projet peuvent tout de même être utilisés à des fins d'exfiltration elles sont autorisées par votre périmètre, quel que soit le niveau Service de règles d'administration de l'utilisation des ressources

        Pour refuser la communication avec Cloud Storage ou d'autres services Google situées à l'extérieur du périmètre, Utilisation des ressources du service restreint Un service de règles d'administration seul ne suffit pas, vous devez configurer un Périmètre VPC Service Controls. VPC Service Controls limite les chemins d'exfiltration, Utilisation des ressources du service restreint est un contrôle de conformité visant à empêcher la création de services non approuvés au sein de votre environnement. Combinez ces contrôles pour bloquer divers chemins d'exfiltration et autoriser de façon sélective les services approuvés pour une utilisation interne dans votre environnement.

      Effectuer un nettoyage

      Delete a Google Cloud project:

      gcloud projects delete PROJECT_ID

      Bien que le périmètre VPC Service Controls ne génère coût supplémentaire, elles doivent être nettoyées pour éviter tout encombrement et les ressources inutilisées dans votre organisation.

      1. Dans le sélecteur de projet en haut de la console Google Cloud, choisissez l'organisation que vous avez utilisés au cours de ce tutoriel.
      2. Dans la console Google Cloud, accédez à la page VPC Service Controls. .

        Accéder à VPC Service Controls

      3. Sous la liste des périmètres, sélectionnez celui que vous souhaitez supprimer, puis cliquez sur Supprimer.

      4. Dans la boîte de dialogue, cliquez à nouveau sur Supprimer pour confirmer la suppression.

      Étape suivante