Multi-gantungan kunci - AWS Enkripsi Database SDK

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Multi-gantungan kunci

Pustaka enkripsi sisi klien kami diubah namanya menjadi SDK Enkripsi AWS Database. Panduan pengembang ini masih memberikan informasi tentang Klien Enkripsi DynamoDB.

Anda dapat menggabungkan keyrings menjadi multi-keyring. Multi-keyring adalah keyring yang terdiri dari satu atau lebih gantungan kunci individu dari jenis yang sama atau berbeda. Efeknya seperti menggunakan beberapa gantungan kunci dalam satu seri. Bila Anda menggunakan multi-keyring untuk mengenkripsi data, salah satu kunci pembungkus di salah satu keyrings nya dapat mendekripsi data tersebut.

Saat Anda membuat multi-keyring untuk mengenkripsi data, Anda menunjuk salah satu keyring sebagai keyring generator. Semua gantungan kunci lainnya dikenal sebagai gantungan kunci anak. Generator keyring menghasilkan dan mengenkripsi kunci data plaintext. Kemudian, semua kunci pembungkus di semua keyring anak mengenkripsi kunci data teks biasa yang sama. Multi-keyring mengembalikan kunci plaintext dan satu kunci data terenkripsi untuk setiap kunci pembungkus di multi-keyring. Jika keyring generator adalah keyring KMS, kunci generator di AWS KMS keyring menghasilkan dan mengenkripsi kunci plaintext. Kemudian, semua tambahan AWS KMS keys di AWS KMS keyring, dan semua kunci pembungkus di semua keyring anak di multi-keyring, mengenkripsi kunci plaintext yang sama.

Saat mendekripsi, AWS Database Encryption SDK menggunakan keyrings untuk mencoba mendekripsi salah satu kunci data terenkripsi. Gantungan kunci dipanggil dalam urutan yang ditentukan dalam multi-keyring. Pemrosesan berhenti segera setelah kunci apa pun di keyring apa pun dapat mendekripsi kunci data terenkripsi.

Untuk membuat multi-keyring, pertama-tama buat instance keyrings anak. Dalam contoh ini, kami menggunakan AWS KMS keyring dan keyring Raw AES, tetapi Anda dapat menggabungkan keyrings yang didukung dalam multi-keyring.

Java
// 1. Create the raw AES keyring. final MaterialProviders matProv = MaterialProviders.builder() .MaterialProvidersConfig(MaterialProvidersConfig.builder().build()) .build(); final CreateRawAesKeyringInput createRawAesKeyringInput = CreateRawAesKeyringInput.builder() .keyName("AES_256_012") .keyNamespace("HSM_01") .wrappingKey(AESWrappingKey) .wrappingAlg(AesWrappingAlg.ALG_AES256_GCM_IV12_TAG16) .build(); IKeyring rawAesKeyring = matProv.CreateRawAesKeyring(createRawAesKeyringInput); // 2. Create the AWS KMS keyring. final CreateAwsKmsMrkMultiKeyringInput createAwsKmsMrkMultiKeyringInput = CreateAwsKmsMrkMultiKeyringInput.builder() .generator(kmsKeyArn) .build(); IKeyring awsKmsMrkMultiKeyring = matProv.CreateAwsKmsMrkMultiKeyring(createAwsKmsMrkMultiKeyringInput);
C# / .NET
// 1. Create the raw AES keyring. var keyNamespace = "HSM_01"; var keyName = "AES_256_012"; var matProv = new MaterialProviders(new MaterialProvidersConfig()); var createRawAesKeyringInput = new CreateRawAesKeyringInput { KeyName = "keyName", KeyNamespace = "myNamespaces", WrappingKey = AESWrappingKey, WrappingAlg = AesWrappingAlg.ALG_AES256_GCM_IV12_TAG16 }; var rawAesKeyring = matProv.CreateRawAesKeyring(createRawAesKeyringInput); // 2. Create the AWS KMS keyring. // We create a MRK multi keyring, as this interface also supports // single-region KMS keys, // and creates the KMS client for us automatically. var createAwsKmsMrkMultiKeyringInput = new CreateAwsKmsMrkMultiKeyringInput { Generator = keyArn }; var awsKmsMrkMultiKeyring = matProv.CreateAwsKmsMrkMultiKeyring(createAwsKmsMrkMultiKeyringInput);

Selanjutnya, buat multi-keyring dan tentukan keyring generatornya, jika ada. Dalam contoh ini, kami membuat multi-keyring di mana keyring adalah AWS KMS keyring generator dan keyring AES adalah keyring anak.

Java

CreateMultiKeyringInputKonstruktor Java memungkinkan Anda menentukan keyring generator dan keyrings anak. createMultiKeyringInputObjek yang dihasilkan tidak dapat diubah.

final CreateMultiKeyringInput createMultiKeyringInput = CreateMultiKeyringInput.builder() .generator(awsKmsMrkMultiKeyring) .childKeyrings(Collections.singletonList(rawAesKeyring)) .build(); IKeyring multiKeyring = matProv.CreateMultiKeyring(createMultiKeyringInput);
C# / .NET

CreateMultiKeyringInputKonstruktor.NET memungkinkan Anda menentukan keyring generator dan keyrings anak. CreateMultiKeyringInputObjek yang dihasilkan tidak dapat diubah.

var createMultiKeyringInput = new CreateMultiKeyringInput { Generator = awsKmsMrkMultiKeyring, ChildKeyrings = new List<IKeyring> { rawAesKeyring } }; var multiKeyring = matProv.CreateMultiKeyring(createMultiKeyringInput);

Sekarang, Anda dapat menggunakan multi-keyring untuk mengenkripsi dan mendekripsi data.