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.
Uso del cliente de cifrado de DynamoDB para Java
nota
Nuestra biblioteca de cifrado del cliente pasó a llamarse SDK de cifrado de bases de datos de AWS. En el siguiente tema, se presenta información sobre las versiones 1.x—2.x del cliente de cifrado de DynamoDB para Java y versiones 1.x—3.x del cliente de cifrado de DynamoDB para Python. Para obtener más información, consulte el SDK de cifrado de bases de datos de AWS para la compatibilidad de la versión de DynamoDB.
En este tema, se explican algunas de las características del cliente de cifrado de DynamoDB en Java que podrían no encontrarse en otras implementaciones de lenguaje de programación.
Para obtener más información sobre la programación con el cliente de cifrado de DynamoDB, consulte los ejemplos de Java, los ejemplos de GitHub on y elaws-dynamodb-encryption-java repository del cliente de cifrado de DynamoDB.
Encriptadores de artículos: DynamodbenCryptor
El cliente de cifrado de DynamoDB en Java tiene un cifrado de elementos: el DynamoDBEncryptor de nivel inferior
Acciones de atributo en Java
Las acciones de atributo determinan qué valores de atributo se cifran y se firman, cuáles solo se firman y cuáles se omiten.
importante
Después de utilizar las acciones de atributo para cifrar los elementos de la tabla, agregar o quitar atributos del modelo de datos puede provocar un error de validación de firma que le impide descifrar los datos. Para ver una explicación detallada, consulte Cambiar el modelo de datos.
Para especificar las acciones de atributo cuando se utiliza el DynamoDBEncryptorHashMap en el que las parejas de nombre-valor representen nombres de atributo y las acciones especificadas.
Los valores válidos para las acciones de atributo que se definen en el tipo enumerado EncryptionFlags. Puede utilizar ENCRYPT y SIGN juntos, usar SIGN solo u omitir ambos. Sin embargo, si usa ENCRYPT solo, el cliente de cifrado de DynamoDB generará un error. No puede cifrar un atributo que no firme.
ENCRYPT SIGN
aviso
No cifre los atributos de clave principal. Deben permanecer en texto no cifrado para que DynamoDB pueda encontrar el elemento sin realizar un examen completo de la tabla.
Si especifica una clave principal en el contexto de cifrado y, a continuación, especifica ENCRYPT en la acción de atributo para alguno de los atributos de clave principal, el cliente de cifrado de DynamoDB genera una excepción.
Por ejemplo, el siguiente código de Java crea un código actions HashMap que cifra y firma todos los atributos del elemento. record Las excepciones son la clave de partición y los atributos de clave de clasificación, que se firman pero no se cifran, y el atributo test, que ni se signa ni se cifra.
final EnumSet<EncryptionFlags> signOnly = EnumSet.of(EncryptionFlags.SIGN); final EnumSet<EncryptionFlags> encryptAndSign = EnumSet.of(EncryptionFlags.ENCRYPT, EncryptionFlags.SIGN); final Map<String, Set<EncryptionFlags>> actions = new HashMap<>(); for (final String attributeName : record.keySet()) { switch (attributeName) { case partitionKeyName: // no break; falls through to next case case sortKeyName: // Partition and sort keys must not be encrypted, but should be signed actions.put(attributeName, signOnly); break; case "test": // Don't encrypt or sign break; default: // Encrypt and sign everything else actions.put(attributeName, encryptAndSign); break; } }
A continuación, cuando llama al método encryptRecordDynamoDBEncryptor, especifique el mapa como el valor del parámetro attributeFlags. Por ejemplo, esta llamada a encryptRecord utiliza el mapa actions.
// Encrypt the plaintext record final Map<String, AttributeValue> encrypted_record = encryptor.encryptRecord(record, actions, encryptionContext);
Reemplazar nombres de tabla
En el cliente de cifrado de DynamoDB, el nombre de la tabla de DynamoDB es un elemento del contexto de cifrado de DynamoDB que se pasa a los métodos de cifrado y descifrado. Al cifrar o firmar elementos de la tabla, el contexto de cifrado de DynamoDB, incluido el nombre de la tabla, está enlazado criptográficamente al texto cifrado. Si el contexto de cifrado de DynamoDB que se pasa al método de descifrado no coincide con el contexto de cifrado de DynamoDB que se pasó al método de cifrado, se produce un error en la operación de descifrado.
Ocasionalmente, el nombre de una tabla cambia, como cuando se realiza una copia de seguridad de una tabla o se realiza una recuperación puntual. Al descifrar o verificar la firma de estos elementos, debe pasar el mismo contexto de cifrado de DynamoDB que se utilizó para cifrar y firmar los elementos, incluido el nombre de la tabla original. El nombre de la tabla actual no es necesario.
Cuando se utiliza DynamoDBEncryptor, se ensambla el contexto de cifrado de DynamoDB manualmente. Por lo tanto, no utilice los operadores de anulación del nombre de la tabla si está utilizando el. DynamoDBEncryptor En su lugar, cree un contexto de cifrado con el nombre de la tabla original y envíelo al método de descifrado.