

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
<a name="ddb-update-data-model"></a>


****  

|  | 
| --- |
| 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](legacy-dynamodb-encryption-client.md). | 

[Ao configurar o SDK AWS de criptografia de banco de dados para o DynamoDB, você fornece ações de atributos.](concepts.md#crypt-actions) 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](ddb-java-using.md#allowed-unauth) 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` para`DO_NOTHING`. `SIGN_ONLY` No entanto, é possível fazer as alterações a seguir.
+ [Adicionar novos `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atributos `ENCRYPT_AND_SIGN``SIGN_ONLY`, e](#ddb-add-auth-attribute)
+ [Remover atributos existentes](#ddb-remove-attribute)
+ [Alterar um `ENCRYPT_AND_SIGN` atributo existente para `SIGN_ONLY` ou `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`](#ddb-encrypt-to-sign)
+ [Alterar um existente `SIGN_ONLY` ou um `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atributo para `ENCRYPT_AND_SIGN`](#ddb-sign-to-encrypt)
+ [Adicionar um novo atributo `DO_NOTHING`](#ddb-add-unauth-attribute)
+ [Alterar um atributo `SIGN_ONLY` existente para `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`](#ddb-signOnly-to-signInclude)
+ [Alterar um atributo `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` existente para `SIGN_ONLY`](#ddb-signInclude-to-signOnly)

**Considerações sobre a criptografia pesquisável**  
Antes de atualizar o modelo de dados, considere cuidadosamente como as atualizações podem afetar os [beacons](beacons.md) 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](use-hierarchical-keyring.md) 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](use-hierarchical-keyring.md#branch-key-id-supplier). Se você especificar algum `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atributo, os atributos de partição e classificação também deverão ser`SIGN_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](#ddb-update-data-model) para incluí-la`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`.

## Adicionar novos `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atributos `ENCRYPT_AND_SIGN``SIGN_ONLY`, e
<a name="ddb-add-auth-attribute"></a>

Para adicionar um novo`ENCRYPT_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_SIGN``SIGN_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 especifique`ENCRYPT_AND_SIGN`,`SIGN_ONLY`, ou `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` como a ação do atributo.

## Remover atributos existentes
<a name="ddb-remove-attribute"></a>

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 existente`ENCRYPT_AND_SIGN`,`SIGN_ONLY`, ou`SIGN_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](ddb-java-using.md#allowed-unauth). 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`
<a name="ddb-encrypt-to-sign"></a>

Para alterar um `ENCRYPT_AND_SIGN` atributo existente para `SIGN_ONLY` ou`SIGN_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` ou`SIGN_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 um`TableSchema`, 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`
<a name="ddb-sign-to-encrypt"></a>

Para alterar um atributo existente `SIGN_ONLY` ou um `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atributo para`ENCRYPT_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 um`TableSchema`, 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`
<a name="ddb-add-unauth-attribute"></a>

[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](ddb-java-using.md#allowed-unauth).

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.

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

1. 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`.

   1. 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`.

1. Implante a alteração da **Etapa 3**.

## Alterar um atributo `SIGN_ONLY` existente para `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`
<a name="ddb-signOnly-to-signInclude"></a>

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](concepts.md#encryption-context).

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

**Usar uma classe de dados anotada**  
Se você definiu suas ações de atributo com um`TableSchema`, 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`
<a name="ddb-signInclude-to-signOnly"></a>

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](concepts.md#encryption-context).

Antes de alterar um `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atributo existente para`SIGN_ONLY`, considere cuidadosamente como suas atualizações podem afetar a funcionalidade do seu [fornecedor de ID de chave de filial](use-hierarchical-keyring.md#branch-key-id-supplier).

**Usar uma classe de dados anotada**  
Se você definiu suas ações de atributo com um`TableSchema`, 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.