Configurar o VPC Service Controls para o BigQuery Omni

Neste documento, você verá como configurar uma política de saída que restringe o acesso apenas a recursos de nuvem externos especificados em um perímetro do VPC Service Controls.

É possível usar perímetros do VPC Service Controls para restringir o acesso do BigQuery Omni a nuvens externas. O VPC Service Controls oferece uma camada extra de defesa de segurança para serviços do Google Cloud, independente do Identity and Access Management (IAM). Por exemplo, ao configurar os perímetros do VPC Service Controls, é possível limitar as exportações das tabelas do BigQuery Omni para um bucket S3 específico.

Para saber mais sobre o VPC Service Controls, consulte a Visão geral do VPC Service Controls.

Antes de começar

Verifique se você tem as permissões necessárias para configurar os perímetros de serviço. Para ver uma lista de papéis do IAM necessários para configurar o VPC Service Controls, consulte Controle de acesso com o IAM na documentação do VPC Service Controls.

Configurar o VPC Service Controls usando o console do Cloud

  1. No menu de navegação do console do Cloud, clique em Segurança e depois em VPC Service Controls.

    Acessar o VPC Service Controls

  2. Para configurar o VPC Service Controls para o BigQuery Omni, siga as etapas do guia Criar um perímetro de serviço e, quando estiver nas Regras de saída, siga estas etapas:

    1. No painel Regras de saída, clique em Adicionar regra.

    2. Na seção De atributos do cliente da API, selecione uma opção na lista Identidade.

    3. Selecione Para atributos de recursos externos.

    4. Para adicionar um recurso externo, clique em Adicionar recursos externos.

    5. Na caixa de diálogo Adicionar recurso externo, em Nome do recurso externo, insira um nome de recurso válido. Exemplo:

      • Para o Amazon S3: s3://BUCKET_NAME

        Substitua BUCKET_NAME pelo nome do seu bucket do Amazon S3.

      • Para o Azure Storage: azure://myaccount.blob.core.windows.net/CONTAINER_NAME

        Substitua CONTAINER NAME pelo nome do seu contêiner do Azure Storage.

      Para uma lista de atributos de regra de saída, consulte Referência de regras de saída.

    6. Selecione os métodos que você quer permitir nos recursos externos:

      1. Se você quiser permitir todos os métodos, selecione Todos os métodos na lista Métodos.
      2. Para permitir métodos específicos, selecione Método selecionado, clique em Selecionar métodos e depois selecione os métodos que você quer permitir nos recursos externos.
    7. Clique em Criar perímetro.

Configurar o VPC Service Controls usando a CLI gcloud

Para configurar o VPC Service Controls usando a CLI gcloud, siga estas etapas:

  1. Defina a política de acesso padrão.
  2. Crie o arquivo de entrada da política de saída.
  3. Adicione a política de saída.

Definir a política de acesso padrão

Uma política de acesso é um contêiner de toda a organização para níveis de acesso e perímetros de serviço. Para informações sobre como definir uma política de acesso padrão ou conseguir um nome de política de acesso, consulte Como gerenciar uma política de acesso.

Criar o arquivo de entrada da política de saída

Um bloco de regra de saída define o acesso permitido de dentro um perímetro para recursos fora dele. Para recursos externos, a propriedade externalResources define os caminhos de recursos externos permitidos no perímetro do VPC Service Controls.

As regras de saída podem ser configuradas usando um arquivo JSON ou YAML. A amostra a seguir usa o formato .yaml:

- egressTo:
    operations:
    - serviceName: bigquery.googleapis.com
      methodSelectors:
      - method: "*"
      *OR*
      - permission: "externalResource.read"
    externalResources:
      - EXTERNAL_RESOURCE_PATH
  egressFrom:
    identityType: IDENTITY_TYPE
    *OR*
    identities:
    - serviceAccount:SERVICE_ACCOUNT
  • egressTo: inicia o bloco to que lista as operações de serviço permitidas nos recursos do Google Cloud nos projetos especificados fora do perímetro.

  • operations: a lista de ações e serviços acessíveis ou métodos que um cliente que satisfaz as condições do bloco from tem permissão para acessar.

  • serviceName: para o BigQuery Omni, defina como bigquery.googleapis.com.

  • methodSelectors: uma lista de métodos que um cliente que satisfaz as condições do bloco from tem permissão para acessar. Para ver uma lista de métodos e permissões que podem ser restritos, consulte Restrições de método de serviço compatíveis.

  • method ou permission: o campo method pode ser um método de serviço válido ou pode ser definido como \"*\" para permitir o acesso a todos os métodos do serviço especificado.

    O campo permission precisa ser uma permissão de serviço válida, como \"*\", externalResource.read ou externalResource.write. O acesso aos recursos especificados fora do perímetro é permitido para as operações que exigem essa permissão.

  • externalResources: uma lista de recursos externos que os clientes dentro de um perímetro podem acessar. Substitua EXTERNAL_RESOURCE_PATH por um bucket válido da AWS S3, como s3://bucket_name, ou um caminho de armazenamento do Azure, como azure://myaccount.blob.core.windows.net/container_name.

  • egressFrom: inicia o bloco from que lista as operações de serviço permitidas nos recursos do Google Cloud em projetos especificados dentro do perímetro.

  • identityType ou identities: o atributo identityType define os tipos de identidades que podem ser usados para acessar os recursos especificados fora do perímetro. Substitua IDENTITY_TYPE por um dos seguintes valores:

    • ANY_IDENTITY: para permitir todas as identidades.
    • ANY_USER_ACCOUNT: para permitir todos os usuários.
    • ANY_SERVICE_ACCOUNT: para permitir todas as contas de serviço.

    O atributo identities é uma lista de contas de serviço que podem acessar os recursos especificados fora do perímetro.

  • serviceAccount (opcional): substitua SERVICE_ACCOUNT pela conta de serviço que pode acessar os recursos especificados fora do perímetro.

Exemplos

O exemplo a seguir é uma política que permite operações de saída de dentro do perímetro para o local s3://mybucket do S3 na AWS.

- egressTo:
    operations:
    - serviceName: bigquery.googleapis.com
      methodSelectors:
      - method: "*"
    externalResources:
      - s3://mybucket
      - s3://mybucket2
  egressFrom:
    identityType: ANY_IDENTITY

O exemplo a seguir permite operações de saída para um bucket de armazenamento do Azure.

- egressTo:
    operations:
    - serviceName: bigquery.googleapis.com
      methodSelectors:
      - method: "*"
    externalResources:
      - azure://myaccount.blob.core.windows.net/mycontainer
  egressFrom:
    identityType: ANY_IDENTITY

Para mais informações sobre como políticas de saída, consulte a Referência de regras de saída.

Adicionar a política de saída

Para adicionar a política de saída ao criar um novo perímetro de serviço, use o comando gcloud access-context-manager perimeters create. Por exemplo, o comando a seguir cria um novo perímetro chamado omniPerimeter que inclui o projeto com o número 12345, restringe a API BigQuery e adiciona uma política de saída definida no arquivo egress.yaml:

gcloud access-context-manager perimeters create omniPerimeter \
    --title="Omni Perimeter" \
    --resources=projects/12345 \
    --restricted-services=bigquery.googleapis.com \
    --egress-policies=egress.yaml

Para adicionar a política de saída a um perímetro de serviço que já existe, use o comando gcloud access-context-manager perimeters update. Por exemplo, o comando a seguir adiciona uma política de saída definida no arquivo egress.yaml a um perímetro de serviço que já existe chamado omniPerimeter:

gcloud access-context-manager perimeters update omniPerimeter
    --set-egress-policies=egress.yaml

Verificar o perímetro

Para verificar o perímetro, use o comando gcloud access-context-manager perimeters describe:

gcloud access-context-manager perimeters describe PERIMETER_NAME

Substitua PERIMETER_NAME pelo nome do perímetro.

Por exemplo, o comando a seguir descreve o perímetro omniPerimeter:

gcloud access-context-manager perimeters describe omniPerimeter

Para mais informações, consulte Como gerenciar perímetros de serviço.

A seguir