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.
Usando el. NETbiblioteca de cifrado del lado del cliente para DynamoDB
En este tema se explican algunas de las funciones y clases auxiliares de la versión 3. x de. NETbiblioteca de cifrado del lado del cliente para DynamoDB.
Para obtener más información sobre la programación con. NETbiblioteca de cifrado del lado del cliente para DynamoDB, consulte. NETejemplos en el repositorio
Temas
Encriptadores de elementos
En esencia, el cifrado de AWS bases de datos SDK de DynamoDB es un cifrador de elementos. Puede utilizar la versión 3. x del. NETbiblioteca de cifrado del lado del cliente para que DynamoDB cifre, firme, verifique y descifre los elementos de la tabla de DynamoDB de las siguientes maneras.
- El cifrado de bases de AWS datos de bajo nivel SDK para DynamoDB API
-
Puede usar la configuración de cifrado de tablas para crear un cliente de DynamoDB que cifre y firme automáticamente los elementos del lado del cliente con sus solicitudes de DynamoDB.
PutItem
Puede usar este cliente directamente o puede crear un modelo de documento o un modelo de persistencia de objetos. - El nivel inferior
DynamoDbItemEncryptor
-
El nivel inferior cifra y firma o descifra y verifica
DynamoDbItemEncryptor
directamente los elementos de la tabla sin llamar a DynamoDB. No realiza DynamoDB niPutItem
solicitudesGetItem
. Por ejemplo, puede usar el nivel inferiorDynamoDbItemEncryptor
para descifrar y verificar directamente un elemento de DynamoDB que ya haya recuperado. Si utiliza el nivel inferiorDynamoDbItemEncryptor
, le recomendamos que utilice el modelo de programación de bajo nivel que AWS SDK for .NET proporciona para la comunicación con DynamoDB.El nivel inferior
DynamoDbItemEncryptor
no admite el cifrado con capacidad de búsqueda.
Acciones de atributos en el cifrado de AWS bases de datos SDK para DynamoDB
Las acciones de atributos determinan qué valores de atributo están cifrados y firmados, cuáles solo están firmados, cuáles están firmados e incluidos en el contexto de cifrado y cuáles se ignoran.
Para especificar las acciones de los atributos con. NETcliente, defina manualmente las acciones de los atributos mediante un modelo de objetos. Especifique las acciones de sus atributos creando un Dictionary
objeto en el que los pares nombre-valor representen los nombres de los atributos y las acciones especificadas.
Especifique ENCRYPT_AND_SIGN
si desea cifrar y firmar un atributo. Especifique SIGN_ONLY
firmar, pero no cifrar, un atributo. Especifique si SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
desea firmar un atributo e incluirlo en el contexto de cifrado. No se puede cifrar un atributo sin firmarlo también. Especifique DO_NOTHING
que se omita un atributo.
Los atributos de partición y ordenación deben ser uno de SIGN_ONLY
los dosSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
. Si define algún atributo comoSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
, los atributos de partición y ordenación también deben serloSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
.
nota
Tras definir las acciones de los atributos, debe definir qué atributos se excluyen de las firmas. Para facilitar la adición de nuevos atributos sin firmar en el futuro, recomendamos elegir un prefijo distinto (como “:
“) para identificar los atributos sin firmar. Incluya este prefijo en el nombre del atributo para todos los atributos marcados DO_NOTHING
al definir el esquema y las acciones de atributos de DynamoDB.
El siguiente modelo de objetos muestra cómo especificar ENCRYPT_AND_SIGN
SIGN_ONLY
,SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
, y DO_NOTHING
atribuir acciones con. NETcliente. En este ejemplo se utiliza el prefijo :
"» para identificar DO_NOTHING
los atributos.
nota
Para utilizar la acción SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
criptográfica, debe utilizar la versión 3.3 o posterior del cifrado de AWS bases de datos. SDK Implemente la nueva versión en todos los lectores antes de actualizar su modelo de datos para SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
incluirla.
var attributeActionsOnEncrypt = new Dictionary<string, CryptoAction>
{
["partition_key"] = CryptoAction.SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT, // The partition attribute must be signed
["sort_key"] = CryptoAction.SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT, // The sort attribute must be signed
["attribute1"] = CryptoAction.ENCRYPT_AND_SIGN,
["attribute2"] = CryptoAction.SIGN_ONLY,
["attribute3"] = CryptoAction.SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT,
[":attribute4"] = CryptoAction.DO_NOTHING
};
Configuración de cifrado en el cifrado de AWS bases de datos SDK para DynamoDB
Al utilizar el cifrado de AWS bases de datosSDK, debe definir explícitamente una configuración de cifrado para la tabla de DynamoDB. Los valores necesarios en la configuración de cifrado dependen de si ha definido las acciones de los atributos manualmente o con una clase de datos anotada.
El siguiente fragmento define una configuración de cifrado de tablas de DynamoDB mediante el cifrado de base de datos de bajo nivel para SDK DynamoDB y los atributos no AWS firmados permitidos definidos por un prefijo API distinto.
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,
// Optional: SearchConfig only required if you use beacons
Search = new SearchConfig
{
WriteVersion = 1, // MUST be 1
Versions = beaconVersions
}
};
tableConfigs.Add(ddbTableName, config);
- Nombre de la tabla lógica
-
Un nombre de tabla lógico para la tabla de DynamoDB.
El nombre de la tabla lógica está enlazado criptográficamente a todos los datos almacenados en la tabla para simplificar las operaciones de restauración de DynamoDB. 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. Debe especificar siempre el mismo nombre de tabla lógica. Para que el descifrado se realice correctamente, el nombre de la tabla lógica debe coincidir con el nombre especificado en el cifrado. En caso de que el nombre de la tabla de DynamoDB cambie después de restaurar la tabla de DynamoDB a partir de una copia de seguridad, el nombre de la tabla lógica garantiza que la operación de descifrado siga reconociendo la tabla.
- Atributos no firmados permitidos
-
Los atributos marcados
DO_NOTHING
en tus acciones de atributos.Los atributos no firmados permitidos indican al cliente qué atributos están excluidos de las firmas. El cliente asume que todos los demás atributos están incluidos en la firma. A continuación, al descifrar un registro, el cliente determina qué atributos debe verificar y cuáles debe ignorar de los atributos no firmados permitidos que especificó. No puede eliminar un atributo de los atributos no firmados permitidos.
Puede definir los atributos no firmados permitidos de forma explícita mediante la creación de una matriz que enumere todos sus
DO_NOTHING
atributos. También puedes especificar un prefijo distinto al asignar un nombre a tusDO_NOTHING
atributos y usar el prefijo para indicar al cliente qué atributos no están firmados. Recomendamos encarecidamente especificar un prefijo distinto porque simplifica el proceso de añadir un nuevoDO_NOTHING
atributo en el futuro. Para obtener más información, consulte Actualización de su modelo de datos.Si no especifica un prefijo para todos los
DO_NOTHING
atributos, puede configurar unaallowedUnsignedAttributes
matriz que enumere de forma explícita todos los atributos que el cliente debería esperar que no estén firmados cuando los encuentre al descifrarlos. Solo debe definir de forma explícita los atributos no firmados permitidos si es absolutamente necesario. - Configuración de búsqueda (opcional)
-
SearchConfig
Define la versión de baliza.SearchConfig
Debe especificarse para utilizar balizas firmadas o cifradas con capacidad de búsqueda. - Conjunto de algoritmos (opcional)
-
algorithmSuiteId
Define qué conjunto de algoritmos SDK utiliza el cifrado AWS de la base de datos.A menos que especifique explícitamente un conjunto de algoritmos alternativo, el cifrado AWS de bases de datos SDK utiliza el conjunto de algoritmos predeterminado. El conjunto de algoritmos predeterminado usa el GCM algoritmo AES - con derivación de claves, firmas digitales y compromiso de claves. Aunque es probable que el conjunto de algoritmos predeterminado sea adecuado para la mayoría de las aplicaciones, puede elegir un conjunto de algoritmos alternativo. Por ejemplo, algunos modelos de confianza quedarían satisfechos con un conjunto de algoritmos sin firmas digitales. Para obtener información sobre los conjuntos de algoritmos SDK compatibles con el cifrado AWS de bases de datos, consulteConjuntos de algoritmos compatibles en el cifrado de AWS bases de datos SDK.
Para seleccionar el AESconjunto de GCM algoritmos sin firmas ECDSA digitales, incluya el siguiente fragmento en la configuración de cifrado de la tabla.
AlgorithmSuiteId = DBEAlgorithmSuiteId.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_SYMSIG_HMAC_SHA384
Actualización de elementos con el cifrado de la base de datos AWS SDK
El cifrado AWS de la base de datos SDK no admite ddb: UpdateItem para los elementos que incluyen atributos cifrados o firmados. Para actualizar un atributo cifrado o firmado, debe usar ddb:. PutItem Cuando se especifica la misma clave principal que un elemento existente en la solicitud PutItem
, el nuevo elemento sustituye completamente al existente. También puedes usarlo CLOBBERpara borrar y reemplazar todos los atributos al guardar después de actualizar tus artículos.