As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Código de exemplo para o DynamoDB Encryption Client para Java
nota
Nossa biblioteca de criptografia do lado do cliente foi renomeada como SDK de criptografia de banco de dados da AWS. O tópico a seguir fornece informações sobre as versões 1.x—2.x do DynamoDB Encryption Client para Java e versões 1.x—3x do DynamoDB Encryption Client para Python. Para obter mais informações, consulte SDK de criptografia de banco de dados da AWS para obter suporte à versão do DynamoDB.
Os exemplos a seguir mostram como usar o DynamoDB Encryption Client para Java para proteger a tabela do DynamoDB no aplicativo. Você pode encontrar mais exemplos (e contribuir com os seus) no diretório de exemplos
Tópicos
Uso do DynamoDBEncryptor
Este exemplo mostra como usar o DynamoDBEncryptor
Você pode usar qualquer provedor de materiais criptográficos (CMP) compatível com o. DynamoDBEncryptor
Veja a amostra de código completa: AwsKmsEncryptedItem.java
- Etapa 1: crie um Direct KMS Provider
-
Crie uma instância do AWS KMS cliente com a região especificada. Em seguida, use a instância do cliente para criar uma instância de Direct KMS Provider com o AWS KMS key de sua preferência.
Este exemplo usa o Amazon Resource Name (ARN) para identificar o AWS KMS key, mas você pode usar qualquer identificador de chave válido.
final String keyArn = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; final String region = "us-west-2"; final KmsClient kms = KmsClient.builder().region(Region.of(region)).build(); final DirectKmsMaterialProvider cmp = new DirectKmsMaterialProvider(kms,keyArn); - Etapa 2: crie um item
-
Este exemplo define um
recordHashMap que representa um item de tabela de amostra.final String partitionKeyName = "partition_attribute"; final String sortKeyName = "sort_attribute"; final Map<String, AttributeValue> record = new HashMap<>(); record.put(partitionKeyName, new AttributeValue().withS("value1")); record.put(sortKeyName, new AttributeValue().withN("55")); record.put("example", new AttributeValue().withS("data")); record.put("numbers", new AttributeValue().withN("99")); record.put("binary", new AttributeValue().withB(ByteBuffer.wrap(new byte[]{0x00, 0x01, 0x02}))); record.put("test", new AttributeValue().withS("test-value")); - Etapa 3: crie um DynamoDBEncryptor
-
Crie uma instância do
DynamoDBEncryptorcom o Direct KMS Provider.final DynamoDBEncryptor encryptor = DynamoDBEncryptor.getInstance(cmp); - Etapa 4: crie um contexto de criptografia do DynamoDB
-
O Contexto de criptografia do DynamoDB contém informações sobre a estrutura da tabela e de como ela é criptografada e assinada.
final String tableName = "testTable"; final EncryptionContext encryptionContext = new EncryptionContext.Builder() .withTableName(tableName) .withHashKeyName(partitionKeyName) .withRangeKeyName(sortKeyName) .build(); - Etapa 5: crie o objeto de ações de atributo
-
As Ações de atributos determinam os atributos do item que são criptografados e assinados, que são somente assinados e que não são criptografados nem assinados.
Em Java, para especificar ações de atributos, você cria pares HashMap de nome e
EncryptionFlagsvalor do atributo.Por exemplo, o código Java a seguir cria um
actionsHashMap que criptografa e assina todos os atributos norecorditem, exceto os atributos da chave de partição e da chave de classificação, que são assinados, mas não criptografados, e otestatributo, que não está assinado ou criptografado.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: // fall through to the next case case sortKeyName: // Partition and sort keys must not be encrypted, but should be signed actions.put(attributeName, signOnly); break; case "test": // Neither encrypted nor signed break; default: // Encrypt and sign all other attributes actions.put(attributeName, encryptAndSign); break; } } - Etapa 6: criptografe e assine o item
-
Para criptografar e assinar o item da tabela, chame o método
encryptRecordna instância doDynamoDBEncryptor. Especifique o item da tabela (record), as ações de atributo (actions) e o contexto de criptografia (encryptionContext).final Map<String, AttributeValue> encrypted_record = encryptor.encryptRecord(record, actions, encryptionContext); - Etapa 7: coloque o item na tabela do DynamoDB
-
Finalmente, coloque o item criptografado e assinado na tabela do DynamoDB.
final DynamoDbClient ddb = DynamoDbClient.builder().region(Region.of(region)).build(); ddb.putItem(tableName, encrypted_record);