

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Actualización de su modelo de datos
<a name="ddb-update-data-model"></a>


****  

|  | 
| --- |
| Se cambió el nombre de nuestra biblioteca de cifrado del lado del cliente por el de SDK de cifrado de bases de datos. AWS En esta guía para desarrolladores, se sigue proporcionando información sobre el [cliente de cifrado de DynamoDB](legacy-dynamodb-encryption-client.md). | 

[Al configurar el SDK de cifrado AWS de bases de datos para DynamoDB, proporciona acciones de atributos.](concepts.md#crypt-actions) Al cifrar, el SDK de cifrado de AWS bases de datos utiliza las acciones de atributos para identificar qué atributos cifrar y firmar, qué atributos firmar (pero no cifrar) y cuáles ignorar. También [se definen los atributos no firmados permitidos](ddb-java-using.md#allowed-unauth) para indicar explícitamente al cliente qué atributos están excluidos de las firmas. Al descifrar, el SDK de cifrado AWS de bases de datos utiliza los atributos no firmados permitidos que usted definió para identificar qué atributos no están incluidos en las firmas. Las acciones de los atributos no se guardan en el elemento cifrado y el SDK de cifrado AWS de bases de datos no actualiza las acciones de los atributos automáticamente.

Elija cuidadosamente sus acciones de atributo. En caso de duda, use **Encrypt and sign**. Una vez que haya utilizado el SDK de cifrado de AWS bases de datos para proteger sus elementos, no podrá cambiar un `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atributo existente `ENCRYPT_AND_SIGN` o uno a`DO_NOTHING`. `SIGN_ONLY` Puede hacer los siguientes cambios.
+ [Agregue `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atributos nuevos `ENCRYPT_AND_SIGN` y `SIGN_ONLY`](#ddb-add-auth-attribute)
+ [Elimine los atributos existentes](#ddb-remove-attribute)
+ [Cambie un `ENCRYPT_AND_SIGN` atributo existente a `SIGN_ONLY` o `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`](#ddb-encrypt-to-sign)
+ [Cambie un `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atributo `SIGN_ONLY` o existente a `ENCRYPT_AND_SIGN`](#ddb-sign-to-encrypt)
+ [Añada un atributo `DO_NOTHING` nuevo](#ddb-add-unauth-attribute)
+ [Cambio de un atributo `SIGN_ONLY` existente a `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`](#ddb-signOnly-to-signInclude)
+ [Cambio de un atributo `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` existente a `SIGN_ONLY`](#ddb-signInclude-to-signOnly)

**Consideraciones sobre el cifrado con capacidad de búsqueda**  
Antes de actualizar el modelo de datos, considere detenidamente cómo podrían afectar las actualizaciones a las [balizas](beacons.md) que haya creado a partir de los atributos. Una vez que haya escrito nuevos registros con una baliza, no puede actualizar la configuración de la baliza. No puede actualizar las acciones de los atributos asociadas a los atributos que utilizó para construir balizas. Si elimina un atributo existente y su baliza asociada, no podrá consultar los registros existentes con esa baliza. Puede crear balizas nuevas para los campos nuevos que añada a su registro, pero no puede actualizar las balizas existentes para incluir el nuevo campo.

**Consideraciones sobre los `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atributos**  
De forma predeterminada, la partición y las claves de clasificación son el único atributo incluido en el contexto de cifrado. Podría considerar la posibilidad de definir campos adicionales para `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` que el proveedor del identificador de clave de rama de su conjunto de [claves AWS KMS jerárquicas pueda identificar](use-hierarchical-keyring.md) qué clave de rama es necesaria para el descifrado a partir del contexto de cifrado. Para obtener más información, consulte el proveedor de ID de [clave de sucursal](use-hierarchical-keyring.md#branch-key-id-supplier). Si especifica algún `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atributo, los atributos de partición y ordenación también deben serlo`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`.

**nota**  
Para utilizar la acción `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` criptográfica, debe utilizar la versión 3.3 o posterior del SDK de cifrado de AWS bases de datos. Implemente la nueva versión en todos los lectores antes de [actualizar su modelo de datos](#ddb-update-data-model) para `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` incluirla.

## Agregue `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atributos nuevos `ENCRYPT_AND_SIGN` y `SIGN_ONLY`
<a name="ddb-add-auth-attribute"></a>

Para añadir un `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atributo o un nuevo `ENCRYPT_AND_SIGN` atributo, defina el nuevo atributo en las acciones de sus atributos. `SIGN_ONLY`

No puede eliminar un `DO_NOTHING` atributo existente y volver a añadirlo como `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atributo `ENCRYPT_AND_SIGN``SIGN_ONLY`, o.

**Uso de una clase de datos anotada**  
Si ha definido las acciones de los atributos con una`TableSchema`, añada el nuevo atributo a la clase de datos anotada. Si no especificas una anotación de acción de atributo para el nuevo atributo, el cliente cifrará y firmará el nuevo atributo de forma predeterminada (a menos que el atributo forme parte de la clave principal). Si solo quiere firmar el nuevo atributo, debe añadirlo con la `@DynamoDBEncryptionSignAndIncludeInEncryptionContext` anotación `@DynamoDBEncryptionSignOnly` o.

**Uso de un objeto de modelo**  
Si ha definido manualmente las acciones de los atributos, añada el nuevo atributo a las acciones de los atributos del modelo de objetos y especifique `ENCRYPT_AND_SIGN``SIGN_ONLY`, o `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` como acción de atributo.

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

Si decide que ya no necesita un atributo, puede dejar de escribir datos en ese atributo o puede eliminarlo formalmente de las acciones de sus atributos. Cuando dejas de escribir nuevos datos en un atributo, el atributo sigue apareciendo en las acciones de tus atributos. Esto puede resultar útil si necesita volver a utilizar el atributo en el futuro. Si eliminas formalmente el atributo de tus acciones de atributos, no lo eliminas de tu conjunto de datos. Su conjunto de datos seguirá conteniendo elementos que incluyan ese atributo.

Para eliminar formalmente un atributo `ENCRYPT_AND_SIGN``SIGN_ONLY`, o un `DO_NOTHING` atributo existente`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`, actualice las acciones de sus atributos.

Si elimina un atributo `DO_NOTHING`, no debe eliminarlo de los [atributos no firmados permitidos](ddb-java-using.md#allowed-unauth). Aunque ya no escriba valores nuevos en ese atributo, el cliente necesitará saber que el atributo no está firmado para poder leer los elementos existentes que lo contienen.

**Uso de una clase de datos anotada**  
Si ha definido las acciones de los atributos con una `TableSchema`, elimine el atributo de la clase de datos anotada.

**Uso de un objeto de modelo**  
Si definió manualmente las acciones de los atributos, elimine el atributo de las acciones de los atributos del modelo de objetos.

## Cambie un `ENCRYPT_AND_SIGN` atributo existente a `SIGN_ONLY` o `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`
<a name="ddb-encrypt-to-sign"></a>

Para cambiar un `ENCRYPT_AND_SIGN` atributo existente a `SIGN_ONLY` o`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`, debe actualizar las acciones de su atributo. Tras implementar la actualización, el cliente podrá verificar y descifrar los valores existentes escritos en el atributo, pero solo firmará los nuevos valores escritos en el atributo.

**nota**  
Tenga en cuenta detenidamente sus requisitos de seguridad antes de cambiar un `ENCRYPT_AND_SIGN` atributo existente a `SIGN_ONLY` o`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`. Cualquier atributo que pueda almacenar datos confidenciales debe estar cifrado.

**Uso de una clase de datos anotada**  
Si ha definido las acciones de los atributos con una`TableSchema`, actualice el atributo existente para incluir la `@DynamoDBEncryptionSignAndIncludeInEncryptionContext` anotación `@DynamoDBEncryptionSignOnly` o en la clase de datos anotada.

**Uso de un objeto de modelo**  
Si ha definido manualmente las acciones de atributo, actualice la acción de atributo asociada al atributo existente desde `ENCRYPT_AND_SIGN` `SIGN_ONLY` o `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` en su modelo de objetos.

## Cambie un `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atributo `SIGN_ONLY` o existente a `ENCRYPT_AND_SIGN`
<a name="ddb-sign-to-encrypt"></a>

Para cambiar un `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atributo `SIGN_ONLY` o un atributo existente a`ENCRYPT_AND_SIGN`, debe actualizar las acciones de sus atributos. Tras implementar la actualización, el cliente podrá comprobar los valores existentes escritos en el atributo y cifrará y firmará los nuevos valores escritos en el atributo.

**Uso de una clase de datos anotada**  
Si ha definido las acciones de sus atributos con una`TableSchema`, elimine la `@DynamoDBEncryptionSignAndIncludeInEncryptionContext` anotación `@DynamoDBEncryptionSignOnly` o del atributo existente.

**Uso de un objeto de modelo**  
Si ha definido manualmente las acciones de atributo, actualice la acción de atributo asociada al atributo desde `SIGN_ONLY` o `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` hacia `ENCRYPT_AND_SIGN` en su modelo de objetos.

## Añada un atributo `DO_NOTHING` nuevo
<a name="ddb-add-unauth-attribute"></a>

Para reducir el riesgo de errores al añadir un atributo `DO_NOTHING` nuevo, le recomendamos que especifique un prefijo distinto al asignar un nombre a los atributos `DO_NOTHING` y, a continuación, utilizar ese prefijo para definir los atributos no [firmados permitidos](ddb-java-using.md#allowed-unauth).

No puede eliminar un `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atributo o atributo existente `ENCRYPT_AND_SIGN` de la clase de datos anotada y`SIGN_ONLY`, a continuación, volver a añadir el atributo como `DO_NOTHING` atributo. Solo puede agregar atributos `DO_NOTHING` completamente nuevos.

Los pasos que siga para añadir un atributo `DO_NOTHING` nuevo dependerán de si ha definido los atributos no firmados permitidos de forma explícita en una lista o con un prefijo.

**Utilizar un prefijo de atributos no firmados permitido**  
Si ha definido las acciones de los atributos con un `TableSchema`, añada el atributo `DO_NOTHING` nuevo a la clase de datos anotada con la anotación `@DynamoDBEncryptionDoNothing`. Si ha definido manualmente las acciones de los atributos, actualice las acciones de los atributos para incluir el nuevo atributo. Asegúrese de configurar explícitamente el nuevo atributo con la acción de atributo `DO_NOTHING`. Debe incluir el mismo prefijo distinto en el nombre del nuevo atributo.

**Utilizar una lista de atributos no firmados permitidos**

1. Añada el atributo `DO_NOTHING` nuevo a la lista de atributos no firmados permitidos e implemente la lista actualizada.

1. Implemente el cambio desde el **paso 1**.

   No puede continuar con el **paso 3** hasta que el cambio se haya propagado a todos los hosts que necesiten leer estos datos.

1. Añada el atributo `DO_NOTHING` nuevo a las acciones de sus atributos.

   1. Si ha definido las acciones de los atributos con un `TableSchema`, añada el atributo `DO_NOTHING` nuevo a la clase de datos anotada con la anotación `@DynamoDBEncryptionDoNothing`.

   1. Si ha definido manualmente las acciones de los atributos, actualice las acciones de los atributos para incluir el nuevo atributo. Asegúrese de configurar explícitamente el nuevo atributo con la acción de atributo `DO_NOTHING`.

1. Implemente el cambio desde el **paso 3**.

## Cambio de un atributo `SIGN_ONLY` existente a `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`
<a name="ddb-signOnly-to-signInclude"></a>

Para cambiar un atributo existente `SIGN_ONLY` a `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`, debe actualizar las acciones del atributo. Tras implementar la actualización, el cliente podrá comprobar los valores existentes escritos en el atributo y seguirá firmando los nuevos valores escritos en el atributo. Los nuevos valores escritos en el atributo se incluirán en el [contexto de cifrado](concepts.md#encryption-context).

Si especifica algún `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atributo, los atributos de partición y ordenación también deben serlo`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`.

**Uso de una clase de datos anotada**  
Si ha definido sus acciones de atributo con una`TableSchema`, actualice la acción de atributo asociada al atributo de `@DynamoDBEncryptionSignOnly` a`@DynamoDBEncryptionSignAndIncludeInEncryptionContext`.

**Uso de un objeto de modelo**  
Si ha definido manualmente las acciones de atributo, actualice la acción de atributo asociada al atributo de `SIGN_ONLY` a `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` en su modelo de objetos.

## Cambio de un atributo `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` existente a `SIGN_ONLY`
<a name="ddb-signInclude-to-signOnly"></a>

Para cambiar un atributo existente `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` a `SIGN_ONLY`, debe actualizar las acciones del atributo. Tras implementar la actualización, el cliente podrá comprobar los valores existentes escritos en el atributo y seguirá firmando los nuevos valores escritos en el atributo. Los nuevos valores escritos en el atributo no se incluirán en el [contexto de cifrado](concepts.md#encryption-context).

Antes de cambiar un `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atributo existente a`SIGN_ONLY`, considere detenidamente cómo sus actualizaciones podrían afectar a la funcionalidad de su [proveedor de ID de clave de sucursal](use-hierarchical-keyring.md#branch-key-id-supplier).

**Uso de una clase de datos anotada**  
Si ha definido sus acciones de atributo con una`TableSchema`, actualice la acción de atributo asociada al atributo de `@DynamoDBEncryptionSignAndIncludeInEncryptionContext` a`@DynamoDBEncryptionSignOnly`.

**Uso de un objeto de modelo**  
Si ha definido manualmente las acciones de atributo, actualice la acción de atributo asociada al atributo de `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` a `SIGN_ONLY` en su modelo de objetos.