VPC Service Controls para o BigQuery

Esta página explica como melhorar a segurança em torno dos recursos do BigQuery através da criação de perímetros com os VPC Service Controls. Estes perímetros restringem o acesso ao BigQuery e a partir do BigQuery, e são independentes dos controlos de Identity and Access Management (IAM). São úteis nos seguintes exemplos de utilização:

  • Impedir a fuga de dados restringindo o acesso a recursos, exceto os especificamente permitidos nas regras de entrada e saída.
  • Carregar dados de forma segura para o BigQuery a partir de origens de terceiros ou Google Cloud serviços, como o Cloud Storage.
  • Controlar a exportação de dados do BigQuery para o Cloud Storage ou outros destinos.

Para mais informações, consulte a vista geral do VPC Service Controls.

Antes de começar

  • Para obter as autorizações necessárias para configurar perímetros de serviço, consulte o artigo Controlo de acesso com o IAM para os VPC Service Controls.
  • Tem de ter uma política de acesso para a sua organização. Para mais informações, consulte o artigo Crie uma política de acesso.

Crie o perímetro dos VPC Service Controls

O exemplo seguinte mostra como criar um perímetro do VPC Service Controls que limita o intervalo de endereços IP externos que podem aceder a um projeto do BigQuery.

  1. Crie um nível de acesso que permita apenas o acesso a um intervalo especificado de endereços IP, por exemplo, os que se encontram numa rede corporativa. Para o criar, use o 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
    

    Substitua o seguinte:

    • ACCESS_LEVEL_NAME: o ID do nível de acesso
    • TITLE: o título legível para humanos do perímetro de serviço

    Para mais informações sobre a criação de níveis de acesso, consulte as implementações de exemplo.

  2. Proteja o recurso do BigQuery criando ou atualizando um perímetro. Os exemplos seguintes protegem um projeto. Para outros exemplos de utilização, como a proteção da transferência de dados de um contentor do Cloud Storage noutro projeto, consulte os exemplos de utilização.

    Crie um perímetro

    Para criar um novo perímetro para proteger o projeto do BigQuery, use o 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
    

    Substitua o seguinte:

    • POLICY_NAME: o ID da política de acesso
    • ACCESS_LEVEL_NAME: o ID do nível de acesso
    • PERIMETER: o ID do perímetro
    • TITLE: o título curto e legível para humanos do perímetro de serviço
    • BIGQUERY_PROJECT_NUMBER: o ID do projeto do BigQuery
    • POLICY_NAME: o ID da política de acesso

    Atualize o perímetro

    Para atualizar um perímetro existente, use o comando gcloud access-context-manager perimeters update:

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

    Substitua BIGQUERY_PERIMETER pelo ID do perímetro que protege o recurso do BigQuery.

Teste o perímetro

Teste o perímetro dos VPC Service Controls antes de o aplicar. Para mais informações, consulte os artigos Modo de teste para perímetros de serviço e Usar o modo de teste para testar políticas de entrada ou saída.

Exemplos de utilização

Os seguintes exemplos de casos de utilização mostram como proteger os dados que entram e saem do BigQuery com os VPC Service Controls.

Consultar dados de tabelas externas a partir de um contentor do Cloud Storage noutro projeto

Os exemplos seguintes mostram como permitir seletivamente a comunicação entre os projetos do BigQuery e do Cloud Storage quando estão separados por perímetros.

  1. Permita que o projeto do BigQuery aceda ao projeto do Cloud Storage atualizando as regras de saída para o perímetro em torno do projeto do 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
    

    Substitua o seguinte:

    • BIGQUERY_PROJECT_NUMBER: o ID do projeto do BigQuery
    • CLOUD_STORAGE_PERIMETER: o ID do perímetro que protege os recursos do Cloud Storage
    • POLICY_NAME: o ID da política de acesso
  2. Permita que o projeto do Cloud Storage aceda ao projeto do BigQuery atualizando as regras de saída para o perímetro em torno do projeto do 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
    

    Substitua o seguinte:

    • CLOUD_STORAGE_PROJECT_NUMBER: o ID do projeto do Cloud Storage
    • PERIMETER: o ID do perímetro
    • POLICY_NAME: o ID da política de acesso
  3. Opcional: se o perímetro que protege o projeto do BigQuery incluir o storage.googleapis.com como um serviço restrito, tem de atualizar a regra de entrada:

    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
    

Importe e exporte dados do BigQuery Omni

Como camada de defesa adicional, pode usar perímetros dos VPC Service Controls para restringir o acesso entre o BigQuery Omni e um serviço de nuvem externo. Para mais informações e exemplos, consulte a configuração do VPC Service Controls quando cria uma tabela do BigLake do Azure Blob Storage.

O que se segue?