Dans le catalogue d'environnements d'exécution Lakehouse, les règles de périmètre VPC Service Controls pour les points de terminaison de catalogue fédéré vous permettent d'interroger des tables Apache Iceberg externes dans BigQuery tout en contribuant à empêcher l'exfiltration de données. Lorsque vos projets ou buckets Cloud StorageGoogle Cloud se trouvent dans un périmètre de service, vous pouvez configurer des règles de sortie pour Amazon S3 et Microsoft Azure Data Lake Storage (ADLS) Gen2, ou des règles d'entrée pour Cloud Storage. Ces règles autorisent la synchronisation des métadonnées et les requêtes pour les tables enregistrées dans AWS Glue Data Catalog, Databricks Unity Catalog, Snowflake Horizon Catalog et Workday Data Lake.
Si vos projets ne se trouvent pas dans un périmètre de service, les points de terminaison du catalogue fédéré fonctionnent sans aucune configuration de VPC Service Controls. Pour les connexions cross-cloud à SAP Business Data Cloud (SAP BDC), consultez Configuration de VPC Service Controls pour SAP BDC. Pour protéger les buckets auxquels vous accédez via le point de terminaison du catalogue REST Apache Iceberg en mode de distribution d'identifiants, consultez Utiliser VPC Service Controls avec la distribution d'identifiants.
Avant de commencer
- Configurez un point de terminaison de catalogue fédéré pour AWS Glue Data Catalog, Databricks Unity Catalog, Snowflake Horizon Catalog ou Workday Data Lake.
Créez un ou plusieurs périmètres de service pour vos projets, en fonction de l'emplacement de stockage de vos fichiers de table :
- Stockage cloud externe (Amazon S3 ou ADLS Gen2) : protégez votre projet de point de terminaison de catalogue fédéré avec un périmètre qui limite
biglake.googleapis.cometbigquery.googleapis.com. Pour connaître la règle de sortie requise, consultez Ajouter une règle de sortie pour le stockage cloud externe. - Cloud Storage : protégez votre projet de bucket Cloud Storage avec un périmètre qui limite
storage.googleapis.com. Le projet de bucket et le projet de point de terminaison de catalogue fédéré peuvent partager un même périmètre ou résider dans des périmètres distincts. Pour connaître la règle d'entrée requise, consultez Ajouter une règle d'entrée pour les buckets Cloud Storage dans un périmètre de service.
- Stockage cloud externe (Amazon S3 ou ADLS Gen2) : protégez votre projet de point de terminaison de catalogue fédéré avec un périmètre qui limite
Si des utilisateurs ou des comptes de service situés en dehors du périmètre interrogent le point de terminaison du catalogue fédéré, ajoutez une règle d'entrée qui les autorise à accéder au périmètre du projet du point de terminaison du catalogue.
Rôles requis
Pour obtenir les autorisations nécessaires pour configurer des périmètres de service, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre organisation :
-
Configurer des périmètres de service et des règles d'entrée ou de sortie : Éditeur Access Context Manager (
roles/accesscontextmanager.policyEditor)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Cas d'utilisation et règles de périmètre requises
Les règles de périmètre que vous configurez dépendent de l'emplacement de vos fichiers de table et de l'emplacement d'exécution des appelants de requête :
| Cas d'utilisation | Règle de périmètre requise | Étapes de configuration |
|---|---|---|
Interroger des tables cross-cloud dans Amazon S3 ou ADLS Gen2 : interrogez des tables Apache Iceberg dans des buckets s3:// ou des conteneurs abfss:// via un point de terminaison de catalogue fédéré dans un projet BigQuery protégé, tout en bloquant les sorties externes non autorisées. |
Ajoutez une règle de sortie au périmètre du projet de point de terminaison du catalogue qui permet au compte de service blirc-... du point de terminaison du catalogue et à vos comptes principaux de requête de lire les buckets ou conteneurs externes approuvés. |
Recherchez le compte de service du point de terminaison du catalogue, puis ajoutez une règle de sortie pour Cloud Storage externe. |
Accéder aux tables de catalogues externes dans des buckets Cloud Storage protégés : interrogez les tables Databricks Unity Catalog ou Snowflake Horizon Catalog stockées dans un bucket gs:// à l'intérieur d'un périmètre qui limite storage.googleapis.com (même dans le même projet et le même périmètre que le point de terminaison du catalogue fédéré). |
Ajoutez une règle d'entrée au périmètre du projet du bucket Cloud Storage qui autorise le compte de service Google Cloud du catalogue distant à accéder à storage.googleapis.com. |
Ajoutez une règle d'entrée pour les buckets Cloud Storage dans un périmètre de service. |
| Autoriser les requêtes provenant d'appelants situés en dehors du périmètre du point de terminaison du catalogue : exécutez des jobs BigQuery dans le projet du point de terminaison du catalogue à partir de comptes d'analystes, d'outils d'informatique décisionnelle ou de comptes de service de charge de travail situés en dehors du périmètre. | Ajoutez une règle d'entrée au périmètre du projet de point de terminaison du catalogue qui autorise les appelants externes à accéder à bigquery.googleapis.com et biglake.googleapis.com, en plus de la règle de stockage pour l'emplacement de votre table. |
Configurez l'entrée de l'appelant à l'aide de la documentation de référence sur les règles d'entrée, puis suivez la procédure de stockage pour l'emplacement de votre table. |
Comment VPC Service Controls évalue le trafic des points de terminaison du catalogue fédéré
Un point de terminaison de catalogue fédéré effectue deux opérations distinctes qui lisent à partir de votre stockage sous-jacent : la synchronisation des métadonnées et les requêtes BigQuery. La façon dont VPC Service Controls évalue ces opérations dépend de l'emplacement de stockage de vos fichiers de table :
Stockage cloud externe (Amazon S3 ou Azure Data Lake Storage Gen2) : VPC Service Controls évalue la sortie du périmètre de service du projet de point de terminaison du catalogue par rapport à l'identité de l'appelant surGoogle Cloud et au bucket ou conteneur externe cible :
Opération Identité évaluée Ressource évaluée Synchronisation des métadonnées Le compte de service Lakehouse provisionné automatiquement du point de terminaison du catalogue ( blirc-PROJECT_NUMBER-ID@gcp-sa-biglakerestcatalog.iam.gserviceaccount.com)Le bucket ou conteneur externe qui contient les métadonnées Apache Iceberg de la table Requête L'utilisateur ou le compte de service qui exécute le job BigQuery Les buckets ou conteneurs externes qui contiennent les métadonnées et les fichiers de données de la table Pour les tables stockées dans Amazon S3 ou ADLS Gen2, la règle de sortie de votre périmètre doit inclure tous les éléments suivants :
- Identités : le compte de service du point de terminaison du catalogue et vos comptes principaux de requête.
- Ressources externes : chaque bucket ou conteneur utilisé par vos tables pour les métadonnées et les fichiers de données.
- Opérations :
bigquery.googleapis.com(avec l'autorisationexternalResource.read) etbiglake.googleapis.com(avec toutes les méthodes,'*').
Cloud Storage (emplacements externes du catalogue Databricks Unity Catalog ou Snowflake Horizon Catalog sur Google Cloud) : lors de la synchronisation des métadonnées et des requêtes BigQuery, BigQuery et Lakehouse lisent les données depuis Cloud Storage à l'aide des identifiants à champ d'application réduit fournis par le catalogue distant plutôt que du compte de service
blirc-...du point de terminaison du catalogue. Lorsque le projet de bucket Cloud Storage se trouve dans un périmètre de service qui limitestorage.googleapis.com,storage.googleapis.comévalue le compte de service Google Cloud du catalogue distant en tant qu'identité externe tentant d'entrer dans le périmètre. Cette évaluation s'applique même lorsque le bucket se trouve dans le même projet et le même périmètre de service que le point de terminaison du catalogue fédéré. Vous devez ajouter une règle d'entrée au périmètre de service du projet du bucket qui autorise le compte de serviceGoogle Cloud du catalogue distant à accéder àstorage.googleapis.com.
VPC Service Controls n'évalue que les lectures de stockage effectuées par BigQuery et Lakehouse (biglake.googleapis.com). Il n'évalue pas les appels que Lakehouse effectue vers le point de terminaison de l'API du catalogue distant (comme la liste des espaces de noms et des tables) et ne gère pas les moteurs de requête externes qui lisent directement votre stockage.
Formats de ressources externes
Spécifiez les ressources externes dans les règles de sortie en tant qu'URI exact de bucket ou de conteneur.
Les chemins d'accès aux objets et les caractères génériques ne sont pas acceptés. Les noms de buckets, de conteneurs et de comptes de stockage doivent être en minuscules. Les règles contenant des caractères majuscules dans ces noms sont rejetées lorsque vous les enregistrez. Les URI Azure Data Lake Storage Gen2 (abfss://) et Azure Blob Storage (azure://) ne sont pas interchangeables dans les règles de sortie VPC Service Controls. Pour les points de terminaison de catalogue fédéré, vous devez spécifier le format abfss://.
Le tableau suivant présente les formats d'URI de ressources externes compatibles avec les points de terminaison de catalogue fédéré :
| Service de stockage | Format | Exemple |
|---|---|---|
| Amazon S3 | s3://BUCKET_NAME |
s3://my-iceberg-warehouse |
| Azure Data Lake Storage Gen2 | abfss://CONTAINER@STORAGE_ACCOUNT.dfs.core.windows.net |
abfss://unity-catalog-storage@mystorageaccount.dfs.core.windows.net |
Rechercher le compte de service du point de terminaison du catalogue
Lakehouse provisionne un compte de service dédié pour chaque point de terminaison de catalogue fédéré lorsque vous créez le point de terminaison de catalogue. Pour les tables dans Cloud Storage, passez à Ajouter une règle d'entrée pour les buckets Cloud Storage dans un périmètre de service. Si vos tables sont stockées dans Amazon S3 ou ADLS Gen2, récupérez l'adresse e-mail de ce compte de service pour votre règle de sortie :
gcloud biglake iceberg catalogs describe CATALOG_ID \
--project=PROJECT_ID \
--format='value(biglake-service-account)'
Remplacez les éléments suivants :
CATALOG_ID: ID de votre point de terminaison de catalogue fédéré.PROJECT_ID: ID du projet Google Cloudcontenant le point de terminaison du catalogue fédéré.
La commande renvoie une adresse e-mail au format suivant :
blirc-PROJECT_NUMBER-ID@gcp-sa-biglakerestcatalog.iam.gserviceaccount.com
Ajouter une règle de sortie pour le stockage cloud externe
Si les tables auxquelles vous accédez via votre point de terminaison de catalogue fédéré sont stockées dans Amazon S3 ou ADLS Gen2, ajoutez une règle de sortie au périmètre de service qui protège votre projet de point de terminaison de catalogue.
Console
Dans la console Google Cloud , accédez à la page VPC Service Controls.
Sélectionnez votre organisation et votre règle d'accès, puis cliquez sur le nom du périmètre de service qui contient votre projet de point de terminaison de catalogue.
Cliquez sur Modifier, puis dans la section Règle de sortie, cliquez sur Ajouter une règle de sortie.
Dans la section From, sous Identités, sélectionnez Sélectionner des identités et des groupes, cliquez sur Ajouter des identités, puis ajoutez le compte de service du point de terminaison du catalogue et les utilisateurs ou comptes de service qui exécutent des requêtes.
Dans la section À :
- Sélectionnez Ressources externes, cliquez sur Ajouter des ressources, saisissez chaque bucket
s3://ou conteneurabfss://utilisé par vos tables, puis cliquez sur Ajouter des ressources externes. - Sous Opérations ou rôles IAM, configurez les services suivants dans le tableau Opérations d'API :
- API BigQuery (
bigquery.googleapis.com) : pour limiter l'entrée par défaut de toutes les méthodes (*) à un accès en lecture seule, ouvrez le menu d'actions pourbigquery.googleapis.comet cliquez sur Modifier, sélectionnez Sélectionner des méthodes, sélectionnez l'autorisationexternalResource.read, puis cliquez sur Ajouter les méthodes sélectionnées. - API BigLake (
biglake.googleapis.com) : cliquez sur Ajouter des opérations, sélectionnez API BigLake (biglake.googleapis.com), sélectionnez Toutes les méthodes, puis cliquez sur Ajouter toutes les méthodes.
- API BigQuery (
- Sélectionnez Ressources externes, cliquez sur Ajouter des ressources, saisissez chaque bucket
Cliquez sur Enregistrer.
gcloud CLI
Créez un fichier nommé
egress.yamlqui spécifie le compte de service du point de terminaison du catalogue, les comptes principaux de requête et chaque bucket ou conteneur externe utilisé par vos tables. Pour obtenir le schéma complet, consultez la documentation de référence sur les règles de sortie.- egressFrom: identities: - serviceAccount:CATALOG_ENDPOINT_SERVICE_ACCOUNT - user:QUERY_USER_EMAIL egressTo: externalResources: - s3://S3_BUCKET_NAME - abfss://ADLS_CONTAINER@STORAGE_ACCOUNT.dfs.core.windows.net operations: - serviceName: bigquery.googleapis.com methodSelectors: - permission: externalResource.read - serviceName: biglake.googleapis.com methodSelectors: - method: '*'Remplacez les éléments suivants :
CATALOG_ENDPOINT_SERVICE_ACCOUNT: adresse e-mail du compte de service du point de terminaison du catalogue que vous avez récupérée précédemment.QUERY_USER_EMAIL: adresse e-mail d'un compte utilisateur ou de service qui exécute des requêtes via le point de terminaison du catalogue fédéré. Pour un compte de service, utilisez le préfixeserviceAccount:au lieu deuser:. Vous pouvez également remplaceridentitiesparidentityType: ANY_IDENTITYpour autoriser n'importe quel compte principal dans le périmètre.S3_BUCKET_NAME,ADLS_CONTAINERetSTORAGE_ACCOUNT: emplacements de stockage externes qui contiennent les métadonnées et les fichiers de données de votre table. N'incluez que les entrées qui s'appliquent à votre fournisseur de stockage.
Recherchez l'ID numérique de la règle d'accès de votre organisation :
gcloud access-context-manager policies list \ --organization=ORGANIZATION_ID \ --format='value(name)'Remplacez
ORGANIZATION_IDpar l'ID numérique de votre organisation.Appliquez la règle de sortie à votre périmètre de service :
gcloud access-context-manager perimeters update PERIMETER_NAME \ --policy=POLICY_ID \ --set-egress-policies=egress.yamlRemplacez les éléments suivants :
PERIMETER_NAME: nom de votre périmètre de service.POLICY_ID: ID numérique de votre règle d'accès.
Pour tester la règle avant de l'appliquer, appliquez-la à une configuration de simulation à l'aide de
gcloud access-context-manager perimeters dry-run update, puis appliquez-la après validation à l'aide degcloud access-context-manager perimeters dry-run enforce.Vérifiez que la règle est active :
gcloud access-context-manager perimeters describe PERIMETER_NAME \ --policy=POLICY_ID \ --format='yaml(status.egressPolicies)'
Ajouter une règle d'entrée pour les buckets Cloud Storage dans un périmètre de service
Si les tables d'un catalogue distant (tel que Databricks Unity Catalog ou Snowflake Horizon Catalog) sont stockées dans un bucket Cloud Storage protégé par un périmètre qui limite storage.googleapis.com, ajoutez une règle d'entrée au périmètre de service du projet du bucket. Étant donné que BigQuery et Lakehouse s'authentifient auprès de Cloud Storage à l'aide du compte de service Google Cloud du catalogue distant (et non du compte de service blirc-...), cette règle est requise même lorsque le bucket se trouve dans le même projet et le même périmètre que le point de terminaison du catalogue fédéré.
Console
Dans la console Google Cloud , accédez à la page VPC Service Controls.
Sélectionnez votre organisation et votre règle d'accès, puis cliquez sur le nom du périmètre de service qui protège le projet contenant votre bucket Cloud Storage.
Cliquez sur Modifier, puis dans la section Règle d'entrée, cliquez sur Ajouter une règle d'entrée.
Dans la section De :
- Sous Identités, sélectionnez Sélectionner des identités et des groupes, cliquez sur Ajouter des identités, puis ajoutez le compte de service Google Cloud provisionné par le catalogue distant pour votre bucket Cloud Storage.
- Sous Sources, sélectionnez Toutes les sources (ou sélectionnez Sélectionner des sources pour spécifier un niveau d'accès).
Dans la section À :
- Sous Ressources, cliquez sur Sélectionner des ressources. Dans l'onglet Projets, cliquez sur Ajouter des projets, sélectionnez le projet contenant votre bucket Cloud Storage, puis cliquez sur Ajouter les projets sélectionnés.
- Sous Opérations ou rôles IAM, sélectionnez Sélectionner des opérations, cliquez sur Ajouter des opérations, sélectionnez API Cloud Storage (
storage.googleapis.com), sélectionnez Toutes les méthodes, puis cliquez sur Ajouter toutes les méthodes. Vous pouvez également sélectionner Sélectionner des méthodes pour choisir des méthodes de service compatibles spécifiques (telles quegoogle.storage.objects.get,google.storage.objects.listetgoogle.storage.buckets.get), puis cliquer sur Ajouter les méthodes sélectionnées.
Cliquez sur Enregistrer.
gcloud CLI
Créez un fichier nommé
ingress.yamlqui permet au compte de serviceGoogle Cloud du catalogue distant d'accéder àstorage.googleapis.comdans le projet du bucket. Pour obtenir le schéma complet, consultez la documentation de référence sur les règles d'entrée.- ingressFrom: identities: - serviceAccount:REMOTE_CATALOG_GCS_SERVICE_ACCOUNT sources: - accessLevel: '*' ingressTo: operations: - serviceName: storage.googleapis.com methodSelectors: - method: '*' resources: - projects/BUCKET_PROJECT_NUMBERRemplacez les éléments suivants :
REMOTE_CATALOG_GCS_SERVICE_ACCOUNT: adresse e-mail du compte de serviceGoogle Cloud provisionné par le catalogue distant pour accéder à votre bucket Cloud Storage (par exemple, à partir deDESCRIBE STORAGE CREDENTIALdans Databricks Unity Catalog ou deDESC EXTERNAL VOLUMEdans Snowflake Horizon Catalog).BUCKET_PROJECT_NUMBER: numéro de projet numérique du projet contenant le bucket Cloud Storage.
Recherchez l'ID numérique de la règle d'accès de votre organisation :
gcloud access-context-manager policies list \ --organization=ORGANIZATION_ID \ --format='value(name)'Remplacez
ORGANIZATION_IDpar l'ID numérique de votre organisation.Appliquez la règle d'entrée au périmètre de service qui protège le projet du bucket :
gcloud access-context-manager perimeters update BUCKET_PERIMETER_NAME \ --policy=POLICY_ID \ --set-ingress-policies=ingress.yamlRemplacez les éléments suivants :
BUCKET_PERIMETER_NAME: nom du périmètre de service qui protège le projet du bucket.POLICY_ID: ID numérique de votre règle d'accès.
Pour tester la règle avant de l'appliquer, appliquez-la à une configuration de simulation à l'aide de
gcloud access-context-manager perimeters dry-run update, puis appliquez-la après validation à l'aide degcloud access-context-manager perimeters dry-run enforce.Vérifiez que la règle est active :
gcloud access-context-manager perimeters describe BUCKET_PERIMETER_NAME \ --policy=POLICY_ID \ --format='yaml(status.ingressPolicies)'
Vérifier la configuration
La propagation des mises à jour des règles de périmètre de service peut prendre jusqu'à 30 minutes. Une fois la règle appliquée, vérifiez que la synchronisation des métadonnées et les requêtes BigQuery s'effectuent sans refus de VPC Service Controls :
Attendez la fin du prochain cycle de synchronisation des métadonnées planifié, puis vérifiez les journaux d'audit des refus de règles dans Cloud Audit Logs pour confirmer qu'aucun non-respect de VPC Service Controls ne se produit. La synchronisation s'exécute automatiquement selon sa programmation d'actualisation et ne peut pas être déclenchée manuellement.
Dans l'explorateur de journaux, sélectionnez le projet protégé : le projet de point de terminaison de votre catalogue pour le stockage cloud externe ou le projet de bucket Cloud Storage pour les tables Cloud Storage. Pour en savoir plus, consultez Récupérer les erreurs liées à VPC Service Controls à partir des journaux d'audit. Exécutez la requête suivante :
log_id("cloudaudit.googleapis.com/policy") protoPayload.metadata.@type:"type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"Si des entrées de non-conformité apparaissent après la propagation de votre règle, inspectez les champs
egressViolations.targetResource,ingressViolations.targetResourceetauthenticationInfo.principalEmailde l'entrée de journal pour vérifier qu'ils correspondent aux ressources et aux identités de votre règle. Si la synchronisation des nouvelles tables échoue et qu'aucune entréeVpcServiceControlAuditMetadatan'apparaît, vérifiez les autorisations et les identifiants de votre catalogue distant. Consultez Résoudre les problèmes d'accès aux données cross-cloud.Exécutez une requête de test sur une table dans BigQuery en utilisant la convention d'attribution de noms P.C.N.T (Project.Catalog.Namespace.Table) en quatre parties :
SELECT COUNT(*) FROM `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME`;Remplacez les éléments suivants :
PROJECT_ID: ID du projet Google Cloudcontenant le point de terminaison du catalogue fédéré.CATALOG_ID: ID de votre point de terminaison de catalogue fédéré.NAMESPACE: espace de noms dans le point de terminaison du catalogue fédéré.TABLE_NAME: nom d'une table dans l'espace de noms.
Si une requête est bloquée par VPC Service Controls, le message d'erreur inclut une valeur
vpcServiceControlsUniqueIdentifier. Filtrez les journaux d'audit des refus de règles dans l'explorateur de journaux en faisant correspondreprotoPayload.metadata.vpcServiceControlsUniqueIdà cet identifiant :log_id("cloudaudit.googleapis.com/policy") protoPayload.metadata.@type:"type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata" protoPayload.metadata.vpcServiceControlsUniqueId="UNIQUE_IDENTIFIER"Remplacez
UNIQUE_IDENTIFIERpar la valeurvpcServiceControlsUniqueIdentifierdu message d'erreur.
Étapes suivantes
- Interroger des données distantes
- Présentation de la distribution d'identifiants
- Règles d'entrée et de sortie de VPC Service Controls
- Résoudre les problèmes d'accès aux données cross-cloud