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à.
Utilizzo del client di crittografia DynamoDB per Python
Nota
La nostra libreria di crittografia lato client è stata rinominata Database Encryption. AWS SDK Il seguente argomento fornisce informazioni sulle versioni 1. x —2. x del DynamoDB Encryption Client for Java e versioni 1. x —3. x del client di crittografia DynamoDB per Python. Per ulteriori informazioni, consulta AWS Database Encryption SDK for DynamoDB version support.
Questo argomento spiega alcune funzionalità del DynamoDB Encryption Client for Python che potrebbero non essere presenti in altre implementazioni del linguaggio di programmazione. Queste funzionalità sono progettate per semplificare l'utilizzo del DynamoDB Encryption Client nel modo più sicuro. Ti consigliamo di utilizzarle a meno che il tuo caso d'uso non sia insolito.
Per i dettagli sulla programmazione con il DynamoDB Encryption Client, consulta gli esempi in Python in questa guida, gli esempi nel repository GitHub su e la documentazione
Classi helper del client
Il client di crittografia DynamoDB per Python include diverse classi di supporto client che rispecchiano le classi Boto 3 per DynamoDB. Queste classi di supporto sono progettate per semplificare l'aggiunta di crittografia e firma all'applicazione DynamoDB esistente ed evitare i problemi più comuni, come segue:
-
Impediscono di crittografare la chiave primaria dell'elemento, aggiungendo un'azione di override per la chiave primaria all'oggetto o generando un'eccezione se l'AttributeActionsoggetto indica esplicitamente al client di crittografare
AttributeActions
la chiave primaria. Se l'azione predefinita nell'oggettoAttributeActions
èDO_NOTHING
, le classi helper del client utilizzano tale azione per la chiave primaria. Altrimenti, utilizzanoSIGN_ONLY
. -
Crea un TableInfo oggetto e popola il contesto di crittografia DynamoDB in base a una chiamata a DynamoDB. Questo aiuta a garantire che il contesto di crittografia DynamoDB sia accurato e che il client possa identificare la chiave primaria.
-
Supporta metodi, come
put_item
andget_item
, che crittografano e decrittografano in modo trasparente gli elementi della tabella quando scrivi o leggi da una tabella DynamoDB. L'unico metodo non supportato èupdate_item
.
Puoi utilizzare le classi helper del client al posto dell'interazione diretta con il componente di crittografia dell'item di livello inferiore. Utilizza queste classi a meno che non sia necessario impostare opzioni avanzate nel componente di crittografia dell'item.
Le classi helper del client includono:
-
EncryptedTable
per le applicazioni che utilizzano la risorsa Table in DynamoDB per elaborare una tabella alla volta. -
EncryptedResource
per le applicazioni che utilizzano la classe Service Resource in DynamoDB per l'elaborazione in batch. -
EncryptedClient
per applicazioni che utilizzano il client di livello inferiore in DynamoDB.
Per utilizzare le classi client helper, il chiamante deve avere l'autorizzazione a chiamare l'operazione DynamoDB sulla tabella di destinazione DescribeTable.
TableInfo classe
La TableInfo
Se utilizzi una classe helper del client, questa crea e utilizza un oggetto TableInfo
per tuo conto. Altrimenti, puoi crearne uno esplicitamente. Per vedere un esempio, consulta Utilizzo del componente di crittografia dell'item.
Quando si chiama il refresh_indexed_attributes
metodo su un TableInfo
oggetto, popola i valori delle proprietà dell'oggetto chiamando l'operazione DynamoDB DescribeTable. L'esecuzione di query sulla tabella è molto più affidabile rispetto all'impostazione come hardcoded dei nomi di indice. La TableInfo
classe include anche una encryption_context_values
proprietà che fornisce i valori richiesti per il contesto di crittografia DynamoDB.
Per utilizzare il refresh_indexed_attributes
metodo, il chiamante deve avere il permesso di chiamare l'operazione DescribeTableDynamoDB sulla tabella di destinazione.
Operazioni di attributo in Python
Le operazioni di attributo comunicano al componente di crittografia dell'item quali operazioni effettuare su ciascun attributo dell'item. Per specificare le operazioni di attributo in Python, creare un oggetto AttributeActions
con un'operazione predefinita ed eventuali eccezioni per determinati attributi. I valori validi vengono definiti nel tipo enumerato CryptoAction
.
Importante
Dopo aver utilizzato le azioni degli attributi per crittografare gli elementi della tabella, l'aggiunta o la rimozione di attributi dal modello di dati potrebbe causare un errore di convalida della firma che impedisce di decrittografare i dati. Per una spiegazione dettagliata, consulta Modifica del modello di dati.
DO_NOTHING = 0 SIGN_ONLY = 1 ENCRYPT_AND_SIGN = 2
Ad esempio, questo oggetto AttributeActions
stabilisce l'operazione ENCRYPT_AND_SIGN
come predefinita per tutti gli attributi e specifica le eccezioni per gli attributi ISBN
e PublicationYear
.
actions = AttributeActions( default_action=CryptoAction.ENCRYPT_AND_SIGN, attribute_actions={ 'ISBN': CryptoAction.DO_NOTHING, 'PublicationYear': CryptoAction.SIGN_ONLY } )
Se utilizzi una classe helper del client, non è necessario specificare un'operazione di attributo per gli attributi della chiave primaria. Le classi helper del client impediscono la crittografia della chiave primaria.
Se non utilizzi una classe helper del client e l'operazione predefinita è ENCRYPT_AND_SIGN
, devi specificare un'operazione per la chiave primaria. L'operazione consigliata per le chiavi primarie è SIGN_ONLY
. Per semplificare questa operazione, utilizzate il set_index_keys
metodo, che utilizza SIGN _ ONLY per le chiavi primarie, o DO_NOTHING, quando questa è l'azione predefinita.
avvertimento
Non crittografare gli attributi che vengono usati per la chiave primaria. Devono rimanere in testo semplice in modo che DynamoDB possa trovare l'elemento senza eseguire una scansione completa della tabella.
actions = AttributeActions( default_action=CryptoAction.ENCRYPT_AND_SIGN, ) actions.set_index_keys(*table_info.protected_index_keys())