VPC Service Controls

O VPC Service Controls permite que as organizações definam um perímetro em torno dos recursos do Google Cloud para reduzir os riscos de exfiltração de dados. Com o VPC Service Controls, você cria perímetros que protegem os recursos e os dados dos serviços especificados explicitamente.

Serviços do Firestore no pacote

As APIs a seguir estão agrupadas no VPC Service Controls:

  • firestore.googleapis.com
  • datastore.googleapis.com
  • firestorekeyvisualizer.googleapis.com

Quando você restringe o serviço firestore.googleapis.com em um perímetro, o perímetro também restringe os serviços datastore.googleapis.com e firestorekeyvisualizer.googleapis.com.

Restringir o serviço datastore.googleapis.com

O serviço datastore.googleapis.com é agrupado no serviço firestore.googleapis.com. Para restringir o serviço datastore.googleapis.com, restringa o serviço firestore.googleapis.com da seguinte maneira:

  • Ao criar um perímetro de serviço usando o console do Google Cloud, adicione o Firestore como o serviço restrito.
  • Ao criar um perímetro de serviço usando a Google Cloud CLI, use firestore.googleapis.com em vez de datastore.googleapis.com.
    --perimeter-restricted-services=firestore.googleapis.com

Serviços agrupados legados do App Engine para o Datastore

Os serviços em pacote legados do App Engine para o Datastore não são compatíveis com perímetros de serviço. Proteger o serviço do Datastore com um perímetro de serviço bloqueia o tráfego de serviços em pacote legados do App Engine. Os serviços agrupados legados incluem:

Proteção de saída em operações de importação e exportação

O Firestore oferece suporte ao VPC Service Controls, mas requer uma configuração adicional para ter proteção total de saída em operações de importação e exportação. É necessário usar o agente de serviço do Firestore para autorizar operações de importação e exportação em vez da conta de serviço padrão do App Engine. Use as instruções a seguir para conferir e configurar a conta de autorização para operações de importação e exportação.

Agente de serviço do Firestore

O Firestore usa um agente de serviço do Firestore para autorizar operações de importação e exportação em vez de usar a conta de serviço do App Engine. O agente de serviço e a conta de serviço usam as seguintes convenções de nomenclatura:

Agente de serviço do Firestore
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com

Anteriormente, o Firestore usava a conta de serviço padrão do App Engine em vez do agente de serviço do Firestore. Se o banco de dados ainda usar a conta de serviço do App Engine para importar ou exportar dados, recomendamos que você siga as instruções desta seção para migrar para o uso do agente de serviço do Firestore.

Conta de serviço do App Engine
PROJECT_ID@appspot.gserviceaccount.com

O agente de serviço do Firestore é preferível porque é específico para o Firestore. A conta de serviço do App Engine é compartilhada por mais de um serviço.

Visualizar conta de autorização

Você pode verificar qual conta suas operações de importação e exportação usam para autorizar solicitações na página Importar/Exportar no console do Google Cloud Platform. Também é possível conferir se o banco de dados já usa o agente de serviço do Firestore.

  1. No Console do Google Cloud, acesse a página Bancos de Dados.

    Acessar "Bancos de dados"

  2. Selecione o banco de dados necessário na lista de bancos de dados.
  3. No menu de navegação, clique em Importar/Exportar.

  4. Veja a conta de autorização ao lado do rótulo Importar/exportar jobs executados como.

Se o projeto não usa o agente de serviço do Firestore, é possível migrar para o agente com uma destas técnicas:

A primeira dessas técnicas é recomendada porque localiza o escopo do efeito de um único projeto do Firestore. A segunda técnica não é preferível porque não migra permissões existentes de bucket do Cloud Storage. Porém, ela oferece compliance de segurança no nível da organização.

Migrar verificando e atualizando as permissões do bucket do Cloud Storage

O processo de migração tem duas etapas:

  1. Atualizar permissões do bucket do Cloud Storage. Consulte a próxima seção para mais detalhes.
  2. Confirme a migração para o agente de serviço do Firestore.

Permissões do bucket do agente de serviço

Para qualquer operação de exportação ou importação que use um bucket do Cloud Storage em outro projeto, é necessário conceder permissões do agente de serviço do Cloud Firestore para esse bucket. Por exemplo, as operações que movem dados para outro projeto precisam acessar um bucket nesse outro projeto. Caso contrário, essas operações falharão após a migração para o agente de serviço do Firestore.

Os fluxos de trabalho de importação e exportação que permanecem no mesmo projeto não exigem mudanças nas permissões. O agente de serviço do Firestore pode acessar buckets no mesmo projeto por padrão.

Atualize as permissões dos buckets do Cloud Storage de outros projetos para fornecer acesso ao agente de serviço service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com. Conceda ao agente de serviço o papel Firestore Service Agent.

O papel Firestore Service Agent concede permissões de leitura e gravação a um bucket do Cloud Storage. Se você precisar conceder apenas permissões de leitura ou gravação, use uma função personalizada.

O processo de migração descrito na seção a seguir ajuda a identificar os buckets do Cloud Storage que talvez exijam atualizações das permissões.

Migrar um projeto para o agente de serviço do Firestore

Conclua as etapas a seguir para migrar da conta de serviço do App Engine para o agente de serviço do Firestore. Uma vez concluída, a migração não pode ser desfeita.

  1. No Console do Google Cloud, acesse a página Bancos de Dados.

    Acessar "Bancos de dados"

  2. Selecione o banco de dados necessário na lista de bancos de dados.
  3. No menu de navegação, clique em Importar/Exportar.

  4. Se o projeto ainda não tiver sido migrado para o agente de serviço do Firestore, você vai encontrar um banner descrevendo a migração e um botão Verificar status do bucket. A próxima etapa ajuda você a identificar e corrigir possíveis erros de permissão.

    Clique em Verificar status do bucket.

    Será exibido um menu com a opção de concluir a migração e uma lista de buckets do Cloud Storage. Pode levar alguns minutos para a lista terminar de ser carregada.

    Esta lista inclui buckets usados recentemente em operações de importação e exportação, mas que atualmente não concedem permissões de leitura e gravação ao agente de serviço do Firestore.

  5. Anote o nome principal do agente de serviço do Firestore do seu projeto. O nome do agente de serviço aparece abaixo do identificador Agente de serviço que receberá acesso.
  6. Para qualquer bucket na lista que você usar em operações futuras de importação ou exportação, siga estas etapas:

    1. Na linha da tabela desse bucket, clique em Corrigir. A página de permissões do bucket será aberta em uma nova guia.

    2. Clique em Adicionar.
    3. No campo Novos principais, insira o nome do agente de serviço do Firestore.
    4. No campo Selecionar um papel, selecione Agentes de serviço > Agente de serviço do Firestore.
    5. Clique em Salvar.
    6. Volte para a guia na página de importação/exportação do Firestore.
    7. Repita essas etapas para outros buckets na lista. Analise todas as páginas da lista.
  7. Clique em Migrar para o agente de serviço do Firestore. Se ainda houver buckets com falha nas verificações de permissão, será necessário confirmar a migração clicando em Migrar.

    Um alerta informa quando a migração é concluída. A migração não pode ser desfeita.

Ver o status da migração

Para verificar o status da migração do projeto:

  1. No Console do Google Cloud, acesse a página Bancos de Dados.

    Acessar "Bancos de dados"

  2. Selecione o banco de dados necessário na lista de bancos de dados.
  3. No menu de navegação, clique em Importar/Exportar.

  4. Procure a principal ao lado do rótulo Importar/exportar jobs executados como.

    Se a principal for service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com, seu projeto já migrou para o agente de serviço do Firestore. Não é possível desfazer a migração.

    Se o projeto não tiver sido migrado, um banner aparecerá na parte superior da página com um botão Verificar status do bucket. Consulte Migrar para o agente de serviço do Firestore para concluir a migração.

Adicionar uma restrição de política em toda a organização

  • Defina a restrição a seguir na política da organização:

    Exigir o agente de serviço do Firestore para importação/exportação (firestore.requireP4SAforImportExport).

    Essa restrição exige que as operações de importação e exportação usem o agente de serviço do Firestore para autorizar solicitações. Para definir essa restrição, consulte Como criar e gerenciar políticas da organização.

A aplicação dessa restrição de política organizacional não concede automaticamente as permissões de bucket adequadas do Cloud Storage para o agente de serviço do Firestore.

Se a restrição criar erros de permissão para os fluxos de trabalho de importação ou exportação, será possível desativá-la para voltar a usar a conta de serviço padrão. Depois de verificar e atualizar as permissões do bucket do Cloud Storage, é possível ativar a restrição novamente.