As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Alterar seu modelo de dados
nota
Nossa biblioteca de criptografia do lado do cliente foi renomeada para AWS Database Encryption. SDK O tópico a seguir fornece informações sobre as versões 1.x—2.x do DynamoDB Encryption Client para Java e versões 1.x—3x do DynamoDB Encryption Client para Python. Para obter mais informações, consulte AWS Database Encryption SDK for DynamoDB para suporte à versão.
Sempre que criptografa ou descriptografa um item, você precisa fornecer dações de atributos que informam ao DynamoDB Encryption Client quais atributos criptografar e assinar, quais assinar (mas não criptografar) e quais ignorar. As ações de atributos não são salvas no item criptografado e o DynamoDB Encryption Client não atualiza as ações de atributos automaticamente.
Importante
O DynamoDB Encryption Client não oferece suporte à criptografia de dados de tabela do DynamoDB existentes e não criptografados.
Sempre que alterar seu modelo de dados, ou seja, ao adicionar ou remover atributos de seus itens de tabela, você corre o risco de um erro. Se as ações de atributo especificadas por você não justificam todos os atributos no item, ele não poderá ser criptografado nem assinado como você deseja. O mais importante é que se as ações dos atributos fornecidas por você ao descriptografar um item forem diferentes das ações de atributos fornecidas ao criptografar o item, poderá ocorrer uma falha na verificação da assinatura.
Por exemplo, se as ações de atributo usadas para criptografar o item o instruem a assinar o atributo test
, a assinatura no item incluirá o atributo test
. Mas se as ações de atributo usadas para descriptografar o item não justificam o atributo test
, ocorrerá uma falha na verificação porque o cliente tentará verificar uma assinatura que não inclui o atributo test
.
Esse é um problema específico quando vários aplicativos leem e gravam os mesmos itens do DynamoDB porque o DynamoDB Encryption Client precisa calcular a mesma assinatura para itens em todos os aplicativos. Também é um problema para qualquer aplicativo distribuído porque as alterações nas ações de atributos devem ser propagadas para todos os hosts. Mesmo que suas tabelas do DynamoDB sejam acessadas por um único host em um processo, o estabelecimento de um processo de melhores práticas ajudará a evitar erros se o projeto se tornar mais complexo.
Para evitar erros de validação de assinatura que impedem a leitura de itens de tabela, use as orientações a seguir.
-
Adicionar um atributo — Se o novo atributo alterar as ações de atributo, implante totalmente a alteração da ação de atributo antes de incluir o novo atributo em um item.
-
Remover um atributo — Se você parar de usar um atributo nos itens, não altere as suas ações de atributo.
-
Alterar a ação — Depois de usar uma configuração de ações de atributo para criptografar os itens da tabela, não será possível alterar com segurança a ação padrão ou a ação de um atributo existente sem recriptografar cada item da tabela.
Erros de validação de assinatura podem ser extremamente difíceis de resolver, portanto, a melhor abordagem é evitá-los.
Adicionar um atributo
Ao adicionar um novo atributo a itens de tabela, talvez seja necessário alterar as ações de seus atributos. Para evitar erros de validação de assinatura, é recomendável implementar essa alteração em um processo de dois estágios. Verifique se o primeiro estágio está completo antes de iniciar o segundo estágio.
-
Altere as ações de atributos em todos os aplicativos que leem ou gravam na tabela. Implante essas alterações e confirme se a atualização foi propagada para todos os hosts de destino.
-
Grave valores para o novo atributo em seus itens de tabela.
Essa abordagem em dois estágios garante que todos os aplicativos e hosts tenham as mesmas ações de atributos e calculará a mesma assinatura, antes de qualquer encontro com o novo atributo. Isso é importante mesmo quando a ação do atributo for Não fazer nada (não criptografar ou assinar), porque o padrão para alguns criptografadores é criptografar e assinar.
Os exemplos a seguir mostram o código para o primeiro estágio desse processo. Eles adicionam um novo atributo de item, link
, que armazena um link para outro item da tabela. Como esse link deve permanecer em texto simples, o exemplo atribui a ele a ação somente assinar. Depois de implantar totalmente essa alteração e verificar se todos os aplicativos e hosts têm as novas ações de atributos, é possível começar a usar o atributo link
em seus itens de tabela.
Remover um atributo
Se você não precisar mais de um atributo em itens que foram criptografados com o DynamoDB Encryption Client, poderá parar de usar o atributo. No entanto, não exclua nem altere a ação desse atributo. Se o fizer e depois encontrar um item com esse atributo, a assinatura calculada para o item não corresponderá à assinatura original, e a validação da assinatura falhará.
Embora você possa ser tentado a remover todos os traços do atributo do seu código, adicione um comentário informando que o item não é mais usado em vez de excluí-lo. Mesmo que você faça uma verificação de tabela completa para excluir todas as instâncias do atributo, um item criptografado com esse atributo pode ser armazenado em cache ou em processo em algum lugar da configuração.