Buat kunci cabang aktif - AWS Encryption SDK

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

Buat kunci cabang aktif

Kunci cabang adalah kunci data yang berasal dari AWS KMS key yang digunakan oleh keyring AWS KMS Hierarkis untuk mengurangi jumlah panggilan yang dilakukan. AWS KMS Kunci cabang aktif adalah versi kunci cabang terbaru. Keyring Hierarkis menghasilkan kunci data unik untuk setiap permintaan enkripsi dan mengenkripsi setiap kunci data dengan kunci pembungkus unik yang berasal dari kunci cabang aktif.

Untuk membuat kunci cabang aktif baru, Anda harus mengonfigurasi tindakan penyimpanan kunci secara statis. CreateKeyadalah operasi istimewa yang menambahkan KMS kunci yang ARN ditentukan dalam konfigurasi tindakan penyimpanan kunci Anda ke daftar izin toko kunci Anda. Kemudian, KMS kunci digunakan untuk menghasilkan kunci cabang aktif baru. Kami menyarankan untuk membatasi akses ke operasi ini karena setelah KMS kunci ditambahkan ke toko kunci, itu tidak dapat dihapus.

Anda dapat mengizinkan daftar satu KMS kunci di toko kunci Anda, atau Anda dapat mengizinkan beberapa KMS kunci dengan memperbarui KMS kunci ARN yang Anda tentukan dalam konfigurasi tindakan penyimpanan kunci Anda dan menelepon CreateKey lagi. Jika Anda mengizinkan beberapa KMS kunci, pengguna toko kunci Anda harus mengonfigurasi tindakan penyimpanan kunci mereka untuk penemuan sehingga mereka dapat menggunakan salah satu kunci yang diizinkan di toko kunci yang dapat mereka akses. Untuk informasi selengkapnya, lihat Konfigurasikan tindakan penyimpanan kunci.

Izin yang diperlukan

Untuk membuat kunci cabang, Anda memerlukan ReEncrypt izin kms: GenerateDataKeyWithoutPlaintext dan kms: pada KMS kunci yang ditentukan dalam tindakan penyimpanan kunci Anda.

Buat kunci cabang

Operasi berikut membuat kunci cabang aktif baru menggunakan KMS kunci yang Anda tentukan dalam konfigurasi tindakan penyimpanan kunci Anda, dan menambahkan kunci cabang aktif ke tabel DynamoDB yang berfungsi sebagai penyimpanan kunci Anda.

Saat Anda meneleponCreateKey, Anda dapat memilih untuk menentukan nilai opsional berikut.

Java
final Map<String, String> additionalEncryptionContext = Collections.singletonMap("Additional Encryption Context for", "custom branch key id"); final String BranchKey = keystore.CreateKey( CreateKeyInput.builder() .branchKeyIdentifier(custom-branch-key-id) //OPTIONAL .encryptionContext(additionalEncryptionContext) //OPTIONAL .build()).branchKeyIdentifier();
C# / .NET
var additionalEncryptionContext = new Dictionary<string, string>(); additionalEncryptionContext.Add("Additional Encryption Context for", "custom branch key id"); var branchKeyId = keystore.CreateKey(new CreateKeyInput { BranchKeyIdentifier = "custom-branch-key-id", // OPTIONAL EncryptionContext = additionalEncryptionContext // OPTIONAL });
Python
additional_encryption_context = {"Additional Encryption Context for": "custom branch key id"} branch_key_id: str = keystore.create_key( CreateKeyInput( branch_key_identifier = "custom-branch-key-id", # OPTIONAL encryption_context = additional_encryption_context, # OPTIONAL ) )

Pertama, CreateKey operasi menghasilkan nilai-nilai berikut.

Kemudian, CreateKey operasi memanggil kms: GenerateDataKeyWithoutPlaintext menggunakan permintaan berikut.

{ "EncryptionContext": { "branch-key-id" : "branch-key-id", "type" : "type", "create-time" : "timestamp", "logical-key-store-name" : "the logical table name for your key store", "kms-arn" : the KMS key ARN, "hierarchy-version" : "1", "aws-crypto-ec:contextKey": "contextValue" }, "KeyId": "the KMS key ARN you specified in your key store actions", "NumberOfBytes": "32" }

Selanjutnya, CreateKey operasi memanggil kms: ReEncrypt untuk membuat catatan aktif untuk kunci cabang dengan memperbarui konteks enkripsi.

Terakhir, CreateKey operasi memanggil ddb: TransactWriteItems untuk menulis item baru yang akan mempertahankan kunci cabang dalam tabel yang Anda buat di Langkah 2. Item memiliki atribut berikut.

{ "branch-key-id" : branch-key-id, "type" : "branch:ACTIVE", "enc" : the branch key returned by the GenerateDataKeyWithoutPlaintext call, "version": "branch:version:the branch key version UUID", "create-time" : "timestamp", "kms-arn" : "the KMS key ARN you specified in Step 1", "hierarchy-version" : "1", "aws-crypto-ec:contextKey": "contextValue" }