Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
. NETejemplos
En los siguientes ejemplos se muestra cómo utilizar. NETbiblioteca de cifrado del lado del cliente para DynamoDB para proteger los elementos de la tabla de la aplicación. Para encontrar más ejemplos (y aportar los suyos propios), consulte la. NET
En los siguientes ejemplos se muestra cómo configurar. NETbiblioteca de cifrado del lado del cliente para DynamoDB en una tabla de Amazon DynamoDB nueva y sin rellenar. Si desea configurar las tablas de Amazon DynamoDB existentes para el cifrado del cliente, consulte. Agregar la versión 3.x a una tabla existente
Temas
Uso del cifrado de bases de AWS datos de bajo nivel SDK para DynamoDB API
El siguiente ejemplo muestra cómo utilizar el cifrado de AWS bases de datos de bajo nivel SDK para API DynamoDB con AWS KMS un anillo de claves para cifrar y firmar automáticamente los elementos del lado del cliente con las solicitudes de DynamoDB. PutItem
Puede utilizar cualquier conjunto de claves compatible, pero le recomendamos que utilice uno de los anillos de claves siempre que sea posible. AWS KMS
Consulta el ejemplo de código completo: .cs BasicPutGetExample
- Paso 1: Crea el llavero AWS KMS
-
El siguiente ejemplo se utiliza
CreateAwsKmsMrkMultiKeyring
para crear un AWS KMS anillo de claves con una clave de cifrado simétrica. KMS El métodoCreateAwsKmsMrkMultiKeyring
garantiza que el conjunto de claves maneje correctamente las claves de una sola región y de múltiples regiones.var matProv = new MaterialProviders(new MaterialProvidersConfig()); var keyringInput = new CreateAwsKmsMrkMultiKeyringInput { Generator = kmsKeyId }; var kmsKeyring = matProv.CreateAwsKmsMrkMultiKeyring(keyringInput);
- Paso 2: configurar las acciones de sus atributos
-
En el siguiente ejemplo, se define un
attributeActionsOnEncrypt
diccionario que representa ejemplos de acciones de atributos para un elemento de la tabla.nota
En el siguiente ejemplo no se define ningún atributo como
SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
. Si especifica algúnSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
atributo, los atributos de partición y ordenación también deben serloSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
.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 };
- Paso 3: defina qué atributos se excluyen de las firmas
-
En el ejemplo siguiente, se supone que todos los atributos
DO_NOTHING
comparten el prefijo distinto ":
" y se utiliza el prefijo para definir los atributos no firmados permitidos. El cliente asume que cualquier nombre de atributo con el prefijo “:
” está excluido de las firmas. Para obtener más información, consulte Allowed unsigned attributes.const String unsignAttrPrefix = ":";
- Paso 4: definir la configuración de cifrado de la tabla de DynamoDB
-
El siguiente ejemplo define un mapa
tableConfigs
que representa la configuración de cifrado de esta tabla de DynamoDB.En este ejemplo, se especifica el nombre de la tabla de DynamoDB como nombre de la tabla lógica. Se recomienda encarecidamente especificar el nombre de la tabla de DynamoDB como nombre de la tabla lógica cuando defina por primera vez la configuración de cifrado. Para obtener más información, consulte Configuración de cifrado en el cifrado de AWS bases de datos SDK para DynamoDB.
nota
Para utilizar balizas firmadas o cifrado con capacidad de búsqueda, también debe incluir SearchConfig en la configuración de cifrado.
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);
- Paso 5: Crear un nuevo cliente de AWS SDK DynamoDB
-
En el siguiente ejemplo, se crea un nuevo cliente de AWS SDK DynamoDB mediante
TableEncryptionConfigs
el paso 4.var ddb = new Client.DynamoDbClient( new DynamoDbTablesEncryptionConfig { TableEncryptionConfigs = tableConfigs });
- Paso 6: Cifrar y firmar un elemento de la tabla de DynamoDB
-
En el siguiente ejemplo, se define un
item
diccionario que representa un elemento de tabla de ejemplo y se coloca el elemento en la tabla de DynamoDB. El elemento se cifra y se firma en el lado del cliente antes de enviarlo 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);
Uso del nivel inferior DynamoDbItemEncryptor
En el siguiente ejemplo, se muestra cómo utilizar el nivel inferior DynamoDbItemEncryptor
con un conjunto de claves de AWS KMS para cifrar y firmar directamente los elementos de la tabla. DynamoDbItemEncryptor
No coloca el elemento en la tabla de DynamoDB.
Puede utilizar cualquier conjunto de claves compatible con el cliente mejorado de DynamoDB, pero le recomendamos que utilice uno de los anillos de AWS KMS claves siempre que sea posible.
nota
El nivel inferior DynamoDbItemEncryptor
no admite el cifrado con capacidad de búsqueda. Utilice el cifrado de AWS base de datos de bajo nivel para API DynamoDB SDK para utilizar un cifrado con capacidad de búsqueda.
Consulte el ejemplo de código completo: .cs ItemEncryptDecryptExample
- Paso 1: Crea el llavero AWS KMS
-
El siguiente ejemplo se utiliza
CreateAwsKmsMrkMultiKeyring
para crear un AWS KMS anillo de claves con una clave de cifrado simétrica. KMS El métodoCreateAwsKmsMrkMultiKeyring
garantiza que el conjunto de claves maneje correctamente las claves de una sola región y de múltiples regiones.var matProv = new MaterialProviders(new MaterialProvidersConfig()); var keyringInput = new CreateAwsKmsMrkMultiKeyringInput { Generator = kmsKeyId }; var kmsKeyring = matProv.CreateAwsKmsMrkMultiKeyring(keyringInput);
- Paso 2: configurar las acciones de sus atributos
-
En el siguiente ejemplo, se define un
attributeActionsOnEncrypt
diccionario que representa ejemplos de acciones de atributos para un elemento de la tabla.nota
En el siguiente ejemplo no se define ningún atributo como
SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
. Si especifica algúnSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
atributo, los atributos de partición y ordenación también deben serloSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
.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 };
- Paso 3: defina qué atributos se excluyen de las firmas
-
En el ejemplo siguiente, se supone que todos los atributos
DO_NOTHING
comparten el prefijo distinto ":
" y se utiliza el prefijo para definir los atributos no firmados permitidos. El cliente asume que cualquier nombre de atributo con el prefijo “:
” está excluido de las firmas. Para obtener más información, consulte Allowed unsigned attributes.String unsignAttrPrefix = ":";
- Paso 4: defina la configuración de
DynamoDbItemEncryptor
-
En el siguiente ejemplo, se consulta la configuración de
DynamoDbItemEncryptor
.En este ejemplo, se especifica el nombre de la tabla de DynamoDB como nombre de la tabla lógica. Se recomienda encarecidamente especificar el nombre de la tabla de DynamoDB como nombre de la tabla lógica cuando defina por primera vez la configuración de cifrado. Para obtener más información, consulte Configuración de cifrado en el cifrado de AWS bases de datos SDK para DynamoDB.
var config = new DynamoDbItemEncryptorConfig { LogicalTableName = ddbTableName, PartitionKeyName = "partition_key", SortKeyName = "sort_key", AttributeActionsOnEncrypt = attributeActionsOnEncrypt, Keyring = kmsKeyring, AllowedUnsignedAttributePrefix = unsignAttrPrefix };
- Paso 5: Crear el
DynamoDbItemEncryptor
-
En el siguiente ejemplo, se crea un nuevo
DynamoDbItemEncryptor
, con laconfig
del Paso 4.var itemEncryptor = new DynamoDbItemEncryptor(config);
- Paso 6: cifrar y firmar directamente un elemento de la tabla
-
En el siguiente ejemplo, se cifra y firma directamente un elemento mediante el
DynamoDbItemEncryptor
.DynamoDbItemEncryptor
no coloca el elemento en la tabla de 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;