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à.
Codice di esempio per il client di crittografia DynamoDB per Java
Nota
La nostra libreria di crittografia lato client è stata rinominata Database Encryption SDK. AWS Il seguente argomento fornisce informazioni sulle versioni 1. x —2. x del DynamoDB Encryption Client for Java e versioni 1. x —3. x del client di crittografia DynamoDB per Python. Per ulteriori informazioni, consulta AWS Database Encryption SDK per il supporto della versione DynamoDB.
Gli esempi seguenti mostrano come utilizzare il DynamoDB Encryption Client for Java per proteggere gli elementi della tabella DynamoDB nell'applicazione. Puoi trovare altri esempi (e contribuire con i tuoi) nella directory examples
Argomenti
Utilizzo di DynamoDBEncryptor
Questo esempio mostra come utilizzare il componente DynamoDBEncryptor
È possibile utilizzare qualsiasi fornitore di materiali crittografici (CMP) compatibile con. DynamoDBEncryptor
Guarda l'esempio di codice completo: AwsKmsEncryptedItem.java
- Fase 1: creazione del provider KMS diretto
-
Crea un'istanza del AWS KMS client con la regione specificata. Quindi, usa l'istanza del client per creare un'istanza del Direct KMS Provider con la tua preferita AWS KMS key.
Questo esempio utilizza Amazon Resource Name (ARN) per identificare AWS KMS key, ma puoi utilizzare qualsiasi identificatore di chiave valido.
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); - Fase 2: creazione di un item
-
Questo esempio definisce un elemento
recordHashMap che rappresenta un elemento di tabella di esempio.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")); - Fase 3: creazione di un componente DynamoDBEncryptor
-
Crea un'istanza del componente
DynamoDBEncryptorcon il provider KMS diretto.final DynamoDBEncryptor encryptor = DynamoDBEncryptor.getInstance(cmp); - Fase 4: Creare un contesto di crittografia DynamoDB
-
Il contesto di crittografia DynamoDB contiene informazioni sulla struttura della tabella e su come viene crittografata e firmata.
final String tableName = "testTable"; final EncryptionContext encryptionContext = new EncryptionContext.Builder() .withTableName(tableName) .withHashKeyName(partitionKeyName) .withRangeKeyName(sortKeyName) .build(); - Fase 5: creazione dell'oggetto delle operazioni di attributo.
-
Le operazioni di attributo determinano quali attributi dell'item sono crittografati e firmati, quali solo firmati e quali non sono né crittografati né firmati.
In Java, per specificare le azioni relative agli attributi, si crea una serie HashMap di coppie di nomi e
EncryptionFlagsvalori degli attributi.Ad esempio, il codice Java seguente crea un codice
actionsHashMap che crittografa e firma tutti gli attributi dell'recordelemento, ad eccezione della chiave di partizione e degli attributi della chiave di ordinamento, che sono firmati ma non crittografati, e dell'testattributo, che non è firmato o crittografato.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; } } - Fase 6: crittografia e firma dell'item
-
Per crittografare e firmare l'item della tabella, chiama il metodo
encryptRecordnell'istanza del componenteDynamoDBEncryptor. Specifica l'item della tabella (record), le operazioni di attributo (actions) e il contesto di crittografia (encryptionContext).final Map<String, AttributeValue> encrypted_record = encryptor.encryptRecord(record, actions, encryptionContext); - Fase 7: Inserire l'elemento nella tabella DynamoDB
-
Infine, inserisci l'elemento crittografato e firmato nella tabella DynamoDB.
final DynamoDbClient ddb = DynamoDbClient.builder().region(Region.of(region)).build(); ddb.putItem(tableName, encrypted_record);