Chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês)
Por padrão, todos os dados em repouso no Firestore são criptografados usando a criptografia padrão do Google. O Firestore processa e gerencia essa criptografia automaticamente para você sem que você precise fazer nada.
Se você tiver requisitos regulatórios ou de compliance específicos relacionados às chaves que protegem seus dados, use as chaves de criptografia gerenciadas pelo cliente (CMEKs, na sigla em inglês) para o Firestore. Em vez de o Google gerenciar as chaves de criptografia que protegem seus dados, seu banco de dados do Firestore é protegido usando uma chave que você controla e gerencia no Cloud Key Management Service (Cloud KMS).
Esta página descreve o CMEK para o Firestore. Para mais informações sobre CMEK em geral, incluindo quando e por que ativar, consulte a documentação do Cloud KMS:
- Chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês)
- Práticas recomendadas para usar CMEKs
Para instruções sobre como realizar tarefas relacionadas a CMEK com o Firestore, consulte Usar CMEK.
Recursos
- Controle de dados: a CMEK permite gerenciar a chave do KMS. É possível alternar, desativar e destruir a chave usada para criptografar os dados em repouso no seu banco de dados do Firestore.
- Desempenho: o CMEK não afeta o SLA do Firestore.
- Auditabilidade: se você ativar a geração de registros de auditoria para o Cloud KMS, todas as operações na chave serão registradas e visualizáveis no Cloud Logging.
- Restrições da política da organização: é possível usar restrições da política da organização do CMEK para especificar os requisitos de conformidade de criptografia para bancos de dados do Firestore na sua organização.
Preços
O Cloud KMS cobra pelo custo da chave e de todas as operações criptográficas executadas usando essa chave. Para mais informações, consulte Preços do Cloud KMS.
Você é cobrado pelos custos da operação quando o Firestore pede para que a chave do Cloud KMS execute uma operação de criptografia ou descriptografia. A operação de criptografia/descriptografia pela chave gerenciada pelo cliente ocorre a cada 5 minutos e não é sincronizada com as solicitações do banco de dados. Os custos geralmente são baixos, considerando o número esperado de operações criptográficas geradas pelo Firestore. Os custos dos Registros de auditoria do Cloud são uma despesa extra, mas geralmente são baixos, considerando o número esperado de operações criptográficas.
Não há custos adicionais do Firestore para usar o banco de dados protegido por CMEK, e os preços do Firestore continuam valendo.
Se você revogar a chave de um banco de dados, o custo de armazenamento será cobrado com base no tamanho do último dia em que a chave estava disponível. Você vai continuar a incorrer em custos de armazenamento nesse tamanho até que o banco de dados seja excluído ou a chave seja disponibilizada novamente.
O que é protegido com a CMEK
Quando você cria um banco de dados protegido por CMEK do Firestore, a chave do Cloud KMS é usada para proteger os dados em repouso. Isso inclui dados armazenados em um disco ou pen drive, incluindo índices e backups. Algumas exceções se aplicam. Os seguintes tipos de dados são criptografados com a criptografia padrão do Google e não pela chave CMEK:
- Dados em trânsito ou memória
- Metadados do banco de dados
Como um status de chave indisponível é tratado
As operações de criptografia e descriptografia não são emitidas em todas as solicitações de dados. Em vez disso, o sistema do Firestore consulta o Cloud KMS a cada 5 minutos para verificar se a chave ainda está disponível e, em seguida, realiza operações de criptografia e descriptografia, se a chave estiver disponível.
Se o sistema detectar que a chave não está disponível, em até 10
minutos, todas as chamadas subsequentes ao banco de dados do Firestore, incluindo leituras, gravações e consultas, vão retornar um erro FAILED_PRECONDITION
com
a mensagem The customer-managed encryption key required by the requested
resource is not accessible
.
Se o banco de dados tiver políticas de time to live (TTL) e se algum tempo de expiração for excedido enquanto a chave estiver indisponível, a exclusão de dados por TTL será adiada até que a chave seja restabelecida. Se o banco de dados tiver operações de longa duração em andamento, elas serão afetadas da seguinte maneira:
- As operações de import ou exportação de dados param e são marcadas como
Failed
. As operações com falha não serão tentadas novamente se a chave for restabelecida. - As operações de criação de índice e as operações que ativam novas políticas de TTL vão parar de fazer progresso. As operações interrompidas serão tentadas novamente se a chave for restabelecida.
As chaves são consideradas indisponíveis em qualquer situação que impeça intencionalmente o Firestore de acessar a chave. Isso inclui:
- Desativando ou destruindo a versão da chave em uso. Tenha cuidado ao destruir uma versão da chave, porque isso pode causar perda irrecuperável de dados.
- Remoção da permissão para acessar a chave da conta de serviço do Firestore.
Se a chave for restabelecida, a operação de pesquisa detectará que ela está disponível novamente. O acesso é reativado, geralmente em alguns minutos, mas pode levar até algumas horas em casos raros. Algumas operações em chaves do Cloud KMS, como a desativação ou destruição de uma chave, podem levar até 3 horas para serem propagadas. O Firestore não detecta nenhuma mudança até que elas entrem em vigor no Cloud KMS.
A restauração de uma chave envolve as seguintes etapas, dependendo da situação:
- Reativar uma versão de chave desativada.
- Restaure uma versão da chave destruída. Antes de ser destruída permanentemente, uma versão de chave é programada para destruição. Só é possível restaurar uma chave durante o período em que uma versão de chave está programada para destruição. Não é possível restaurar uma chave que já foi destruída permanentemente.
- Conceda novamente a permissão do agente de serviço do Firestore para acessar a chave.
Considerações sobre a rotação de chaves
Quando você alterna a chave CMEK, o Firestore recriptografa o banco de dados com a versão principal mais recente da chave CMEK. Durante o processo de recriptografia, mantenha a versão antiga e a nova da chave disponíveis. Quando a nova criptografia for concluída, a desativação ou a exclusão das versões antigas da chave CMEK não desativará o acesso ao banco de dados, já que ele é criptografado com a nova versão da chave primária.
Também é possível conferir as versões de chave que estão sendo usadas para proteger um banco de dados. Para mais informações, consulte Conferir a chave em uso.
Considerações sobre chaves externas
Quando você usa uma chave do Cloud EKM, o Google não tem controle sobre a disponibilidade da sua chave gerenciada externamente no sistema de parceiros de gerenciamento de chaves externas.
Se uma chave gerenciada externamente não estiver disponível, o Firestore continuará oferecendo suporte a operações completas de banco de dados usando uma versão em cache da chave, por até uma hora.
Depois de uma hora, se o Firestore ainda não conseguir se conectar ao
Cloud KMS, o Firestore começará a colocar o banco de dados off-line como uma
medida de proteção. As chamadas para o banco de dados vão falhar com um erro FAILED_PRECONDITION
que inclui mais detalhes.
Consulte a documentação do gerenciador de chaves externas do Cloud para mais considerações ao usar chaves externas.
Backup e restauração
Um backup usa o mesmo mecanismo de criptografia do banco de dados em que ele foi criado. Quando um banco de dados do Firestore protegido por CMEK cria um backup, ele criptografa o backup com a versão da chave primária usada no momento da criação do backup.
O Firestore cria o primeiro backup de um banco de dados CMEK após 24 horas do momento em que você ativa as programações de backup.
Para mais informações sobre backups do Firestore, consulte Fazer backup e restaurar dados.
Um banco de dados restaurado de um backup usa o mesmo mecanismo de criptografia do backup por padrão. Ao restaurar um banco de dados, é possível especificar um tipo de criptografia diferente de uma das seguintes maneiras:
- Restaure para um banco de dados CMEK com uma chave recém-especificada.
- Restaurar para um banco de dados sem CMEK que usa a criptografia padrão do Google.
- Restaurar em um banco de dados que usa a mesma criptografia do backup.
Para mais informações sobre como restaurar um banco de dados do Firestore de um backup, consulte Restaurar dados de um backup de banco de dados. Para mais informações sobre como restaurar um banco de dados do Firestore protegido por CMEK de um backup, consulte Restaurar um banco de dados protegido por CMEK.
Rastreamento de chaves
É possível usar o rastreamento de chaves para conferir recursos, por exemplo, bancos de dados do Firestore, que uma chave protege. Para mais informações sobre o rastreamento de chaves, consulte Conferir o uso da chave.
CMEK e disponibilidade da chave
Quando as chaves estão indisponíveis ou desativadas, os seguintes comportamentos podem ocorrer em bancos de dados ativados para CMEK:
- É possível mudar as configurações de recuperação pontual (PITR, na sigla em inglês) do Firestore em um banco de dados ativado para CMEK, mesmo que a chave não esteja disponível, porque as configurações de PITR são metadados do banco de dados, que não são criptografados pela CMEK.
- É possível excluir um banco de dados CMEK com chaves indisponíveis.
- Quando você cria um banco de dados com CMEK ativado, as chaves desativadas não aparecem na lista de chaves disponíveis no console do Google Cloud. Se você inserir manualmente uma chave desativada, o processo de criação do banco de dados vai falhar com um erro
FAILED_PRECONDITION
400.
Limitações
- Não é possível mudar uma chave de um banco de dados protegido por CMEK. É possível girar, ativar e desativar chaves.
- Os bancos de dados protegidos por CMEK oferecem suporte ao Visualizador de chaves apenas para dados de entidade e documento, não para dados de índice.
- Não é possível ativar a CMEK em bancos de dados atuais. Só é possível ativar a CMEK em novos bancos de dados, e você precisa fazer isso ao criar o banco de dados. Para migrar dados de um banco de dados sem CMEK para um banco de dados protegido por CMEK, exporte seus dados e importe-os para um novo banco de dados protegido por CMEK. Também é possível restaurar dados de um banco de dados sem CMEK para um banco de dados com CMEK.
- O Firestore oferece suporte a um número limitado de bancos de dados protegidos por CMEK.
- Não oferecemos suporte à proteção CMEK com a integração do Cloud Functions (1ª geração). Se você quiser ter proteção de CMEK, use os Gatilhos do Cloud Firestore para funções do Cloud Run (2ª geração).