Atualizar seu modelo de dados - AWS SDK de criptografia de banco de dados

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á.

Atualizar seu modelo de dados

Nossa biblioteca de criptografia do lado do cliente foi renomeada para SDK de criptografia de AWS banco de dados. Este guia do desenvolvedor ainda fornece informações sobre o DynamoDB Encryption Client.

Ao configurar o SDK AWS de criptografia de banco de dados para o DynamoDB, você fornece ações de atributos. Na criptografia, o SDK AWS de criptografia de banco de dados usa as ações de atributos para identificar quais atributos criptografar e assinar, quais atributos assinar (mas não criptografar) e quais ignorar. Os atributos não assinados permitidos informam ao cliente quais atributos foram excluídos das assinaturas. Na descriptografia, o SDK de criptografia AWS de banco de dados usa os atributos não assinados permitidos que você definiu para identificar quais atributos não estão incluídos nas assinaturas. As ações de atributo não são salvas no item criptografado e o SDK AWS de criptografia de banco de dados não atualiza suas ações de atributo automaticamente.

Escolha suas ações de atributos com cuidado. Em caso de dúvida, use Criptografar e assinar. Depois de usar o SDK AWS de criptografia de banco de dados para proteger seus itens, você não pode alterar um SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT atributo ou existente ENCRYPT_AND_SIGN paraDO_NOTHING. SIGN_ONLY No entanto, é possível fazer as alterações a seguir.

Considerações sobre a criptografia pesquisável

Antes de atualizar o modelo de dados, considere cuidadosamente como as atualizações podem afetar os beacons que você construiu a partir dos atributos. Depois de gravar novos registros com o beacon, não será possível atualizar a configuração do beacon. Não é possível atualizar as ações de atributos associadas aos atributos que você usou para construir beacons. Se você remover um atributo existente e o beacon associado, não poderá consultar registros existentes usando esse beacon. É possível criar novos beacons para novos campos adicionados ao registro, mas não é possível atualizar os beacons existentes para incluir o novo campo.

Considerações sobre atributos SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT

Por padrão, as chaves de partição e classificação são o único atributo incluído no contexto de criptografia. Você pode considerar definir campos adicionais para que o fornecedor da ID da chave de filial do seu AWS KMS chaveiro hierárquico possa identificar qual chave de ramificação é necessária para a descriptografia a partir SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT do contexto de criptografia. Para obter mais informações, consulte fornecedor de ID de chave de filial. Se você especificar algum SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT atributo, os atributos de partição e classificação também deverão serSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT.

nota

Para usar a ação SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT criptográfica, você deve usar a versão 3.3 ou posterior do SDK de criptografia de AWS banco de dados. Implante a nova versão para todos os leitores antes de atualizar seu modelo de dados para incluí-laSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT.

Adicionar novos SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT atributos ENCRYPT_AND_SIGNSIGN_ONLY, e

Para adicionar um novoENCRYPT_AND_SIGN,SIGN_ONLY, ou SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT atributo, defina o novo atributo em suas ações de atributo.

Você não pode remover um DO_NOTHING atributo existente e adicioná-lo novamente como um SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT atributo ENCRYPT_AND_SIGNSIGN_ONLY, ou.

Usar uma classe de dados anotada

Se você definiu as ações de atributo com um TableSchema, adicione o novo atributo à sua classe de dados anotada com a anotação . Se você não especificar uma anotação de ação de atributo para o novo atributo, o cliente criptografará e assinará o novo atributo por padrão (a menos que o atributo faça parte da chave primária). Se quiser assinar apenas o novo atributo, você deve adicionar o novo atributo com a @DynamoDBEncryptionSignAndIncludeInEncryptionContext anotação @DynamoDBEncryptionSignOnly ou.

Usar um objeto de modelo

Se você definiu manualmente suas ações de atributo, adicione o novo atributo às ações de atributo em seu modelo de objeto e especifiqueENCRYPT_AND_SIGN,SIGN_ONLY, ou SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT como a ação do atributo.

Remover atributos existentes

Se você decidir que não precisa mais de um atributo, pode parar de gravar dados nesse atributo ou removê-lo formalmente das ações de atributo. Quando você para de gravar novos dados em um atributo, o atributo ainda aparece nas ações de atributo. Isso pode ser útil se você precisar começar a usar o atributo novamente no futuro. A remoção formal do atributo das ações do atributo não o remove do conjunto de dados. O conjunto de dados ainda conterá itens que incluem esse atributo.

Para remover formalmente um DO_NOTHING atributo existenteENCRYPT_AND_SIGN,SIGN_ONLY, ouSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT, atualize suas ações de atributo.

Se você remover um atributo DO_NOTHING, não deverá remover esse atributo dos atributos não assinados permitidos. Mesmo que você não esteja mais gravando novos valores nesse atributo, o cliente ainda precisa saber que o atributo não está assinado para ler os itens existentes que contêm o atributo.

Usar uma classe de dados anotada

Se você definiu as ações de atributo com um TableSchema, remova o novo atributo da classe de dados anotada.

Usar um objeto de modelo

Se você definiu manualmente as ações de atributo, remova o atributo das ações de atributo em seu modelo de objeto.

Alterar um ENCRYPT_AND_SIGN atributo existente para SIGN_ONLY ou SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT

Para alterar um ENCRYPT_AND_SIGN atributo existente para SIGN_ONLY ouSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT, você deve atualizar suas ações de atributo. Depois de implantar a atualização, o cliente poderá verificar e descriptografar valores existentes gravados no atributo, mas só assinará novos valores gravados no atributo.

nota

Considere cuidadosamente seus requisitos de segurança antes de alterar um ENCRYPT_AND_SIGN atributo existente para SIGN_ONLY ouSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT. Qualquer atributo que possa armazenar dados confidenciais deve ser criptografado.

Usar uma classe de dados anotada

Se você definiu suas ações de atributo com umTableSchema, atualize o atributo existente para incluir a @DynamoDBEncryptionSignAndIncludeInEncryptionContext anotação @DynamoDBEncryptionSignOnly ou em sua classe de dados anotada.

Usar um objeto de modelo

Se você definiu manualmente suas ações de atributo, atualize a ação de atributo associada ao atributo existente de ENCRYPT_AND_SIGN para SIGN_ONLY ou SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT em seu modelo de objeto.

Alterar um existente SIGN_ONLY ou um SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT atributo para ENCRYPT_AND_SIGN

Para alterar um atributo existente SIGN_ONLY ou um SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT atributo paraENCRYPT_AND_SIGN, você deve atualizar suas ações de atributo. Depois de implantar a atualização, o cliente poderá verificar os valores existentes gravados no atributo, mas só criptografará e assinará novos valores gravados no atributo.

Usar uma classe de dados anotada

Se você definiu suas ações de atributo com umTableSchema, remova a @DynamoDBEncryptionSignAndIncludeInEncryptionContext anotação @DynamoDBEncryptionSignOnly ou do atributo existente.

Usar um objeto de modelo

Se você definiu manualmente suas ações de atributo, atualize a ação de atributo associada ao atributo de SIGN_ONLY ou SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT para ENCRYPT_AND_SIGN em seu modelo de objeto.

Adicionar um novo atributo DO_NOTHING

Para reduzir o risco de erro ao adicionar um novo atributo DO_NOTHING, recomendamos especificar um prefixo distinto ao nomear os atributos DO_NOTHING e, em seguida, usar esse prefixo para definir os atributos não assinados permitidos.

Você não pode remover um SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT atributo ou existente ENCRYPT_AND_SIGN da sua classe de dados anotada e depois adicionar o atributo novamente como um DO_NOTHING atributo. SIGN_ONLY Só é possível adicionar atributos DO_NOTHING totalmente novos.

As etapas que você executa para adicionar um novo atributo DO_NOTHING dependem de você ter definido os atributos não assinados permitidos explicitamente em uma lista ou com um prefixo.

Uso de um prefixo de atributos não assinados permitido

Se você definiu suas ações de atributo com um TableSchema, adicione o novo atributo DO_NOTHING à sua classe de dados anotada com a anotação @DynamoDBEncryptionDoNothing. Se você definiu manualmente as ações de atributo, atualize as ações de atributo para incluir o novo atributo. Certifique-se de configurar explicitamente o novo atributo com a ação do atributo DO_NOTHING. Você deve incluir o mesmo prefixo distinto no nome do novo atributo.

Uso de uma lista de atributos não assinados permitido
  1. Adicione o novo atributo DO_NOTHING à sua lista de atributos não assinados permitidos e implante a lista atualizada.

  2. Implante a alteração da Etapa 1.

    Não é possível passar para a Etapa 3 até que a alteração tenha se propagado para todos os hosts que precisam ler esses dados.

  3. Adicione o novo atributo DO_NOTHING às ações de atributo.

    1. Se você definiu suas ações de atributo com um TableSchema, adicione o novo atributo DO_NOTHING à sua classe de dados anotada com a anotação @DynamoDBEncryptionDoNothing.

    2. Se você definiu manualmente as ações de atributo, atualize as ações de atributo para incluir o novo atributo. Certifique-se de configurar explicitamente o novo atributo com a ação do atributo DO_NOTHING.

  4. Implante a alteração da Etapa 3.

Alterar um atributo SIGN_ONLY existente para SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT

Para alterar um atributo SIGN_ONLY existente para SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT, você deve atualizar suas ações de atributo. Depois de implantar a atualização, o cliente poderá verificar os valores existentes gravados no atributo e continuará assinando novos valores gravados no atributo. Novos valores gravados no atributo serão incluídos no contexto de criptografia.

Se você especificar algum SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT atributo, os atributos de partição e classificação também deverão serSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT.

Usar uma classe de dados anotada

Se você definiu suas ações de atributo com umTableSchema, atualize a ação de atributo associada ao atributo de @DynamoDBEncryptionSignOnly para@DynamoDBEncryptionSignAndIncludeInEncryptionContext.

Usar um objeto de modelo

Se você definiu manualmente as ações de atributo, atualize a ação do atributo correspondente ao atributo de SIGN_ONLY ou SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT no modelo de objeto.

Alterar um atributo SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT existente para SIGN_ONLY

Para alterar um atributo SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT existente para SIGN_ONLY, você deve atualizar suas ações de atributo. Depois de implantar a atualização, o cliente poderá verificar os valores existentes gravados no atributo e continuará assinando novos valores gravados no atributo. Novos valores gravados no atributo não serão incluídos no contexto de criptografia.

Antes de alterar um SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT atributo existente paraSIGN_ONLY, considere cuidadosamente como suas atualizações podem afetar a funcionalidade do seu fornecedor de ID de chave de filial.

Usar uma classe de dados anotada

Se você definiu suas ações de atributo com umTableSchema, atualize a ação de atributo associada ao atributo de @DynamoDBEncryptionSignAndIncludeInEncryptionContext para@DynamoDBEncryptionSignOnly.

Usar um objeto de modelo

Se você definiu manualmente as ações de atributo, atualize a ação do atributo correspondente ao atributo de SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT ou SIGN_ONLY no modelo de objeto.