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à.
. NETesempi
Gli esempi seguenti mostrano come utilizzare. NETlibreria di crittografia lato client per DynamoDB per proteggere gli elementi della tabella nell'applicazione. Per trovare altri esempi (e contribuire con i tuoi), consulta la. NET
Gli esempi seguenti mostrano come configurare. NETlibreria di crittografia lato client per DynamoDB in una nuova tabella Amazon DynamoDB non popolata. Se desideri configurare le tabelle Amazon DynamoDB esistenti per la crittografia lato client, consulta. Aggiungi la versione 3.x a una tabella esistente
Argomenti
Utilizzo della crittografia del AWS database di basso livello SDK per DynamoDB API
L'esempio seguente mostra come utilizzare la crittografia del AWS database di basso livello per API DynamoDB con AWS KMS un portachiavi SDK per crittografare e firmare automaticamente gli elementi lato client con le richieste DynamoDB. PutItem
Puoi utilizzare qualsiasi portachiavi supportato, ma ti consigliamo di utilizzare uno dei portachiavi quando possibile. AWS KMS
Guarda l'esempio di codice completo: .cs BasicPutGetExample
- Fase 1: Creare il portachiavi AWS KMS
-
L'esempio seguente utilizza la creazione
CreateAwsKmsMrkMultiKeyring
di un AWS KMS portachiavi con una chiave di crittografia simmetrica. KMS IlCreateAwsKmsMrkMultiKeyring
metodo garantisce che il portachiavi gestisca correttamente sia le chiavi a regione singola che quelle a più regioni.var matProv = new MaterialProviders(new MaterialProvidersConfig()); var keyringInput = new CreateAwsKmsMrkMultiKeyringInput { Generator = kmsKeyId }; var kmsKeyring = matProv.CreateAwsKmsMrkMultiKeyring(keyringInput);
- Passaggio 2: configura le azioni relative agli attributi
-
L'esempio seguente definisce un
attributeActionsOnEncrypt
dizionario che rappresenta azioni di esempio relative agli attributi per un elemento della tabella.Nota
L'esempio seguente non definisce alcun attributo come
SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
. Se si specifica unSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
attributo, devono esserloSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
anche gli attributi di partizione e ordinamento.var attributeActionsOnEncrypt = new Dictionary<string, CryptoAction> { ["partition_key"] = CryptoAction.SIGN_ONLY, // The partition attribute must be SIGN_ONLY ["sort_key"] = CryptoAction.SIGN_ONLY, // The sort attribute must be SIGN_ONLY ["attribute1"] = CryptoAction.ENCRYPT_AND_SIGN, ["attribute2"] = CryptoAction.SIGN_ONLY, [":attribute3"] = CryptoAction.DO_NOTHING };
- Fase 3: Definire quali attributi sono esclusi dalle firme
-
L'esempio seguente presuppone che tutti
DO_NOTHING
gli attributi condividano il prefisso distinto ":
«e utilizza il prefisso per definire gli attributi non firmati consentiti. Il client presuppone che qualsiasi nome di attributo con il prefisso ":
" sia escluso dalle firme. Per ulteriori informazioni, consulta Allowed unsigned attributes.const String unsignAttrPrefix = ":";
- Fase 4: Definire la configurazione di crittografia delle tabelle DynamoDB
-
L'esempio seguente definisce una
tableConfigs
mappa che rappresenta la configurazione di crittografia per questa tabella DynamoDB.Questo esempio specifica il nome della tabella DynamoDB come nome della tabella logica. 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. Per ulteriori informazioni, consulta Configurazione della crittografia in AWS Database Encryption SDK for DynamoDB.
Nota
Per utilizzare la crittografia ricercabile o i beacon firmati, è necessario includerli anche nella configurazione di crittografia. SearchConfig
Dictionary<String, DynamoDbTableEncryptionConfig> tableConfigs = new Dictionary<String, DynamoDbTableEncryptionConfig>(); DynamoDbTableEncryptionConfig config = new DynamoDbTableEncryptionConfig { LogicalTableName = ddbTableName, PartitionKeyName = "partition_key", SortKeyName = "sort_key", AttributeActionsOnEncrypt = attributeActionsOnEncrypt, Keyring = kmsKeyring, AllowedUnsignedAttributePrefix = unsignAttrPrefix }; tableConfigs.Add(ddbTableName, config);
- Fase 5: Creare un nuovo client AWS SDK DynamoDB
-
L'esempio seguente crea un nuovo client AWS SDK DynamoDB utilizzando lo Step 4
TableEncryptionConfigs
.var ddb = new Client.DynamoDbClient( new DynamoDbTablesEncryptionConfig { TableEncryptionConfigs = tableConfigs });
- Fase 6: Crittografare e firmare un elemento della tabella DynamoDB
-
L'esempio seguente definisce un
item
dizionario che rappresenta un elemento di tabella di esempio e inserisce l'elemento nella tabella DynamoDB. L'elemento viene crittografato e firmato lato client prima di essere inviato a DynamoDB.var item = new Dictionary<String, AttributeValue> { ["partition_key"] = new AttributeValue("BasicPutGetExample"), ["sort_key"] = new AttributeValue { N = "0" }, ["attribute1"] = new AttributeValue("encrypt and sign me!"), ["attribute2"] = new AttributeValue("sign me!"), [":attribute3"] = new AttributeValue("ignore me!") }; PutItemRequest putRequest = new PutItemRequest { TableName = ddbTableName, Item = item }; PutItemResponse putResponse = await ddb.PutItemAsync(putRequest);
Utilizzo del livello inferiore DynamoDbItemEncryptor
L'esempio seguente mostra come utilizzare il livello inferiore DynamoDbItemEncryptor
con un AWS KMS portachiavi per crittografare e firmare direttamente gli elementi della tabella. Non DynamoDbItemEncryptor
inserisce l'elemento nella tabella DynamoDB.
Puoi utilizzare qualsiasi portachiavi supportato con DynamoDB Enhanced Client, ma ti consigliamo di utilizzare uno dei AWS KMS portachiavi quando possibile.
Nota
Il livello inferiore DynamoDbItemEncryptor non supporta la crittografia ricercabile. Utilizza la crittografia del AWS database di basso livello per API DynamoDB SDK per utilizzare la crittografia ricercabile.
Guarda l'esempio di codice completo: .cs ItemEncryptDecryptExample
- Fase 1: Creare il portachiavi AWS KMS
-
L'esempio seguente utilizza la creazione
CreateAwsKmsMrkMultiKeyring
di un AWS KMS portachiavi con una chiave di crittografia simmetrica. KMS IlCreateAwsKmsMrkMultiKeyring
metodo garantisce che il portachiavi gestisca correttamente sia le chiavi a regione singola che quelle a più regioni.var matProv = new MaterialProviders(new MaterialProvidersConfig()); var keyringInput = new CreateAwsKmsMrkMultiKeyringInput { Generator = kmsKeyId }; var kmsKeyring = matProv.CreateAwsKmsMrkMultiKeyring(keyringInput);
- Passaggio 2: configura le azioni relative agli attributi
-
L'esempio seguente definisce un
attributeActionsOnEncrypt
dizionario che rappresenta azioni di esempio relative agli attributi per un elemento della tabella.Nota
L'esempio seguente non definisce alcun attributo come
SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
. Se si specifica unSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
attributo, devono esserloSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
anche gli attributi di partizione e ordinamento.var attributeActionsOnEncrypt = new Dictionary<String, CryptoAction> { ["partition_key"] = CryptoAction.SIGN_ONLY, // The partition attribute must be SIGN_ONLY ["sort_key"] = CryptoAction.SIGN_ONLY, // The sort attribute must be SIGN_ONLY ["attribute1"] = CryptoAction.ENCRYPT_AND_SIGN, ["attribute2"] = CryptoAction.SIGN_ONLY, [":attribute3"] = CryptoAction.DO_NOTHING };
- Fase 3: Definire quali attributi sono esclusi dalle firme
-
L'esempio seguente presuppone che tutti
DO_NOTHING
gli attributi condividano il prefisso distinto ":
«e utilizza il prefisso per definire gli attributi non firmati consentiti. Il client presuppone che qualsiasi nome di attributo con il prefisso ":
" sia escluso dalle firme. Per ulteriori informazioni, consulta Allowed unsigned attributes.String unsignAttrPrefix = ":";
- Fase 4: Definire la configurazione
DynamoDbItemEncryptor
-
L'esempio seguente definisce la configurazione per
DynamoDbItemEncryptor
.Questo esempio specifica il nome della tabella DynamoDB come nome della tabella logica. 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. Per ulteriori informazioni, consulta Configurazione della crittografia in AWS Database Encryption SDK for DynamoDB.
var config = new DynamoDbItemEncryptorConfig { LogicalTableName = ddbTableName, PartitionKeyName = "partition_key", SortKeyName = "sort_key", AttributeActionsOnEncrypt = attributeActionsOnEncrypt, Keyring = kmsKeyring, AllowedUnsignedAttributePrefix = unsignAttrPrefix };
- Fase 5: Creare il
DynamoDbItemEncryptor
-
L'esempio seguente ne crea uno nuovo
DynamoDbItemEncryptor
utilizzando ilconfig
tratto dal passaggio 4.var itemEncryptor = new DynamoDbItemEncryptor(config);
- Fase 6: Crittografare e firmare direttamente un elemento della tabella
-
L'esempio seguente crittografa e firma direttamente un elemento utilizzando il.
DynamoDbItemEncryptor
NonDynamoDbItemEncryptor
inserisce l'elemento nella tabella DynamoDB.var originalItem = new Dictionary<String, AttributeValue> { ["partition_key"] = new AttributeValue("ItemEncryptDecryptExample"), ["sort_key"] = new AttributeValue { N = "0" }, ["attribute1"] = new AttributeValue("encrypt and sign me!"), ["attribute2"] = new AttributeValue("sign me!"), [":attribute3"] = new AttributeValue("ignore me!") }; var encryptedItem = itemEncryptor.EncryptItem( new EncryptItemInput { PlaintextItem = originalItem } ).EncryptedItem;