Aggiornamento del modello di dati - AWS SDK per la crittografia del database

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

La nostra libreria di crittografia lato client è stata rinominata Database Encryption SDK. AWS Questa guida per sviluppatori fornisce ancora informazioni sul DynamoDB Encryption Client.

Quando configuri il AWS Database Encryption SDK per DynamoDB, fornisci azioni relative agli attributi. 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 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.

Considerazioni sulla crittografia ricercabile

Prima di aggiornare il modello di dati, valuta attentamente in che modo gli aggiornamenti potrebbero influire sui beacon 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 possa identificare quale chiave di filiale è necessaria per la decrittografia dal contesto di crittografia. Per ulteriori informazioni, consulta 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 per includere. SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT

Aggiungi nuovi ENCRYPT_AND_SIGNSIGN_ONLY attributi e SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT

Per aggiungere un nuovo SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT attributo ENCRYPT_AND_SIGNSIGN_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_SIGNSIGN_ONLY,, o.

Utilizzo di una classe di dati annotata

Se hai definito le azioni degli attributi con aTableSchema, 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_SIGNSIGN_ONLY, o SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT come azione di attributo.

Rimuovi gli attributi esistenti

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 attributoENCRYPT_AND_SIGN,, o esistente SIGN_ONLYSIGN_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. 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 aTableSchema, 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

Per modificare un ENCRYPT_AND_SIGN attributo esistente in SIGN_ONLY oSIGN_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 aTableSchema, aggiorna l'attributo esistente per includere l'@DynamoDBEncryptionSignAndIncludeInEncryptionContextannotazione @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

Per modificare un SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT attributo esistente SIGN_ONLY o inENCRYPT_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 aTableSchema, rimuovi l'@DynamoDBEncryptionSignAndIncludeInEncryptionContextannotazione @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

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.

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 aTableSchema, 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_NOTHINGattributo. È 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.

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

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

    1. Se hai definito le azioni degli attributi con aTableSchema, aggiungi il nuovo DO_NOTHING attributo alla classe di dati annotata con l'@DynamoDBEncryptionDoNothingannotazione.

    2. 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_NOTHINGattributo.

  4. Implementa la modifica dalla Fase 3.

Modificare un SIGN_ONLY attributo esistente in SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT

Per modificare un SIGN_ONLY attributo esistente inSIGN_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.

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 aTableSchema, 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

Per modificare un SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT attributo esistente inSIGN_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.

Prima di modificare un SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT attributo esistente inSIGN_ONLY, valuta attentamente in che modo gli aggiornamenti potrebbero influire sulla funzionalità del fornitore dell'ID della chiave di filiale.

Utilizzo di una classe di dati annotata

Se hai definito le azioni degli attributi con aTableSchema, 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.