Condivisione delle regole dei Controlli di servizio VPC

Le regole in entrata e in uscita consentono ai publisher e ai sottoscrittori in BigQuery sharing (precedentemente Analytics Hub) di accedere ai dati tra progetti protetti dai perimetri dei Controlli di servizio VPC. Prima di configurare queste regole, devi avere familiarità con i perimetri dei Controlli di servizio VPC, i set di dati condivisi, gli scambi di dati, gli elenchi e i set di dati collegati.

Un progetto chiamante è il progetto di rete o client Google Cloud che avvia la richiesta, ad esempio una query SQL o un comando Google Cloud CLI.

Crea un data exchange

Nel seguente diagramma, i progetti che contengono lo scambio di dati e il set di dati condiviso si trovano in perimetri di servizio diversi:

Regola dei Controlli di servizio VPC durante la creazione di uno scambio di dati.

Figura 1. Regole dei Controlli di servizio VPC per la creazione di uno scambio di dati.

Nella figura 1 sono etichettati i seguenti componenti:

  • Chiamante: un amministratore di BigQuery sharing.
  • Progetto R: il progetto chiamante.
  • Progetto E: ospita lo scambio di dati e le schede.

In qualità di amministratore di BigQuery sharing, quando crei uno scambio di dati in un progetto diverso da quello chiamante, devi aggiungere le seguenti regole in entrata e in uscita:

Progetto Rule (Regola)
Progetto R Regola in uscita per il progetto E
Progetto E (Data Exchange) Regola in entrata per il progetto R

Crea una scheda

Nel seguente diagramma, i progetti che contengono lo scambio di dati e il set di dati condiviso si trovano in perimetri di servizio diversi:

Regola dei Controlli di servizio VPC durante la creazione di una scheda.

Figura 2. Regole dei Controlli di servizio VPC per la creazione di una scheda.

Nella figura 2 sono etichettati i seguenti componenti:

  • Chiamante: un amministratore o un publisher di BigQuery sharing.
  • Progetto R: il progetto chiamante.
  • Progetto E: ospita lo scambio di dati e le schede.
  • Progetto S: ospita il set di dati condiviso.

Quando crei una scheda in un data exchange che si trova in un progetto diverso dal set di dati condiviso, devi aggiungere le seguenti regole in entrata e in uscita per consentire ai publisher di BigQuery sharing di creare una scheda:

Progetto Rule (Regola)
Progetto R

Regola in uscita per il progetto E

Regola in uscita per il progetto S

Progetto E (Data Exchange)

Regola in uscita per il progetto S

Regola in entrata per il progetto R

Progetto S (set di dati condiviso)

Regola in uscita per il progetto E

Regola in entrata per il progetto R

Iscriviti a una scheda

Nel seguente diagramma, i progetti che contengono la scheda e il set di dati collegato per la scheda si trovano in perimetri di servizio diversi:

Regola dei Controlli di servizio VPC quando ti iscrivi a una scheda.

Figura 3. Regole dei Controlli di servizio VPC per la sottoscrizione a una scheda.

Nella figura 3 sono etichettati i seguenti componenti:

  • Chiamante: un utente iscritto a BigQuery sharing.
  • Progetto R: il progetto chiamante.
  • Progetto E: ospita lo scambio di dati e le schede.
  • Progetto L: ospita il set di dati collegato.

In qualità di sottoscrittore di BigQuery sharing, quando ti iscrivi a una scheda in uno scambio di dati che si trova in un progetto diverso dal tuo, devi aggiungere le seguenti regole in entrata e in uscita:

Progetto Rule (Regola)
Progetto R

Regola in uscita per il progetto E

Regola in uscita per il progetto L

Progetto E (scheda)

Regola in uscita per il progetto L

Regola in entrata per il progetto R

Progetto L (set di dati collegato)

Regola in uscita per il progetto E

Regola in entrata per il progetto R

Aggiorna una scheda

Quando aggiorni una scheda, ad esempio per modificare la policy di esportazione limitata, la condivisione di BigQuery utilizza un worker in background per propagare queste modifiche ai set di dati collegati associati. Se il tuo progetto Google Cloud è protetto da un perimetro dei Controlli di servizio VPC con limitazioni basate su IP, il worker in background proveniente dall'infrastruttura di Google potrebbe essere bloccato, impedendo la sincronizzazione corretta del set di dati collegato.

Per consentire al worker in background di aggiornare il set di dati collegato, devi configurare esplicitamente le regole in entrata o in uscita per consentire all'utente o al account di servizio principale che esegue la chiamata API di bypassare le limitazioni basate su IP.

Per modificare la policy in entrata sul perimetro del progetto del sottoscrittore, aggiungi una regola in entrata che consenta all'entità chiamante di accedere al servizio bigquery.googleapis.com da qualsiasi indirizzo IP di origine (*):

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: "*"

In alternativa, per modificare la policy in uscita sul perimetro del publisher, verifica che l'identità chiamante sia aggiunta esplicitamente nell'elenco identities nella regola in uscita indirizzata al progetto del sottoscrittore:

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

Sostituisci quanto segue:

  • CALLING_USER_EMAIL: l'indirizzo email dell'utente che esegue la chiamata API per aggiornare la scheda. Includi questa identità se l'aggiornamento viene eseguito da un utente umano.
  • AUTOMATION_SA_EMAIL: l'indirizzo email del service account che esegue la chiamata API per aggiornare la scheda. Includi questa identità se l'aggiornamento viene eseguito da un processo o uno script automatizzato.
  • SUBSCRIBER_PROJECT_NUMBER: il numero del progetto sottoscrittore che contiene il set di dati collegato.

Esegui query sulle tabelle in un set di dati collegato

Nel seguente diagramma, il progetto chiamante e il progetto che contiene il set di dati collegato si trovano in perimetri di servizio diversi:

Regola dei Controlli di servizio VPC quando esegui una query su una tabella nel set di dati collegato.

Immagine 4. Regole dei Controlli di servizio VPC per l'esecuzione di query su un set di dati collegato.

Nella figura 4 sono etichettati i seguenti componenti:

  • Chiamante: un sottoscrittore di BigQuery sharing o qualsiasi utente del job BigQuery del set di dati collegato.
  • Progetto R: il progetto chiamante.
  • Progetto L: ospita il set di dati collegato.
  • Progetto V: ospita il set di dati condiviso che contiene la tabella.

In qualità di sottoscrittore di BigQuery sharing, quando esegui una query su una tabella nel set di dati collegato, devi aggiungere le seguenti regole in entrata e in uscita:

Progetto Rule (Regola)
Progetto R Regola in uscita per il progetto L
Progetto L (set di dati collegato) Regola in entrata per il progetto R

Visualizzazioni delle query in un set di dati collegato

Questa sezione descrive le regole dei Controlli di servizio VPC necessarie per eseguire query su una vista in un set di dati collegato. Le regole variano a seconda che la vista e le tabelle di base sottostanti si trovino nello stesso progetto o in progetti separati.

Scenario 1

Nel seguente diagramma, i progetti che contengono il set di dati collegato e le tabelle di base associate alla vista si trovano in perimetri di servizio diversi. La vista (Progetto S) e la tabella di base associata alla vista (Progetto V) si trovano in progetti diversi:

la vista e le tabelle di base si trovano in progetti diversi.

Figura 5. Regole dei Controlli di servizio VPC per l'esecuzione di query su una vista in un set di dati collegato.

Nella figura 5 sono etichettati i seguenti componenti:

  • Chiamante: un sottoscrittore di BigQuery sharing o qualsiasi utente del job BigQuery del set di dati collegato.
  • Progetto R: il progetto chiamante.
  • Progetto L: ospita il set di dati collegato.
  • Progetto S: ospita il set di dati condiviso.
  • Progetto V: ospita il set di dati che contiene le tabelle di base associate alla vista.

Quando, in qualità di sottoscrittore della condivisione di BigQuery, esegui una query su una vista in un set di dati collegato, devi aggiungere le seguenti regole in entrata e in uscita:

Progetto Rule (Regola)
Progetto R

Regola in uscita per il progetto L

Regola in uscita per il progetto V

Progetto L (set di dati collegato)

Regola in entrata per il progetto R

Regola in uscita per il progetto V

Progetto V

Regola in uscita per il progetto L

Regola in entrata per il progetto R

Scenario 2

Nel seguente diagramma, la vista (Progetto V) e la tabella di base associata alla vista (Progetto V) si trovano nello stesso progetto:

la vista e le tabelle di base si trovano nello stesso progetto.

Immagine 6. Regole dei Controlli di servizio VPC per l'esecuzione di query su una vista in un set di dati collegato.

Nella figura 6 sono etichettati i seguenti componenti:

  • Chiamante: un sottoscrittore di BigQuery sharing o qualsiasi utente di job BigQuery del set di dati collegato.
  • Progetto R: il progetto chiamante.
  • Progetto L: ospita il set di dati collegato.
  • Progetto V: ospita sia la vista sia le tabelle di base associate alla vista.

Quando, in qualità di sottoscrittore della condivisione di BigQuery, esegui una query su una vista in un set di dati collegato, devi aggiungere le seguenti regole in entrata e in uscita:

Progetto Rule (Regola)
Progetto R

Regola in uscita per il progetto L

Progetto L (set di dati collegato)

Regola in entrata per il progetto R

Esegui query sulle viste autorizzate in un set di dati collegato

Nel seguente diagramma, la vista autorizzata e la tabella di base associata alla vista autorizzata (Progetto V) si trovano nello stesso progetto:

la vista autorizzata e le tabelle di base si trovano nello stesso progetto.

Immagine 7. Regole dei Controlli di servizio VPC per l'esecuzione di query su una vista in un set di dati collegato.

Nella figura 7 sono etichettati i seguenti componenti:

  • Chiamante: un sottoscrittore di BigQuery sharing o qualsiasi utente di job BigQuery del set di dati collegato.
  • Progetto R: il progetto chiamante.
  • Progetto L: ospita il set di dati collegato.
  • Progetto V: ospita sia la vista autorizzata sia le tabelle di base associate alla vista.

Quando, in qualità di sottoscrittore della condivisione di BigQuery, esegui una query su una vista in un set di dati collegato, devi aggiungere le seguenti regole in entrata e in uscita:

Progetto Rule (Regola)
Progetto R

Regola in uscita per il progetto L

Progetto L (set di dati collegato)

Regola in entrata per il progetto R

Limitazioni

La condivisione di BigQuery non supporta le regole basate sui metodi. Devi consentire tutti i metodi per abilitare le regole basate sui metodi. Ad esempio:

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

Se le risorse BigQuery sono protette anche da perimetri di servizio, devi consentire le regole in entrata e in uscita per il servizio BigQuery. Non è necessario consentire le regole in entrata e in uscita quando crei uno scambio di dati. Le regole di ingresso e uscita per BigQuery sono simili a quelle per la condivisione di BigQuery. Ad esempio:

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

Passaggi successivi