

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Aggiornamento del modello di dati
<a name="ddb-update-data-model"></a>


****  

|  | 
| --- |
| La nostra libreria di crittografia lato client è stata rinominata Database Encryption SDK. AWS Questa guida per sviluppatori fornisce ancora informazioni sul [DynamoDB Encryption Client](legacy-dynamodb-encryption-client.md). | 

[Quando configuri il AWS Database Encryption SDK per DynamoDB, fornisci azioni relative agli attributi.](concepts.md#crypt-actions) Su encrypt, AWS Database Encryption SDK utilizza le azioni degli attributi per identificare quali attributi crittografare e firmare, quali attributi firmare (ma non crittografare) e quali ignorare. È inoltre possibile definire [gli attributi non firmati consentiti](ddb-java-using.md#allowed-unauth) per indicare in modo esplicito al client quali attributi sono esclusi dalle firme. In fase di decrittografia, AWS Database Encryption SDK utilizza gli attributi non firmati consentiti definiti dall'utente per identificare gli attributi non inclusi nelle firme. Le azioni relative agli attributi non vengono salvate nell'elemento crittografato e AWS Database Encryption SDK non aggiorna automaticamente le azioni relative agli attributi.

Scegli attentamente le operazioni di attributo. In caso di dubbio, usa **Encrypt and sign (Crittografa e firma)**. Dopo aver utilizzato il AWS Database Encryption SDK per proteggere gli elementi, non è possibile modificare un attributo esistente `ENCRYPT_AND_SIGN` o un `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` attributo a. `SIGN_ONLY` `DO_NOTHING` Tuttavia, puoi apportare in sicurezza le seguenti modifiche.
+ [Aggiungi nuovi `ENCRYPT_AND_SIGN` `SIGN_ONLY` attributi e `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`](#ddb-add-auth-attribute)
+ [Rimuovi gli attributi esistenti](#ddb-remove-attribute)
+ [Modificate un `ENCRYPT_AND_SIGN` attributo esistente in `SIGN_ONLY` o `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`](#ddb-encrypt-to-sign)
+ [Modificate un `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` attributo esistente `SIGN_ONLY` o in `ENCRYPT_AND_SIGN`](#ddb-sign-to-encrypt)
+ [Aggiungere un nuovo `DO_NOTHING` attributo](#ddb-add-unauth-attribute)
+ [Modificare un `SIGN_ONLY` attributo esistente in `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`](#ddb-signOnly-to-signInclude)
+ [Modificate un `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` attributo esistente in `SIGN_ONLY`](#ddb-signInclude-to-signOnly)

**Considerazioni sulla crittografia ricercabile**  
Prima di aggiornare il modello di dati, valuta attentamente in che modo gli aggiornamenti potrebbero influire sui [beacon](beacons.md) che hai creato a partire dagli attributi. Dopo aver scritto nuovi record con un beacon, non è possibile aggiornare la configurazione del beacon. Non è possibile aggiornare le azioni relative agli attributi associati agli attributi utilizzati per costruire i beacon. Se rimuovi un attributo esistente e il beacon associato, non sarai in grado di interrogare i record esistenti utilizzando quel beacon. È possibile creare nuovi beacon per i nuovi campi che si aggiungono al record, ma non è possibile aggiornare i beacon esistenti per includere il nuovo campo.

**Considerazioni sugli attributi `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`**  
Per impostazione predefinita, le chiavi di partizione e ordinamento sono l'unico attributo incluso nel contesto di crittografia. Potresti prendere in considerazione la definizione di campi aggiuntivi `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` in modo che il fornitore dell'ID della chiave di filiale per il tuo [portachiavi AWS KMS gerarchico](use-hierarchical-keyring.md) possa identificare quale chiave di filiale è necessaria per la decrittografia dal contesto di crittografia. [Per ulteriori informazioni, consulta Branch Key ID supplier.](use-hierarchical-keyring.md#branch-key-id-supplier) Se si specificano `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` degli attributi, devono esserlo `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` anche gli attributi di partizione e ordinamento.

**Nota**  
Per utilizzare l'azione `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` crittografica, è necessario utilizzare la versione 3.3 o successiva di AWS Database Encryption SDK. Distribuisci la nuova versione a tutti i lettori prima di [aggiornare il modello di dati](#ddb-update-data-model) per includere. `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`

## Aggiungi nuovi `ENCRYPT_AND_SIGN` `SIGN_ONLY` attributi e `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`
<a name="ddb-add-auth-attribute"></a>

Per aggiungere un nuovo `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` attributo `ENCRYPT_AND_SIGN``SIGN_ONLY`, o, definisci il nuovo attributo nelle azioni relative agli attributi.

Non è possibile rimuovere un `DO_NOTHING` attributo esistente e aggiungerlo nuovamente come `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` attributo `ENCRYPT_AND_SIGN``SIGN_ONLY`,, o.

**Utilizzo di una classe di dati annotata**  
Se hai definito le azioni degli attributi con a`TableSchema`, aggiungi il nuovo attributo alla tua classe di dati annotata. Se non specificate un'annotazione relativa all'azione degli attributi per il nuovo attributo, il client crittograferà e firmerà il nuovo attributo per impostazione predefinita (a meno che l'attributo non faccia parte della chiave primaria). Se si desidera firmare solo il nuovo attributo, è necessario aggiungere il nuovo attributo con l'annotazione `@DynamoDBEncryptionSignOnly` o`@DynamoDBEncryptionSignAndIncludeInEncryptionContext`.

**Utilizzo di un modello a oggetti**  
Se avete definito manualmente le azioni degli attributi, aggiungete il nuovo attributo alle azioni degli attributi nel modello a oggetti e specificate `ENCRYPT_AND_SIGN``SIGN_ONLY`, o `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` come azione di attributo.

## Rimuovi gli attributi esistenti
<a name="ddb-remove-attribute"></a>

Se decidi di non aver più bisogno di un attributo, puoi smettere di scrivere dati su quell'attributo oppure puoi rimuoverlo formalmente dalle tue azioni relative agli attributi. Quando smetti di scrivere nuovi dati su un attributo, l'attributo viene ancora visualizzato nelle tue azioni relative agli attributi. Ciò può essere utile se è necessario ricominciare a utilizzare l'attributo in futuro. La rimozione formale dell'attributo dalle azioni relative agli attributi non lo rimuove dal set di dati. Il set di dati conterrà comunque elementi che includono quell'attributo.

Per rimuovere formalmente un `DO_NOTHING` attributo`ENCRYPT_AND_SIGN`,, o esistente `SIGN_ONLY``SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`, aggiorna le azioni relative agli attributi.

Se rimuovi un `DO_NOTHING` attributo, non devi rimuovere quell'attributo dagli attributi non [firmati consentiti](ddb-java-using.md#allowed-unauth). Anche se non state più scrivendo nuovi valori per quell'attributo, il client deve comunque sapere che l'attributo non è firmato per leggere gli elementi esistenti che lo contengono.

**Utilizzo di una classe di dati annotata**  
Se hai definito le azioni degli attributi con a`TableSchema`, rimuovi l'attributo dalla classe di dati annotata.

**Utilizzo di un modello a oggetti**  
Se avete definito manualmente le azioni relative agli attributi, rimuovete l'attributo dalle azioni degli attributi nel modello a oggetti.

## Modificate un `ENCRYPT_AND_SIGN` attributo esistente in `SIGN_ONLY` o `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`
<a name="ddb-encrypt-to-sign"></a>

Per modificare un `ENCRYPT_AND_SIGN` attributo esistente in `SIGN_ONLY` o`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`, è necessario aggiornare le azioni relative agli attributi. Dopo aver distribuito l'aggiornamento, il client sarà in grado di verificare e decrittografare i valori esistenti scritti nell'attributo, ma firmerà solo i nuovi valori scritti nell'attributo.

**Nota**  
Valuta attentamente i requisiti di sicurezza prima di modificare un `ENCRYPT_AND_SIGN` attributo esistente in o. `SIGN_ONLY` `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` Qualsiasi attributo in grado di memorizzare dati sensibili deve essere crittografato.

**Utilizzo di una classe di dati annotata**  
Se hai definito le azioni degli attributi con a`TableSchema`, aggiorna l'attributo esistente per includere l'`@DynamoDBEncryptionSignAndIncludeInEncryptionContext`annotazione `@DynamoDBEncryptionSignOnly` o nella classe di dati annotata.

**Utilizzo di un modello a oggetti**  
Se avete definito manualmente le azioni relative agli attributi, aggiornate l'azione dell'attributo associata all'attributo esistente da `SIGN_ONLY` o `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` nel modello `ENCRYPT_AND_SIGN` a oggetti.

## Modificate un `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` attributo esistente `SIGN_ONLY` o in `ENCRYPT_AND_SIGN`
<a name="ddb-sign-to-encrypt"></a>

Per modificare un `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` attributo esistente `SIGN_ONLY` o in`ENCRYPT_AND_SIGN`, è necessario aggiornare le azioni relative agli attributi. Dopo aver distribuito l'aggiornamento, il client sarà in grado di verificare i valori esistenti scritti nell'attributo e crittograferà e firmerà i nuovi valori scritti nell'attributo.

**Utilizzo di una classe di dati annotata**  
Se hai definito le azioni degli attributi con a`TableSchema`, rimuovi l'`@DynamoDBEncryptionSignAndIncludeInEncryptionContext`annotazione `@DynamoDBEncryptionSignOnly` or dall'attributo esistente.

**Utilizzo di un modello a oggetti**  
Se avete definito manualmente le azioni relative agli attributi, aggiornate l'azione dell'attributo associata all'attributo from `SIGN_ONLY` o `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` to `ENCRYPT_AND_SIGN` nel modello a oggetti.

## Aggiungere un nuovo `DO_NOTHING` attributo
<a name="ddb-add-unauth-attribute"></a>

[Per ridurre il rischio di errori durante l'aggiunta di un nuovo `DO_NOTHING` attributo, consigliamo di specificare un prefisso distinto quando si assegnano i nomi `DO_NOTHING` agli attributi e quindi di utilizzare tale prefisso per definire gli attributi non firmati consentiti.](ddb-java-using.md#allowed-unauth)

Non è possibile rimuovere un `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` attributo o esistente `ENCRYPT_AND_SIGN` dalla classe di dati annotata e quindi aggiungere nuovamente l'attributo come attributo. `SIGN_ONLY` `DO_NOTHING` È possibile aggiungere solo `DO_NOTHING` attributi completamente nuovi.

I passaggi da eseguire per aggiungere un nuovo `DO_NOTHING` attributo dipendono dal fatto che gli attributi non firmati consentiti siano stati definiti esplicitamente in un elenco o con un prefisso.

**Utilizzo di un prefisso consentito per gli attributi non firmati**  
Se hai definito le azioni degli attributi con a`TableSchema`, aggiungi il nuovo `DO_NOTHING` attributo alla classe di dati annotata con l'annotazione. `@DynamoDBEncryptionDoNothing` Se hai definito manualmente le azioni relative agli attributi, aggiorna le azioni degli attributi per includere il nuovo attributo. Assicurati di configurare in modo esplicito il nuovo attributo con l'azione dell'`DO_NOTHING`attributo. È necessario includere lo stesso prefisso distinto nel nome del nuovo attributo.

**Utilizzo di un elenco di attributi non firmati consentiti**

1. Aggiungi il nuovo `DO_NOTHING` attributo all'elenco degli attributi non firmati consentiti e distribuisci l'elenco aggiornato.

1. **Implementa la modifica dalla Fase 1.**

   Non è possibile passare alla **Fase 3** finché la modifica non si è propagata a tutti gli host che devono leggere questi dati.

1. Aggiungi il nuovo `DO_NOTHING` attributo alle tue azioni relative agli attributi.

   1. Se hai definito le azioni degli attributi con a`TableSchema`, aggiungi il nuovo `DO_NOTHING` attributo alla classe di dati annotata con l'`@DynamoDBEncryptionDoNothing`annotazione.

   1. Se hai definito manualmente le azioni relative agli attributi, aggiorna le azioni degli attributi per includere il nuovo attributo. Assicurati di configurare in modo esplicito il nuovo attributo con l'azione dell'`DO_NOTHING`attributo.

1. Implementa la modifica dalla **Fase** 3.

## Modificare un `SIGN_ONLY` attributo esistente in `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`
<a name="ddb-signOnly-to-signInclude"></a>

Per modificare un `SIGN_ONLY` attributo esistente in`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`, è necessario aggiornare le azioni relative agli attributi. Dopo aver distribuito l'aggiornamento, il client sarà in grado di verificare i valori esistenti scritti nell'attributo e continuerà a firmare nuovi valori scritti nell'attributo. I nuovi valori scritti nell'attributo verranno inclusi nel [contesto di crittografia](concepts.md#encryption-context).

Se si specificano `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` degli attributi, devono esserlo `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` anche gli attributi di partizione e ordinamento.

**Utilizzo di una classe di dati annotata**  
Se hai definito le azioni degli attributi con a`TableSchema`, aggiorna l'azione dell'attributo associata all'attributo da `@DynamoDBEncryptionSignOnly` a`@DynamoDBEncryptionSignAndIncludeInEncryptionContext`.

**Utilizzo di un modello a oggetti**  
Se avete definito manualmente le azioni relative agli attributi, aggiornate l'azione dell'attributo associata all'attributo da `SIGN_ONLY` a `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` nel modello a oggetti.

## Modificate un `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` attributo esistente in `SIGN_ONLY`
<a name="ddb-signInclude-to-signOnly"></a>

Per modificare un `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` attributo esistente in`SIGN_ONLY`, è necessario aggiornare le azioni relative agli attributi. Dopo aver distribuito l'aggiornamento, il client sarà in grado di verificare i valori esistenti scritti nell'attributo e continuerà a firmare nuovi valori scritti nell'attributo. I nuovi valori scritti nell'attributo non verranno inclusi nel [contesto di crittografia](concepts.md#encryption-context).

Prima di modificare un `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` attributo esistente in`SIGN_ONLY`, valuta attentamente in che modo gli aggiornamenti potrebbero influire sulla funzionalità del [fornitore dell'ID della chiave di filiale](use-hierarchical-keyring.md#branch-key-id-supplier).

**Utilizzo di una classe di dati annotata**  
Se hai definito le azioni degli attributi con a`TableSchema`, aggiorna l'azione dell'attributo associata all'attributo da `@DynamoDBEncryptionSignAndIncludeInEncryptionContext` a`@DynamoDBEncryptionSignOnly`.

**Utilizzo di un modello a oggetti**  
Se avete definito manualmente le azioni relative agli attributi, aggiornate l'azione dell'attributo associata all'attributo da `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` a `SIGN_ONLY` nel modello a oggetti.