

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

# Rust
<a name="ddb-rust"></a>

Questo argomento spiega come installare e utilizzare la versione 1. *x* della libreria di crittografia lato client Rust per DynamoDB. Per i dettagli sulla programmazione con AWS Database Encryption SDK per DynamoDB, consulta gli esempi di [Rust nel](https://github.com/aws/aws-database-encryption-sdk-dynamodb/blob/main/releases/rust/db_esdk/examples/) aws-database-encryption-sdk repository -dynamodb su. GitHub

Tutte le implementazioni del linguaggio di programmazione del AWS Database Encryption SDK per DynamoDB sono interoperabili.

**Topics**
+ [Prerequisiti](#ddb-rust-prerequisites)
+ [Installazione](#ddb-rust-install)
+ [Utilizzo del client Rust](ddb-rust-using.md)

## Prerequisiti
<a name="ddb-rust-prerequisites"></a>

Prima di installare la libreria di crittografia lato client Rust per DynamoDB, assicurati di avere i seguenti prerequisiti.

**Installa Rust and Cargo**  
Installa l'attuale versione stabile di [Rust](https://www.rust-lang.org/) usando [rustup](https://rustup.rs/).  
Per ulteriori informazioni sul download e l'installazione di rustup, consulta [le procedure di installazione](https://doc.rust-lang.org/cargo/getting-started/installation.html) in The Cargo Book.

## Installazione
<a name="ddb-rust-install"></a>

La libreria di crittografia lato client Rust per DynamoDB è disponibile come cassa su Crates.io. [aws-db-esdk](https://crates.io/crates/aws-db-esdk) [Per i dettagli sull'installazione e la creazione della libreria, consultate il file README.md nel repository -dynamodb.](https://github.com/aws/aws-database-encryption-sdk-dynamodb/) aws-database-encryption-sdk GitHub 

**Manualmente**  
[Per installare la libreria di crittografia lato client Rust per DynamoDB, clona o scarica il repository -dynamodb. aws-database-encryption-sdk](https://github.com/aws/aws-database-encryption-sdk-dynamodb/) GitHub 

**Per installare la versione più recente**  
Esegui il seguente comando Cargo nella directory del tuo progetto:  

```
cargo add aws-db-esdk
```
Oppure aggiungi la seguente riga al tuo Cargo.toml:  

```
aws-db-esdk = "<version>"
```

# Utilizzo della libreria di crittografia lato client Rust per DynamoDB
<a name="ddb-rust-using"></a>

Questo argomento spiega alcune delle funzioni e delle classi di supporto della versione 1. *x* della libreria di crittografia lato client Rust per DynamoDB. 

Per i dettagli sulla programmazione con la libreria di crittografia lato client Rust per DynamoDB, consulta gli [esempi di Rust](https://github.com/aws/aws-database-encryption-sdk-dynamodb/blob/main/releases/rust/db_esdk/examples/) nel repository -dynamodb su. aws-database-encryption-sdk GitHub

**Topics**
+ [Componenti di crittografia dell'item](#ddb-rust-item-encryptors)
+ [Operazioni di attributo](#ddb-rust-attribute-actions)
+ [Configurazione della crittografia](#ddb-rust-config-encrypt)
+ [Aggiornamento degli elementi](#ddb-rust-update-items)

## Componenti di crittografia dell'item
<a name="ddb-rust-item-encryptors"></a>

Fondamentalmente, il AWS Database Encryption SDK per DynamoDB è un cifratore di elementi. È possibile utilizzare la versione 1. *x* della libreria di crittografia lato client Rust per DynamoDB per crittografare, firmare, verificare e decrittografare gli elementi della tabella DynamoDB nei seguenti modi.

**L'SDK di crittografia del AWS database di basso livello per l'API DynamoDB**  
È possibile utilizzare la [configurazione di crittografia delle tabelle](#ddb-rust-config-encrypt) per creare un client DynamoDB che crittografa e firma automaticamente gli elementi lato client con le richieste DynamoDB. `PutItem`  
[È necessario utilizzare l'API AWS Database Encryption SDK di basso livello per DynamoDB per utilizzare la crittografia ricercabile.](searchable-encryption.md)  
[Per un esempio che dimostra come utilizzare l'SDK di basso livello di AWS Database Encryption SDK per DynamoDB, consulta basic\$1get\$1put\$1example.rs nel repository -dynamodb su.](https://github.com/aws/aws-database-encryption-sdk-dynamodb/blob/main/releases/rust/db_esdk/examples/basic_get_put_example.rs) aws-database-encryption-sdk GitHub

**Il livello inferiore `DynamoDbItemEncryptor`**  
Il livello inferiore crittografa e firma o decrittografa e verifica `DynamoDbItemEncryptor` direttamente gli elementi della tabella senza chiamare DynamoDB. Non crea DynamoDB o `PutItem` richieste`GetItem`. Ad esempio, puoi utilizzare il livello inferiore per `DynamoDbItemEncryptor` decrittografare e verificare direttamente un elemento DynamoDB che hai già recuperato.  
[Il livello inferiore non supporta la crittografia ricercabile. `DynamoDbItemEncryptor`](searchable-encryption.md)  
Per un esempio che dimostra come utilizzare il livello inferiore, consulta [item\$1encrypt\$1decrypt.rs](https://github.com/aws/aws-database-encryption-sdk-dynamodb/blob/main/releases/rust/db_esdk/examples/itemencryptor/item_encrypt_decrypt.rs) nel repository `DynamoDbItemEncryptor` -dynamodb su. aws-database-encryption-sdk GitHub

## Azioni relative agli attributi nel AWS Database Encryption SDK per DynamoDB
<a name="ddb-rust-attribute-actions"></a>

[Le azioni relative](concepts.md#crypt-actions) agli attributi determinano quali valori degli attributi sono crittografati e firmati, quali sono solo firmati, quali sono firmati e inclusi nel contesto di crittografia e quali vengono ignorati.

Per specificare le azioni relative agli attributi con il client Rust, definisci manualmente le azioni relative agli attributi utilizzando un modello a oggetti. Specificate le azioni degli attributi creando un `HashMap` oggetto in cui le coppie nome-valore rappresentano i nomi degli attributi e le azioni specificate.

Specificate `ENCRYPT_AND_SIGN` di crittografare e firmare un attributo. `SIGN_ONLY`Specificare di firmare, ma non crittografare, un attributo. `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`Specificare di firmare un attributo e di includerlo nel contesto di crittografia. Non è possibile crittografare un attributo senza firmarlo. `DO_NOTHING`Specificare di ignorare un attributo.

Gli attributi di partizione e ordinamento devono essere `SIGN_ONLY` o`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`. Se si definiscono gli attributi come`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`, allora anche gli attributi di partizione e ordinamento devono essere uguali. `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`

**Nota**  
Dopo aver definito le azioni relative agli attributi, è necessario definire quali attributi sono esclusi dalle firme. Per semplificare l'aggiunta di nuovi attributi non firmati in futuro, consigliamo di scegliere un prefisso distinto (ad esempio "`:`«) per identificare gli attributi non firmati. Includi questo prefisso nel nome dell'attributo per tutti gli attributi contrassegnati durante `DO_NOTHING` la definizione dello schema DynamoDB e delle azioni degli attributi.

Il seguente modello a oggetti mostra come specificare`ENCRYPT_AND_SIGN`, `SIGN_ONLY``SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`, e `DO_NOTHING` attribuire azioni con il client Rust. Questo esempio utilizza il prefisso "`:`" per identificare `DO_NOTHING` gli attributi.

```
let attribute_actions_on_encrypt = HashMap::from([
    ("partition_key".to_string(), CryptoAction::SignOnly),
    ("sort_key".to_string(), CryptoAction::SignOnly),
    ("attribute1".to_string(), CryptoAction::EncryptAndSign),
    ("attribute2".to_string(), CryptoAction::SignOnly),
    (":attribute3".to_string(), CryptoAction::DoNothing),
]);
```

## Configurazione della crittografia nel AWS Database Encryption SDK per DynamoDB
<a name="ddb-rust-config-encrypt"></a>

Quando si utilizza AWS Database Encryption SDK, è necessario definire in modo esplicito una configurazione di crittografia per la tabella DynamoDB. I valori richiesti nella configurazione di crittografia dipendono dal fatto che le azioni degli attributi siano state definite manualmente o con una classe di dati annotata.

Il seguente frammento definisce una configurazione di crittografia delle tabelle DynamoDB utilizzando l'API AWS Database Encryption SDK di basso livello per DynamoDB e gli attributi non firmati consentiti definiti da un prefisso distinto.

```
let table_config = DynamoDbTableEncryptionConfig::builder()
    .logical_table_name(ddb_table_name)
    .partition_key_name("partition_key")
    .sort_key_name("sort_key")
    .attribute_actions_on_encrypt(attribute_actions_on_encrypt)
    .keyring(kms_keyring)
    .allowed_unsigned_attribute_prefix(UNSIGNED_ATTR_PREFIX)
    // Specifying an algorithm suite is optional
    .algorithm_suite_id(
        DbeAlgorithmSuiteId::AlgAes256GcmHkdfSha512CommitKeyEcdsaP384SymsigHmacSha384,
    )
    .build()?;

let table_configs = DynamoDbTablesEncryptionConfig::builder()
    .table_encryption_configs(HashMap::from([(ddb_table_name.to_string(), table_config)]))
    .build()?;
```

**Nome della tabella logica**  
Un nome di tabella logica per la tabella DynamoDB.  
Il nome della tabella logica è associato crittograficamente a tutti i dati memorizzati nella tabella per semplificare le operazioni di ripristino di DynamoDB. Consigliamo vivamente di specificare il nome della tabella DynamoDB come nome della tabella logica quando si definisce per la prima volta la configurazione di crittografia. È necessario specificare sempre lo stesso nome di tabella logica. Affinché la decrittografia abbia esito positivo, il nome della tabella logica deve corrispondere al nome specificato nella crittografia. Nel caso in cui il nome della tabella DynamoDB cambi dopo il [ripristino della tabella DynamoDB da un backup, il nome della tabella](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Restore.Tutorial.html) logica assicura che l'operazione di decrittografia riconosca ancora la tabella.

**Attributi non firmati consentiti**  
Gli attributi contrassegnati `DO_NOTHING` nelle azioni relative agli attributi.  
Gli attributi non firmati consentiti indicano al client quali attributi sono esclusi dalle firme. Il client presume che tutti gli altri attributi siano inclusi nella firma. Quindi, durante la decrittografia di un record, il client determina quali attributi deve verificare e quali ignorare tra gli attributi non firmati consentiti specificati. Non è possibile rimuovere un attributo dagli attributi non firmati consentiti.  
È possibile definire gli attributi non firmati consentiti in modo esplicito creando un array che elenca tutti gli attributi. `DO_NOTHING` È inoltre possibile specificare un prefisso distinto quando si assegnano nomi `DO_NOTHING` agli attributi e utilizzare il prefisso per indicare al client quali attributi non sono firmati. Consigliamo vivamente di specificare un prefisso distinto perché semplifica il processo di aggiunta di un nuovo `DO_NOTHING` attributo in futuro. Per ulteriori informazioni, consulta [Aggiornamento del modello di dati](ddb-update-data-model.md).  
Se non si specifica un prefisso per tutti gli `DO_NOTHING` attributi, è possibile configurare un `allowedUnsignedAttributes` array che elenchi in modo esplicito tutti gli attributi che il client dovrebbe aspettarsi che non siano firmati quando li incontra durante la decrittografia. È necessario definire in modo esplicito gli attributi non firmati consentiti solo se assolutamente necessario.

**Configurazione della ricerca (opzionale)**  
`SearchConfig`definisce la versione del [beacon](using-beacons.md#beacon-version).  
[È `SearchConfig` necessario specificare il per utilizzare la [crittografia ricercabile](searchable-encryption.md) o i beacon firmati.](configure.md#signed-beacons)

**Algorithm Suite (opzionale)**  
`algorithmSuiteId`Definisce la suite di algoritmi utilizzata da AWS Database Encryption SDK.  
A meno che non si specifichi esplicitamente una suite di algoritmi alternativa, AWS Database Encryption SDK utilizza la suite di algoritmi [predefinita](supported-algorithms.md#recommended-algorithms). [La suite di algoritmi predefinita utilizza l'algoritmo AES-GCM con derivazione delle chiavi, firme [digitali](concepts.md#digital-sigs) e impegno delle chiavi.](concepts.md#key-commitment) Sebbene la suite di algoritmi predefinita sia probabilmente adatta alla maggior parte delle applicazioni, è possibile scegliere una suite di algoritmi alternativa. Ad esempio, alcuni modelli di fiducia sarebbero soddisfatti da una suite di algoritmi senza firme digitali. Per informazioni sulle suite di algoritmi supportate da AWS Database Encryption SDK, consulta. [Suite di algoritmi supportate nel AWS Database Encryption SDK](supported-algorithms.md)  
Per selezionare la [suite di algoritmi AES-GCM senza firme digitali ECDSA](supported-algorithms.md#other-algorithms), includi il seguente frammento nella configurazione di crittografia delle tabelle.  

```
.algorithm_suite_id(
    DbeAlgorithmSuiteId::AlgAes256GcmHkdfSha512CommitKeyEcdsaP384SymsigHmacSha384,
)
```

## Aggiornamento degli AWS elementi con Database Encryption SDK
<a name="ddb-rust-update-items"></a>

Il AWS Database Encryption SDK non supporta [ddb: UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html) per gli elementi che includono attributi crittografati o firmati. Per aggiornare un attributo crittografato o firmato, è necessario utilizzare [ddb](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html):. PutItem Quando specifichi la stessa chiave primaria di un elemento esistente nella tua `PutItem` richiesta, il nuovo elemento sostituisce completamente l'elemento esistente.