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 de forma explícita.

Serviços do Firestore em pacote

As APIs a seguir sã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, ele 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 está incluído no serviço firestore.googleapis.com. Para restringir o serviço datastore.googleapis.com, você precisa restringir 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 incluídos legados do App Engine para Datastore

Os serviços incluídos 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 incluídos 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 no modo Datastore é compatível com o VPC Service Controls, mas requer configuração adicional para ter proteção total de saída em operações de importação e exportação. Em vez da conta de serviço padrão do App Engine, use o agente de serviço do Firestore para autorizar as operações de importação e exportação. Use as instruções a seguir para visualizar 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 as 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 usa 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 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 ele é específico do Firestore. A conta de serviço do App Engine é compartilhada por mais de um serviço.

Visualizar conta de autorização

É possível ver 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. Também é possível ver 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 usar o agente de serviço do Firestore, será possível migrar para o agente de serviço do Firestore usando uma destas técnicas:

A primeira dessas técnicas é preferível porque localiza o escopo do efeito de um único projeto do modo Datastore. 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, você precisa conceder permissões de agente de serviço do 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 foi migrado para o agente de serviço do Firestore, você verá um banner descrevendo a migração e o 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 que foram usados recentemente em operações de importação e exportação, mas que atualmente não dão permissões de leitura e gravação ao agente de serviço do modo Datastore.

  5. Anote o nome principal do agente de serviço do modo Datastore 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 Novas 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 Save.
    6. Volte para a guia com a página "Importar/Exportar" do modo Datastore.
    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 o principal for service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com, seu projeto já foi migrado 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 apropriadas 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.