Controlli di servizio VPC per BigQuery

Questa pagina spiega come migliorare la sicurezza delle risorse BigQuery creando perimetri con i Controlli di servizio VPC. Questi perimetri limitano l'accesso da e verso BigQuery e sono indipendenti dai controlli di Identity and Access Management (IAM). Sono utili nei seguenti casi d'uso:

  • Prevenire la fuga di dati limitando l'accesso alle risorse, ad eccezione di quelle specificamente consentite nelle regole in entrata e in uscita.
  • Caricamento sicuro dei dati in BigQuery da origini di terze parti o servizi Cloud de Confiance by S3NS , come Cloud Storage.
  • Controllo dell'esportazione dei dati da BigQuery a Cloud Storage o ad altre destinazioni.

Per saperne di più, consulta la panoramica dei Controlli di servizio VPC.

Prima di iniziare

  • Per ottenere le autorizzazioni necessarie per configurare i perimetri di servizio, consulta Controllo dell'accesso con IAM per i Controlli di servizio VPC.
  • Devi disporre di una policy di accesso per la tua organizzazione. Per saperne di più, consulta Crea una policy di accesso.

Crea il perimetro dei Controlli di servizio VPC

L'esempio seguente mostra come creare un perimetro dei Controlli di servizio VPC che limita l'intervallo di indirizzi IP esterni che possono accedere a un progetto BigQuery.

  1. Crea un livello di accesso che consenta l'accesso solo a un intervallo specificato di indirizzi IP, ad esempio quelli all'interno di una rete aziendale. Per crearla, utilizza il comando gcloud access-context-manager levels create:

    echo """
    - ipSubnetworks:
      - 162.222.181.0/24
      - 2001:db8::/48
    """ > level.yaml
    
    gcloud access-context-manager levels create ACCESS_LEVEL_NAME \
        --title="TITLE" --basic-level-spec=level.yaml
    

    Sostituisci quanto segue:

    • ACCESS_LEVEL_NAME: l'ID del livello di accesso
    • TITLE: il titolo leggibile del perimetro di servizio

    Per saperne di più sulla creazione dei livelli di accesso, consulta le implementazioni di esempio.

  2. Proteggi la risorsa BigQuery creando o aggiornando un perimetro. I seguenti esempi proteggono un progetto. Per altri casi d'uso, ad esempio la protezione del trasferimento di dati da un bucket Cloud Storage in un altro progetto, consulta i casi d'uso.

    Crea perimetro

    Per creare un nuovo perimetro per proteggere il progetto BigQuery, utilizza il comando gcloud access-context-manager perimeters create:

    echo """
    - ingressFrom:
        identityType: ANY_IDENTITY
        sources:
        - accessLevel: accessPolicies/POLICY_NAME/accessLevels/ACCESS_LEVEL_NAME
      ingressTo:
        operations:
        - methodSelectors:
          - method: '*'
          serviceName: bigquery.googleapis.com
        resources:
        - '*'
    
    """ > ingress.yaml
    
    gcloud access-context-manager perimeters create BIGQUERY_PERIMETER --title="TITLE" \
        --resources=BIGQUERY_PROJECT_NUMBER \
        --restricted-services=bigquery.googleapis.com \
        --ingress-policies=ingress.yaml
        --policy=POLICY_NAME
    

    Sostituisci quanto segue:

    • POLICY_NAME: l'ID della policy di accesso
    • ACCESS_LEVEL_NAME: l'ID del livello di accesso
    • PERIMETER: l'ID del perimetro
    • TITLE: il titolo breve e leggibile del perimetro di servizio
    • BIGQUERY_PROJECT_NUMBER: l'ID del progetto BigQuery
    • POLICY_NAME: l'ID della policy di accesso

    Aggiorna il perimetro

    Per aggiornare un perimetro esistente, utilizza il comando gcloud access-context-manager perimeters update:

    gcloud access-context-manager perimeters update BIGQUERY_PERIMETER --set-ingress-policies=ingress.yaml
    

    Sostituisci BIGQUERY_PERIMETER con l'ID del perimetro che protegge la risorsa BigQuery.

Testa il perimetro

Testa il perimetro dei Controlli di servizio VPC prima di applicarlo. Per saperne di più, consulta Modalità dry run per i perimetri di servizio e Utilizzo della modalità dry run per testare le policy in entrata o in uscita.

Casi d'uso

I seguenti esempi di casi d'uso mostrano come proteggere i dati in entrata e in uscita da BigQuery con i Controlli di servizio VPC.

Esegui query sui dati di una tabella esterna da un bucket Cloud Storage in un altro progetto

I seguenti esempi mostrano come consentire selettivamente la comunicazione tra i progetti BigQuery e Cloud Storage quando sono separati da perimetri.

  1. Consenti al progetto BigQuery di accedere al progetto Cloud Storage aggiornando le regole in uscita per il perimetro intorno al progetto Cloud Storage:

    echo """
    - egressFrom:
        identityType: ANY_IDENTITY
      egressTo:
        operations:
        - methodSelectors:
          - method: '*'
          serviceName: storage.googleapis.com
        resources:
        - projects/BIGQUERY_PROJECT_NUMBER
    """ > egress.yaml
    
    gcloud access-context-manager perimeters update CLOUD_STORAGE_PERIMETER --policy=POLICY_NAME --set-egress-policies=egress.yaml
    

    Sostituisci quanto segue:

    • BIGQUERY_PROJECT_NUMBER: l'ID del progetto BigQuery
    • CLOUD_STORAGE_PERIMETER: l'ID del perimetro che protegge le risorse Cloud Storage
    • POLICY_NAME: l'ID della policy di accesso
  2. Consenti al progetto Cloud Storage di accedere al progetto BigQuery aggiornando le regole in uscita per il perimetro intorno al progetto BigQuery:

    echo """
    - egressFrom:
        identityType: ANY_IDENTITY
      egressTo:
        operations:
        - methodSelectors:
          - method: '*'
          serviceName: storage.googleapis.com
        resources:
        - projects/CLOUD_STORAGE_PROJECT_NUMBER
    """ > egress1.yaml
    
    gcloud access-context-manager perimeters update BIGQUERY_PERIMETER --policy=POLICY_NAME --set-egress-policies=egress1.yaml
    

    Sostituisci quanto segue:

    • CLOUD_STORAGE_PROJECT_NUMBER: l'ID del progetto Cloud Storage
    • PERIMETER: l'ID del perimetro
    • POLICY_NAME: l'ID della policy di accesso
  3. (Facoltativo) Se il perimetro che protegge il progetto BigQuery include storage.googleapis.com come servizio limitato, devi aggiornare la regola di ingresso:

    echo """
    - ingressFrom:
        identityType: ANY_IDENTITY
        sources:
        - accessLevel: accessPolicies/POLICY_NAME/accessLevels/ACCESS_LEVEL_NAME
      ingressTo:
        operations:
        - methodSelectors:
          - method: '*'
          serviceName: bigquery.googleapis.com
        - methodSelectors:
          - method: '*'
          serviceName: storage.googleapis.com
        resources:
        - '*'
    
    """ > ingress.yaml
    
    gcloud access-context-manager perimeters create BIGQUERY_PERIMETER --title="TITLE" \
        --resources=BIGQUERY_PROJECT_NUMBER \
        --restricted-services=bigquery.googleapis.com \
        --ingress-policies=ingress.yaml
        --policy=POLICY_NAME
    

Importa ed esporta dati da BigQuery Omni

Come ulteriore livello di difesa, puoi utilizzare i perimetri dei Controlli di servizio VPC per limitare l'accesso tra BigQuery Omni e un servizio cloud esterno. Per ulteriori informazioni ed esempi, consulta la configurazione dei Controlli di servizio VPC per la creazione di una tabella BigLake di Azure Blob Storage.

Passaggi successivi