1. Introduction
Dans cet atelier, nous allons apprendre à protéger le service de transfert de données BigQuery à l'aide de VPC Service Controls lors du transfert de données de Cloud Storage vers un ensemble de données BigQuery. Nous protégeons ensuite Cloud Storage et répétons le processus pour transférer les données de Cloud Storage vers BigQuery. La protection de Cloud Storage entraîne une violation de VPC Service Controls, qui doit être corrigée pour que le transfert réussisse. Enfin, nous protégeons également BigQuery, puis nous tentons de copier l'ensemble de données entre les projets, ce qui entraîne également un non-respect à corriger.
Tout au long de cet atelier, nous verrons comment résoudre les cas de non-respect des règles d'entrée et de sortie à l'aide des règles d'entrée et de sortie, respectivement. Nous utiliserons également un niveau d'accès pour corriger le non-respect des règles concernant l'entrée de données dans le service de transfert de données BigQuery. Les objectifs de cet atelier de programmation sont les suivants :
- Découvrez comment corriger les problèmes de non-respect des règles d'entrée et de sortie à l'aide des règles d'entrée et de sortie respectivement sur différents services, notamment Cloud Storage, BigQuery et le service de transfert de données BigQuery.
- Comprendre pourquoi une infraction spécifique s'est produite.
2. Configuration et exigences des ressources
Avant de commencer
Dans cet atelier de programmation, nous partons du principe que vous connaissez déjà les éléments suivants :
- Créer un dossier
- Créer un projet dans un dossier ou déplacer un projet existant dans un dossier
- Comment créer une règle d'accès limitée
- Comment créer et configurer un périmètre de service à partir de la console Google Cloud
- Comment trouver les journaux des cas de non-respect dans les journaux d'audit
Configuration
Notre configuration initiale est conçue comme suit :
- Une organisation Google Cloud.
- Dossier sous l'organisation. Pour cet atelier de programmation, nous l'appellerons
codelab-folder. - Deux projets Google Cloud dans le dossier
codelab-folder. Pour cet atelier de programmation, nous appelons les projetsproject-1etproject-2.- Si vous n'avez pas encore créé le dossier et les projets, dans la console Google Cloud, créez un dossier sous l'organisation et créez deux projets.
- Autorisations requises : Rôles IAM pour gérer les dossiers, Rôles IAM pour gérer les projets, Rôles IAM requis pour configurer les contrôles du service VPC, Rôles IAM pour gérer BigQuery et Rôles IAM pour gérer Cloud Storage.
- Compte de facturation pour les projets
project-1etproject-2.
Créer une règle limitée et un périmètre de service standard
Dans cet atelier de programmation, nous utiliserons un périmètre de service standard protégeant project-2.
- Créez une règle d'accès limitée au niveau du dossier
codelab-folder. Pour cet atelier de programmation, nous partons du principe que la règle d'accès créée a l'ID987654321. - Créez un périmètre standard, que nous appellerons
perimeter-2, et ajoutez le projetproject-2.
Dans le périmètre perimeter-2, limitez BigQuery Data Transfer API.

Création d'un bucket Cloud Storage et d'un ensemble de données BigQuery
Pour cet atelier de programmation, n'importe quel fichier CSV suffit, quel que soit son contenu. La principale limitation concerne l'exigence de colocation, qui impose les conditions suivantes :
- Si votre ensemble de données BigQuery se trouve dans une zone multirégionale, le bucket Cloud Storage contenant les données que vous transférez doit se trouver dans la même zone multirégionale ou dans un emplacement inclus dans la zone multirégionale.
- Si votre ensemble de données se trouve dans une région, votre bucket Cloud Storage doit se situer dans la même région.
Par conséquent, pour cet atelier de programmation, nous veillerons à ce que le bucket Cloud Storage et l'ensemble de données BigQuery se trouvent dans la même région ou zone multirégionale.
Créez un bucket Cloud Storage dans le projet project-1.
Pour créer un bucket Cloud Storage, suivez la procédure de création d'un bucket.
- Pour le nom du bucket, saisissez un nom qui répond aux exigences de dénomination des buckets. Pour cet atelier de programmation, nous appellerons le bucket
codelab-bqtransfer-bucket. - Pour l'emplacement de stockage des données et du bucket, sélectionnez un type d'emplacement et un emplacement où les données du bucket seront stockées de manière permanente. Pour cet atelier de programmation, nous allons utiliser us (plusieurs régions aux États-Unis).

Créer un fichier CSV
Depuis votre machine locale ou à l'aide de Cloud Shell, nous pouvons utiliser la commande echo pour créer un exemple de fichier CSV, codelab-test-file.csv, à l'aide des commandes suivantes :
echo "name,age" > codelab-test-file.csv; \
echo "Alice,10" >> codelab-test-file.csv; \
echo "Bob,20" >> codelab-test-file.csv; \
echo "Carol,30" >> codelab-test-file.csv; \
echo "Dan,40" >> codelab-test-file.csv; \
echo "Eve,50" >> codelab-test-file.csv; \
echo "Frank,60" >> codelab-test-file.csv; \
echo "Grace,70" >> codelab-test-file.csv; \
echo "Heidi,80" >> codelab-test-file.csv;
Importer le fichier CSV dans le bucket Cloud Storage
Une fois le fichier CSV créé, exécutez la commande suivante pour importer l'objet fichier dans le bucket créé :
gcloud storage cp codelab-test-file.csv gs://codelab-bqtransfer-bucket

Vous pouvez vérifier que le fichier a été importé dans le bucket créé en listant les objets du bucket ou en exécutant la commande suivante :
gcloud storage ls --recursive gs://codelab-bqtransfer-bucket/**
Créer un ensemble de données et une table BigQuery dans project-2
- Créez un ensemble de données BigQuery dans le projet
project-2en suivant ces étapes.- Pour ID de l'ensemble de données, indiquez un nom d'ensemble de données unique. Pour cet atelier de programmation, nous utilisons :
codelab_bqtransfer_dataset. - Dans Type d'emplacement, sélectionnez un emplacement géographique pour l'ensemble de données. Pour cet atelier de programmation, nous utilisons le même emplacement que le bucket Cloud Storage : États-Unis (plusieurs régions aux États-Unis).

- Pour ID de l'ensemble de données, indiquez un nom d'ensemble de données unique. Pour cet atelier de programmation, nous utilisons :
- Créez une table BigQuery dans l'ensemble de données créé
codelab_bqtransfer_dataseten suivant ces étapes.- Dans la section Source, sélectionnez Table vide dans la liste Créer une table à partir de.
- Dans le champ Table, saisissez le nom de la table que vous souhaitez créer. Pour cet atelier de programmation, nous utilisons le nom
codelab-bqtransfer-table. - Vérifiez que le champ Type de table est défini sur Table native.
- Dans la section Schéma, saisissez la définition du schéma. Vous pouvez saisir les informations du schéma en cliquant sur Modifier sous forme de texte et en saisissant le schéma suivant, qui est conforme au format du fichier CSV créé.
[{ "name": "name", "type": "STRING", "mode": "NULLABLE", "description": "The name" }, { "name": "age", "type": "INTEGER", "mode": "NULLABLE", "description": "The age" }]
Coût
Vous devez activer la facturation dans les projets project-2 et project-1 pour utiliser les ressources/API Cloud. Nous vous conseillons d'arrêter les ressources utilisées pour éviter qu'elles ne vous soient facturées au-delà de cet atelier de programmation.
Les ressources qui entraînent des coûts sont BigQuery et Cloud Storage. Vous trouverez une estimation des coûts dans le simulateur de coût BigQuery et le simulateur de coût Cloud Storage.
3. Configurer le transfert de données d'un objet Cloud Storage vers une table BigQuery
Nous allons maintenant essayer de créer un service de transfert de données (dans project-2) pour transférer des données de Cloud Storage (situé dans project-1) vers BigQuery (situé dans project-2), tout en protégeant le service de transfert de données BigQuery dans project-2 avec les contrôles de service VPC. Si vous ne protégez que le service de transfert de données BigQuery (sans protéger également BigQuery et Cloud Storage), les principaux ne pourront que créer et gérer des transferts de données (par exemple, démarrer manuellement un transfert de données).
Configurer le transfert de données depuis Cloud Storage
Pour créer un transfert de données, procédez comme suit :
- Accédez à la page BigQuery de la console Google Cloud de
project-2. - Cliquez sur Transferts de données.

Enquêter sur le non-respect lorsque vous accédez à la page "Transferts de données"
Dans la console Google Cloud, nous pouvons voir l'identifiant unique de VPC Service Controls. Utilisez le même identifiant pour filtrer les journaux et identifier les détails de l'infraction (remplacez OBSERVED_VPCSC_DENIAL_UNIQUE_ID par l'ID de refus observé) :
protoPayload.metadata.@type="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"
protoPayload.metadata.vpcServiceControlsUniqueId="OBSERVED_VPCSC_DENIAL_UNIQUE_ID"
Le non-respect observé est un NO_MATCHING_ACCESS_LEVEL, qui est un non-respect des règles d'entrée avec des détails semblables à ceux-ci :
ingressViolations: [
0: {
servicePerimeter: "accessPolicies/987654321/servicePerimeters/perimeter-2"
targetResource: "projects/[PROJECT2_NUMBER]"
}]
violationReason: "NO_MATCHING_ACCESS_LEVEL"
callerIp: "USER_PUBLIC_IP_ADDRESS"
resource: {
labels: {
method: "google.cloud.bigquery.datatransfer.v1.DataTransferService.ListTransferConfigs"
project_id: "project-2"
service: "bigquerydatatransfer.googleapis.com"
}
type: "audited_resource"
}
L'accès à la page "Transferts de données" tente de lister tous les transferts de données configurés. Il s'agit donc d'un non-respect de la méthode ListTransferConfigs.
Résoudre le cas de non-respect des règles pour le service bigquerydatatransfer.googleapis.com
Vous pouvez utiliser un niveau d'accès ou une règle d'entrée pour corriger une infraction d'entrée. Dans cet atelier de programmation, utilisons une règle d'entrée configurée avec l'identité utilisateur refusée, qui permet d'accéder au service bigquerydatatransfer.googleapis.com et à toutes les méthodes.

Une fois la règle d'entrée en place, l'accès à la page Transferts de données devrait fonctionner sans problème.
Reprendre la configuration du transfert de données depuis Cloud Storage
À partir des étapes précédentes, sur la page "Transferts de données" (après avoir cliqué sur "Transferts de données"), procédez comme suit :
- Cliquez sur + Créer un transfert.
- Dans la section Type de source, choisissez Google Cloud Storage comme Source.
- Dans la section Nom de la configuration de transfert, sous Nom à afficher, saisissez un nom pour le transfert, tel que
Codelab Transfer. - Dans la section Options de programmation :
- Sélectionnez une fréquence de répétition, par exemple 15 minutes.
- Veillez à sélectionner Commencer. Sinon, le transfert de données ne commencera qu'après la fréquence de répétition configurée.
- Dans la section Paramètres de destination, pour le champ Ensemble de données de destination, choisissez l'ensemble de données que vous avez créé pour stocker vos données :
codelab_bqtransfer_dataset - Dans la section Détails de la source de données
- Sous Destination table (Table de destination), saisissez le nom de votre table de destination. Le nom de la table de destination doit respecter les règles de dénomination des tables. Pour cet atelier de programmation, nous allons utiliser la table que nous avons créée précédemment :
codelab-bqtransfer-table - Dans le champ URI Cloud Storage, saisissez l'URI Cloud Storage. Pour cet atelier de programmation, nous utilisons le bucket et le fichier créés :
codelab-bqtransfer-bucket/codelab-test-file.csv - Pour Préférence d'écriture, conservez
APPEND(ou sélectionnezMIRROR). - NE SÉLECTIONNEZ PAS l'option permettant de supprimer les fichiers après le transfert (car nous réutiliserons le même fichier plusieurs fois). Toutefois, vous pouvez utiliser plusieurs fichiers et supprimer les fichiers sources après le transfert.
- Pour Format de fichier, sélectionnez CSV.
- Dans Options de transfert, sous CSV, saisissez une virgule(",") comme délimiteur de champ.
- Sous Destination table (Table de destination), saisissez le nom de votre table de destination. Le nom de la table de destination doit respecter les règles de dénomination des tables. Pour cet atelier de programmation, nous allons utiliser la table que nous avons créée précédemment :
- Dans le menu Compte de service, sélectionnez un compte de service parmi ceux associés à votre projet Google Cloud.
- Le compte de service sélectionné doit disposer des autorisations requises pour Cloud Storage sur le projet hébergeant le bucket de stockage :
project-1dans cet atelier de programmation. - Pour cet atelier de programmation, nous utiliserons un compte de service créé dans
project-2en tant quecodelab-sa@project-2.iam.gserviceaccount.com.
- Le compte de service sélectionné doit disposer des autorisations requises pour Cloud Storage sur le projet hébergeant le bucket de stockage :
- Cliquez sur Enregistrer.
Comme nous avons sélectionné Commencer comme option de programmation, le premier transfert commencera dès que vous aurez cliqué sur Enregistrer.
Vérifier l'état du service de transfert de données
Pour vérifier l'état du transfert de données configuré :
- Accédez à la page BigQuery de la console Google Cloud.
- Cliquez sur Transferts de données.
- La liste des transferts configurés s'affiche.

Cliquez sur Codelab Transfer (sous "Nom à afficher"). La liste de toutes les exécutions effectuées jusqu'à présent s'affiche.

L'exécution du transfert de données doit réussir, sans aucune violation de VPC Service Controls, qu'il s'agisse d'un transfert de données déclenché manuellement ou planifié. Notez que seule la règle d'entrée est nécessaire pour le transfert déclenché manuellement afin d'autoriser l'accès à l'entité principale qui lance le transfert manuellement.
4. Restrictions liées aux adresses IP pour les transferts de données déclenchés manuellement
Les règles d'entrée actuellement configurées permettent à l'identité configurée de déclencher manuellement le transfert de données à partir de n'importe quelle adresse IP.
Grâce aux niveaux d'accès, VPC Service Controls permet de limiter l'accès autorisé par des attributs de requête d'API spécifiques, notamment :
- Sous-réseaux d'adresses IP : vérifie si la demande provient d'une adresse IP spécifique.
- Régions : vérifie si la requête provient d'une région spécifique, déterminée par la géolocalisation de l'adresse IP.
- Principaux : vérifie si la demande provient d'un compte spécifique.
- Règle relative à l'appareil : vérifie si la requête provient d'un appareil qui répond à des exigences spécifiques.
Pour appliquer la validation de ces attributs en plus de la règle d'entrée déjà configurée, nous devons créer un niveau d'accès qui autorise les attributs souhaités, puis ajouter le niveau d'accès créé en tant que source dans la règle d'entrée.
Ce diagramme illustre l'accès initié par les deux principaux (
user@example.com et user2@example.com) dans trois scénarios. Il montre comment VPC Service Controls évalue les sources (niveau d'accès entrant) et les attributs d'identité en tant que condition AND, où les deux doivent correspondre.
- L'utilisateur user@example.com est autorisé à accéder à la ressource lorsqu'il tente d'y accéder à partir d'une adresse IP autorisée par le niveau d'accès, car son adresse IP et son compte utilisateur correspondent aux configurations de la règle d'entrée.
- L'utilisateur user@example.com est bloqué lorsque son adresse IP ne correspond pas à l'adresse IP autorisée, même si son compte est celui configuré dans la règle d'entrée.
- L'accès de l'utilisateur user2@example.com est bloqué, même s'il tente d'y accéder depuis une adresse IP autorisée, car son compte n'est pas autorisé par la règle d'entrée.
Créer un niveau d'accès
Pour créer un niveau d'accès qui limite l'accès par adresse IP :
- Ouvrez la page Access Context Manager dans la console Google Cloud.
- Si vous y êtes invité, sélectionnez le dossier
codelab-folder.
- Si vous y êtes invité, sélectionnez le dossier
- En haut de la page Access Context Manager, cliquez sur CRÉER UN NIVEAU D'ACCÈS.
- Dans le volet Nouveau niveau d'accès, donnez un titre au nouveau niveau d'accès. Pour cet atelier de programmation, nous l'appellerons
project_2_al. - Dans la section Conditions, cliquez sur + devant Sous-réseaux IP.
- Dans la zone Sous-réseaux IP, sélectionnez Adresse IP publique.
- Vous pouvez également choisir d'utiliser une adresse IP privée pour utiliser une adresse IP interne dans les niveaux d'accès. Cependant, pour cet atelier de programmation, nous utilisons une adresse IP publique.
- Saisissez une ou plusieurs plages IPv4 ou IPv6 sous forme de blocs CIDR.
Ajouter un niveau d'accès dans la règle d'entrée
Dans la règle d'entrée, le niveau d'accès est référencé dans le champ sources, qui est un champ obligatoire, comme indiqué dans la documentation de référence sur les règles d'entrée. Pour autoriser l'entrée aux ressources, VPC Service Controls évalue les attributs sources et identityType en tant que condition AND. La règle d'entrée utilise l'identité de l'entité principale qui déclenche manuellement le transfert de données, et non le compte de service spécifié dans la configuration du transfert de données.

Réexécutez le transfert avec les configurations limitant l'accès par adresse IP.
Pour évaluer l'efficacité des configurations appliquées, déclenchez à nouveau le transfert en utilisant les scénarios suivants :
- en utilisant l'adresse IP de la plage autorisée dans le niveau d'accès référencé par la règle d'entrée.
- utiliser une adresse IP non autorisée par les configurations ;
L'accès à partir d'une adresse IP autorisée doit fonctionner, tandis que l'accès à partir d'une adresse IP non autorisée doit échouer et entraîner une violation de VPC Service Controls.
Pour tester facilement avec une autre adresse IP, vous pouvez autoriser l'adresse IP attribuée lorsque vous utilisez la console Google Cloud, puis effectuer le test lorsque vous utilisez Cloud Shell.
Dans Cloud Shell, exécutez la commande suivante pour déclencher manuellement un transfert, en remplaçant RUN_TIME et RESOURCE_NAME :
bq mk \
--transfer_run \
--run_time='RUN_TIME' \
RESOURCE_NAME
Par exemple, l'exemple de commande suivant s'exécute immédiatement pour une configuration de transfert 12345678-90ab-cdef-ghij-klmnopqrstuv dans le projet 1234567890.
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ");
bq mk \
--transfer_run \
--run_time=$NOW \
projects/1234567890/locations/us/transferConfigs/12345678-90ab-cdef-ghij-klmnopqrstuv
Le résultat observé montre un cas de non-respect de VPC Service Controls, comme prévu, car l'adresse IP n'est pas autorisée.

Le non-respect observé concerne la méthode DataTransferService.StartManualTransferRuns.
ingressViolations: [
0: {
servicePerimeter: "accessPolicies/987654321/servicePerimeters/perimeter-2"
targetResource: "projects/[PROJECT2_NUMBER]"
targetResourcePermissions: [0: "vpcsc.permissions.unavailable"]
}]
violationReason: "RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER"
resource: {
labels: {
method: "google.cloud.bigquery.datatransfer.v1.DataTransferService.StartManualTransferRuns"
project_id: "project-2"
service: "bigquerydatatransfer.googleapis.com"
}
type: "audited_resource"
}
severity: "ERROR"
5. Lancer le transfert de données tout en protégeant le service Cloud Storage
Comme nous effectuons un transfert de Cloud Storage vers BigQuery, ajoutons Cloud Storage aux services protégés par VPC Service Controls et vérifions si le transfert reste réussi.
Dans la configuration perimeter-2, ajoutez l'API Cloud Storage aux services restreints, ainsi que l'API BigQuery Data Transfer.

Après avoir sécurisé l'API Cloud Storage, attendez le prochain transfert de données planifié ou déclenchez manuellement un transfert en suivant les étapes ci-dessous :
- Accédez à la page "BigQuery" de la console Google Cloud.
- Cliquez sur Transferts de données.
- Sélectionnez votre transfert dans la liste. Pour cet atelier de programmation, nous utilisons le transfert Codelab Transfer.
- Cliquez sur Exécuter le transfert maintenant.
- Cliquez sur OK.
Un autre transfert sera lancé. Vous devrez peut-être actualiser la page pour la voir. Cette fois, le transfert échouera en raison d'un non-respect de VPC Service Controls.

Examiner le non-respect de VPC Service Controls dans Cloud Storage
Filtrez les journaux d'audit à l'aide de vpcServiceControlsUniqueIdentifier, comme indiqué dans le récapitulatif du transfert.
La violation observée est une violation de sortie RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER avec les détails suivants :
- Le compte principal est le compte de service configuré dans le service de transfert de données (qu'il soit déclenché manuellement ou qu'il exécute le transfert de données planifié, le compte principal refusé sera le même).
- Le service concerné est Cloud Storage.
- La source de la requête est le projet dans lequel le Service de transfert de données est configuré :
project-2 - Le projet cible est celui dans lequel se trouve l'objet Cloud Storage :
project-1
principalEmail: "codelab-sa@project-2.iam.gserviceaccount.com"
egressViolations: [
0: {
servicePerimeter: "accessPolicies/987654321/servicePerimeters/perimeter-2"
source: "projects/[PROJECT2_NUMBER]"
sourceType: "Resource"
targetResource: "projects/[PROJECT1_NUMBER]"
targetResourcePermissions: [0: "storage.objects.get"]
}]
labels: {
method: "google.storage.objects.get"
project_id: "project-2"
service: "storage.googleapis.com"
}
Corriger le non-respect des règles concernant la sortie de données Cloud Storage
Pour corriger le non-respect des règles de sortie, nous devons utiliser une règle de sortie qui autorise le trafic du compte de service refusé vers le projet contenant des objets Cloud Storage.

Après avoir modifié le périmètre de service perimeter-2, répétez la procédure pour déclencher à nouveau le transfert. Aucune erreur ne s'affichera lors du transfert.

6. Copier l'ensemble de données BigQuery du projet 2 vers le projet 1
Après avoir confirmé que nous pouvons transférer des données du bucket Cloud Storage dans project-1 vers l'ensemble de données BigQuery dans project-2, copions l'ensemble de données BigQuery de project-2 vers project-1, tandis que l'API BigQuery est protégée par VPC Service Controls.
Pour créer et copier l'ensemble de données, nous allons utiliser la commande bq mk, qui utilise l'outil bq.
Créer un ensemble de données de destination dans project-1
Avant de copier l'ensemble de données, vous devez d'abord créer l'ensemble de données de destination. Pour créer l'ensemble de données de destination, nous pouvons exécuter la commande suivante, qui crée un ensemble de données nommé copied_dataset dans le projet project-1 avec us comme emplacement.
bq mk \
--dataset \
--location=us \
project-1:copied_dataset
Protéger le service BigQuery dans project-2 avec VPC Service Controls
Modifiez la configuration du périmètre perimeter-2 et ajoutez l'API BigQuery en tant que service protégé, ainsi que les services Transfert de données BigQuery et Cloud Storage.

Lancer la copie d'un ensemble de données
Pour copier l'ensemble de données, exécutez la commande bq mk suivante, qui copie l'ensemble de données codelab_bqtransfer_dataset du projet project-2 vers l'ensemble de données copied_dataset dans project-1, et remplace le contenu de l'ensemble de données, le cas échéant.
bq mk \
--transfer_config \
--project_id=project-1 \
--target_dataset=copied_dataset \
--data_source=cross_region_copy \
--display_name='Dataset from project-2 to project-1' \
--params='{
"source_dataset_id":"codelab_bqtransfer_dataset",
"source_project_id":"project-2",
"overwrite_destination_table":"true"
}'
La commande s'exécute correctement. Parallèlement, la configuration du transfert est créée pour lancer l'opération de copie de l'ensemble de données. La copie du jeu de données lui-même échouera en raison d'un non-respect de VPC Service Controls.
Pour trouver les détails du cas de non-respect de VPC Service Controls correspondant, consultez les journaux dans project-2 (projet de l'ensemble de données source) avec la requête de journal suivante. La requête de journal filtre les journaux sur le nom de service et de ressource BigQuery de l'ensemble de données en cours de copie (codelab_bqtransfer_dataset).
resource.labels.service="bigquery.googleapis.com"
protoPayload.metadata.resourceNames:"datasets/codelab_bqtransfer_dataset"
Le non-respect de VPC Service Controls observé est un problème de sortie de project-2 vers project-1.
egressViolations: [
0: {
servicePerimeter: "accessPolicies/987654321/servicePerimeters/perimeter-2"
source: "projects/[PROJECT-2-NUMBER]"
sourceType: "Resource"
targetResource: "projects/[PROJECT-1-NUMBER]"
targetResourcePermissions: [
0: "bigquery.transfers.update"
1: "bigquery.transfers.get"
2: "bigquery.jobs.create"
]
}
]
method: "bigquery.tables.getData"
service: "bigquery.googleapis.com"
Corriger toutes les infractions BigQuery et recommencer la copie de l'ensemble de données
Pour corriger le non-respect des règles de sortie, nous devons créer une règle de sortie qui autorise le compte principal refusé. Le compte principal refusé est celui qui exécute la commande mk.

Une fois la règle de sortie en place, exécutez la même commande sur le périmètre perimeter-2 pour copier l'ensemble de données. Cette fois, l'ensemble de données devrait être copié correctement, sans aucune violation de VPC Service Controls.
7. Nettoyage
Bien que l'utilisation de VPC Service Controls ne fasse pas l'objet d'une facturation distincte lorsque le service n'est pas utilisé, il est recommandé de nettoyer la configuration utilisée dans cet atelier. Vous pouvez également supprimer l'instance de VM et/ou les projets Cloud pour éviter des frais. La suppression du projet Cloud arrête la facturation de toutes les ressources utilisées dans ce projet.
- Pour supprimer le bucket Cloud Storage, procédez comme suit :
- Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.
- Cochez la case du bucket à supprimer, puis cliquez sur Supprimer.
- Dans la fenêtre qui apparaît en superposition, confirmez que vous souhaitez supprimer le bucket et son contenu.

- Pour supprimer l'ensemble de données BigQuery, procédez comme suit :
- Dans la console Google Cloud, accédez à la page BigQuery.
- Dans le volet Explorateur, développez votre projet et sélectionnez un ensemble de données.
- Développez le menu à trois points, puis cliquez sur Supprimer.
- Dans la boîte de dialogue Supprimer l'ensemble de données, saisissez
deletedans le champ, puis cliquez sur Supprimer.
- Pour supprimer le périmètre de service, procédez comme suit :
- Dans la console Google Cloud, sélectionnez Sécurité, puis VPC Service Controls au niveau où la règle d'accès est définie (dans ce cas, au niveau du dossier).
- Sur la page "VPC Service Controls", dans la ligne du tableau correspondant au périmètre que vous souhaitez supprimer, sélectionnez
Delete Icon.
- Pour supprimer le niveau d'accès, procédez comme suit :
- Dans la console Google Cloud, ouvrez la page Access Context Manager au niveau du dossier.
- Dans la grille, identifiez la ligne correspondant au niveau d'accès que vous souhaitez supprimer, sélectionnez le menu à trois points, puis Supprimer.
- Pour arrêter les projets, procédez comme suit :
- Dans la console Google Cloud, accédez à la page Paramètres IAM et administration du projet que vous souhaitez supprimer.
- Sur la page "IAM et paramètres d'administration", sélectionnez Arrêter.
- Saisissez l'ID du projet, puis sélectionnez Arrêter quand même.
8. Félicitations !
Dans cet atelier de programmation, vous avez créé un périmètre VPC Service Controls, l'avez appliqué et avez résolu les problèmes associés.
En savoir plus
Vous pouvez également explorer les scénarios suivants :
- Ajoutez
project-1dans un autre périmètre qui protège également BigQuery, le service de transfert de données BigQuery et Cloud Storage. - Transférez des données BigQuery à partir d'autres sources compatibles.
- Restreignez l'accès des utilisateurs en fonction d'autres attributs, comme la localisation ou les règles relatives aux appareils.
Licence
Ce document est publié sous une licence Creative Commons Attribution 2.0 Generic.