Configurer des règles VPC Service Controls pour le partage BigQuery

Les règles Ingress et de sortie permettent aux éditeurs et aux abonnés du partage BigQuery (anciennement Analytics Hub) d'accéder aux données de projets protégés par des périmètres VPC Service Controls. Vous configurez ces règles entre un projet appelant (le projet réseau ou client Google Cloud qui lance une requête, telle qu'une requête SQL ou une commande Google Cloud CLI) et les projets qui hébergent vos échanges de données, vos fiches et vos ensembles de données.

Avant de configurer ces règles, vous devez vous familiariser avec les périmètres VPC Service Controls, les ensembles de données partagés, les échanges de données, les listes et les ensembles de données associés.

Limites

BigQuery Sharing n'est pas compatible avec les règles basées sur les méthodes. Vous devez spécifier method: '*' pour autoriser toutes les méthodes dans vos règles d'entrée et de sortie :

- ingressTo:
    operations:
      - methodSelectors:
          - method: '*'
        serviceName: analyticshub.googleapis.com
    resources:
      - projects/PROJECT_NUMBER

Si les périmètres de service protègent également les ressources BigQuery, vous devez autoriser les règles d'entrée et de sortie pour le service BigQuery. Il n'est pas nécessaire d'autoriser les règles d'entrée et de sortie lorsque vous créez un échange de données. Les règles d'entrée et de sortie pour BigQuery sont semblables à celles du partage BigQuery :

- ingressTo:
    operations:
      - methodSelectors:
          - method: '*'
        serviceName: bigquery.googleapis.com
    resources:
      - projects/PROJECT_NUMBER

Remplacez PROJECT_NUMBER par le numéro du projet cible protégé par le périmètre de service.

Créer un échange de données

Dans le schéma suivant, le projet appelant et le projet contenant l'échange de données se trouvent dans des périmètres de service différents :

Règles VPC Service Controls lors de la création d'un échange de données

Figure 1 : Règles VPC Service Controls permettant de créer un échange de données

La figure 1 montre les composants suivants :

  • Appelant : un administrateur de partage BigQuery.
  • Projet R : projet appelant.
  • Projet E : projet qui héberge l'échange de données et les listes.

En tant qu'administrateur du partage BigQuery, lorsque vous créez un échange de données dans un projet différent du projet appelant, vous devez ajouter les règles d'entrée et de sortie suivantes :

Projet Règle
Projet R Règle de sortie pour le projet E
Projet E (échange de données) Règle d'entrée pour le projet R

Création d'une fiche

Dans le schéma suivant, les projets contenant l'échange de données et l'ensemble de données partagé se trouvent dans des périmètres de service différents :

Règles VPC Service Controls lors de la création d'une fiche

Figure 2. Règles VPC Service Controls permettant de créer une liste

La figure 2 montre les composants suivants :

  • Appelant : administrateur ou éditeur de partage BigQuery.
  • Projet R : projet appelant.
  • Projet E : projet qui héberge l'échange de données et les listes.
  • Projet S : projet qui héberge l'ensemble de données partagé.

En tant qu'éditeur de partage BigQuery, lorsque vous créez une fiche dans un échange de données qui se trouve dans un projet différent de celui de l'ensemble de données partagé, vous devez ajouter les règles d'entrée et de sortie suivantes :

Projet Règle
Projet R

Règle de sortie pour le projet E

Règle de sortie pour le projet S

Projet E (échange de données)

Règle de sortie pour le projet S

Règle d'entrée pour le projet R

Projet S (ensemble de données partagé)

Règle de sortie pour le projet E

Règle d'entrée pour le projet R

S'abonner à une fiche

Dans le schéma suivant, les projets contenant la fiche et l'ensemble de données associé pour cette fiche se trouvent dans des périmètres de service différents :

Règles VPC Service Controls lors de l'abonnement à une fiche

Figure 3. Règles de VPC Service Controls pour s'abonner à une liste

La figure 3 montre les composants suivants :

  • Appelant : un abonné au partage BigQuery.
  • Projet R : projet appelant.
  • Projet E : projet qui héberge l'échange de données et les listes.
  • Projet L : projet qui héberge l'ensemble de données associé.

En tant qu'abonné au partage BigQuery, lorsque vous vous abonnez à une fiche dans un échange de données se trouvant dans un projet différent de votre projet, vous devez ajouter les règles d'entrée et de sortie suivantes :

Projet Règle
Projet R

Règle de sortie pour le projet E

Règle de sortie pour le projet L

Projet E (liste)

Règle de sortie pour le projet L

Règle d'entrée pour le projet R

Projet L (ensemble de données associé)

Règle de sortie pour le projet E

Règle d'entrée pour le projet R

Mettre à jour une fiche

Lorsque vous mettez à jour une fiche (par exemple, pour modifier sa règle d'exportation restreinte), le partage BigQuery utilise un nœud de calcul en arrière-plan pour propager ces modifications aux ensembles de données associés. Si un périmètre VPC Service Controls avec des restrictions basées sur l'adresse IP protège votre projet Google Cloud , il peut bloquer le nœud de calcul en arrière-plan provenant de l'infrastructure Google et empêcher la synchronisation de l'ensemble de données associé.

Pour permettre au nœud de calcul en arrière-plan de mettre à jour l'ensemble de données associé, configurez vos règles d'entrée ou de sortie de sorte que l'utilisateur ou le compte de service appelant qui exécute l'appel d'API contourne les restrictions basées sur l'adresse IP.

Pour modifier la règle d'entrée sur le périmètre du projet abonné, ajoutez une règle d'entrée qui permet au compte principal appelant d'accéder au service bigquery.googleapis.com à partir de n'importe quelle adresse IP source (*) :

- ingressFrom:
    sources:
      - accessLevel: "*"
    identities:
      - "user:CALLING_USER_EMAIL"
      - "serviceAccount:AUTOMATION_SA_EMAIL"
  ingressTo:
    resources:
      - "projects/SUBSCRIBER_PROJECT_NUMBER"
    operations:
      - serviceName: "bigquery.googleapis.com"
        methodSelectors:
          - method: "*"

Vous pouvez également modifier la règle de sortie sur le périmètre de l'éditeur en ajoutant l'identité appelante à la liste identities dans la règle de sortie du projet d'abonné :

- egressFrom:
    identities:
      - "user:CALLING_USER_EMAIL"
      - "serviceAccount:AUTOMATION_SA_EMAIL"
  egressTo:
    resources:
      - "projects/SUBSCRIBER_PROJECT_NUMBER"
    operations:
      - serviceName: "bigquery.googleapis.com"
        methodSelectors:
          - method: "*"

Remplacez les éléments suivants :

  • CALLING_USER_EMAIL : adresse e-mail de l'utilisateur qui exécute l'appel d'API pour mettre à jour la fiche. Incluez cette identité si un utilisateur humain effectue la mise à jour.
  • AUTOMATION_SA_EMAIL : adresse e-mail du compte de service qui exécute l'appel d'API pour mettre à jour la fiche. Incluez cette identité si un processus ou un script automatisé effectue la mise à jour.
  • SUBSCRIBER_PROJECT_NUMBER : numéro du projet abonné contenant l'ensemble de données associé.

Interroger les tables d'un ensemble de données associé

Dans le schéma suivant, le projet appelant et le projet contenant l'ensemble de données associé se trouvent dans des périmètres de service différents :

Règles VPC Service Controls lors de l'interrogation d'une table de l'ensemble de données associé

Figure 4. Règles de VPC Service Controls permettant d'interroger un ensemble de données associé

La figure 4 montre les composants suivants :

  • Appelant : abonné à BigQuery Sharing ou tout utilisateur de tâche BigQuery de l'ensemble de données associé.
  • Projet R : projet appelant.
  • Projet L : projet qui héberge l'ensemble de données associé.
  • Projet V : projet qui héberge l'ensemble de données partagé contenant la table.

En tant qu'abonné au partage BigQuery, lorsque vous interrogez une table dans un ensemble de données associé, vous devez ajouter les règles d'entrée et de sortie suivantes :

Projet Règle
Projet R Règle de sortie pour le projet L
Projet L (ensemble de données associé) Règle d'entrée pour le projet R

Interroger les vues dans un ensemble de données associé

Cette section décrit les règles VPC Service Controls requises pour interroger une vue dans un ensemble de données associé. Les règles varient selon que la vue et ses tables de base sous-jacentes se trouvent dans le même projet ou dans des projets différents.

La vue et les tables de base se trouvent dans des projets différents.

Dans le schéma suivant, les projets contenant l'ensemble de données associé et les tables de base associées à la vue se trouvent dans des périmètres de service différents. La vue (Projet S) et la table de base associée à la vue (Projet V) se trouvent dans différents projets :

La vue et les tables de base se trouvent dans des projets différents.

Figure 5. Règles VPC Service Controls permettant d'interroger une vue lorsque la vue et les tables de base se trouvent dans des projets différents.

La figure 5 montre les composants suivants :

  • Appelant : abonné au partage BigQuery ou tout utilisateur de tâche BigQuery de l'ensemble de données associé.
  • Projet R : projet appelant.
  • Projet L : projet qui héberge l'ensemble de données associé.
  • Projet S : projet qui héberge l'ensemble de données partagé.
  • Projet V : projet qui héberge l'ensemble de données contenant les tables de base associées à la vue.

En tant qu'abonné au partage BigQuery, lorsque vous interrogez une vue dans un ensemble de données associé, vous devez ajouter les règles d'entrée et de sortie suivantes :

Projet Règle
Projet R

Règle de sortie pour le projet L

Règle de sortie pour le projet V

Projet L (ensemble de données associé)

Règle d'entrée pour le projet R

Règle de sortie pour le projet V

Projet V

Règle de sortie pour le projet L

Règle d'entrée pour le projet R

La vue et les tables de base se trouvent dans le même projet

Dans la figure suivante, la vue (Projet V) et la table de base associée à cette vue (Projet V) se trouvent dans le même projet :

La vue et les tables de base se trouvent dans le même projet.

Figure 6. Règles VPC Service Controls permettant d'interroger une vue lorsque la vue et les tables de base se trouvent dans le même projet.

La figure 6 montre les composants suivants :

  • Appelant : abonné à BigQuery Sharing ou tout utilisateur de job BigQuery de l'ensemble de données associé.
  • Projet R : projet appelant.
  • Projet L : projet qui héberge l'ensemble de données associé.
  • Projet V : projet qui héberge la vue et les tables de base associées à cette vue.

En tant qu'abonné au partage BigQuery, lorsque vous interrogez une vue dans un ensemble de données associé, vous devez ajouter les règles d'entrée et de sortie suivantes :

Projet Règle
Projet R Règle de sortie pour le projet L
Projet L (ensemble de données associé) Règle d'entrée pour le projet R

Interroger les vues autorisées dans un ensemble de données associé

Dans le diagramme suivant, la vue autorisée et la table de base associée à la vue autorisée (projet V) se trouvent dans le même projet :

Vue autorisée et tables de base dans le même projet.

Figure 7. Règles VPC Service Controls permettant d'interroger une vue autorisée dans un ensemble de données associé

La figure 7 montre les composants suivants :

  • Appelant : abonné à BigQuery Sharing ou tout utilisateur de job BigQuery de l'ensemble de données associé.
  • Projet R : projet appelant.
  • Projet L : projet qui héberge l'ensemble de données associé.
  • Projet V : projet qui héberge la vue autorisée et les tables de base associées à la vue.

En tant qu'abonné au partage BigQuery, lorsque vous interrogez une vue autorisée dans un ensemble de données associé, vous devez ajouter les règles d'entrée et de sortie suivantes :

Projet Règle
Projet R Règle de sortie pour le projet L
Projet L (ensemble de données associé) Règle d'entrée pour le projet R

Étapes suivantes