Penyedia Bahan KMS Langsung - AWS Enkripsi Database SDK

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

Penyedia Bahan KMS Langsung

catatan

Pustaka enkripsi sisi klien kami diubah namanya menjadi AWS Database Encryption SDK. Topik berikut memberikan informasi tentang versi 1. x —2. x dari DynamoDB Encryption Client untuk Java dan versi 1. x —3. x dari DynamoDB Encryption Client untuk Python. Untuk informasi selengkapnya, lihat SDK Enkripsi AWS Database untuk dukungan versi DynamoDB.

Penyedia Materi KMS Langsung (Penyedia KMS Langsung) melindungi item tabel Anda di bawah AWS KMS keyyang tidak pernah meninggalkan AWS Key Management Service(AWS KMS) tidak terenkripsi. Penyedia bahan kriptografi ini mengembalikan kunci enkripsi yang unik dan kunci penandatanganan untuk setiap item tabel. Untuk melakukannya, penyedia ini memanggil AWS KMS setiap kali Anda mengenkripsi atau mendekripsi item.

Jika Anda memproses item DynamoDB pada frekuensi tinggi dan skala besar, Anda mungkin melebihi AWS KMS requests-per-secondbatas, yang menyebabkan penundaan pemrosesan. Jika Anda perlu melebihi batas, buat kasus di AWS SupportPusat. Anda juga dapat mempertimbangkan untuk menggunakan penyedia bahan kriptografi dengan penggunaan kembali kunci secara terbatas, seperti Penyedia Terbaru.

Untuk menggunakan Penyedia KMS Langsung, penelepon harus memiliki Akun AWS, setidaknya satuAWS KMS key, dan izin untuk memanggil GenerateDataKeydan Dekripsi operasi pada. AWS KMS key AWS KMS keyHarus berupa kunci enkripsi simetris; Klien Enkripsi DynamoDB tidak mendukung enkripsi asimetris. Jika Anda menggunakan tabel global DynamoDB, Anda mungkin ingin menentukan kunci multi-Wilayah AWS KMS. Untuk detail selengkapnya, lihat Cara menggunakannya.

catatan

Ketika Anda menggunakan Penyedia KMS Langsung, nama dan nilai-nilai atribut kunci utama Anda muncul di plaintext di konteks enkripsi AWS KMS dan log AWS CloudTrail dari operasi AWS KMS yang terkait. Namun, DynamoDB Encryption Client tidak pernah mengekspos plaintext dari nilai-nilai atribut terenkripsi.

Penyedia KMS Langsung adalah salah satu dari beberapa penyedia bahan kriptografi (CMP) yang didukung DynamoDB Encryption Client. Untuk informasi tentang CMP lainnya, lihat Penyedia materi kriptografi.

Misalnya kode, lihat:

Cara menggunakannya

Untuk membuat Penyedia KMS Langsung, gunakan parameter ID kunci untuk menentukan kunci KMS enkripsi simetris di akun Anda. Nilai parameter ID kunci dapat menjadi ID kunci, kunci ARN, nama alias, atau alias ARN dari. AWS KMS key Untuk detail tentang pengidentifikasi kunci, lihat Pengidentifikasi kunci dalam Panduan Developer AWS Key Management Service.

Penyedia Direct KMS memerlukan kunci KMS enkripsi simetris. Anda tidak dapat menggunakan kunci KMS asimetris. Namun, Anda dapat menggunakan kunci KMS Multi-wilayah, kunci KMS dengan bahan kunci yang diimpor, atau kunci KMS di toko kunci kustom. Anda harus memiliki kms: GenerateDataKey dan kms:Dekripsi izin pada kunci KMS. Dengan demikian, Anda harus menggunakan kunci yang dikelola pelanggan, bukan kunci KMS yang AWS dikelola atau AWS dimiliki.

DynamoDB Encryption Client untuk Python menentukan Wilayah untuk memanggil AWS KMS dari Wilayah dalam nilai parameter ID kunci, jika memilikinya. Jika tidak, ia akan menggunakan Wilayah di klien AWS KMS, jika Anda menentukannya, atau Wilayah yang Anda konfigurasi dalam AWS SDK for Python (Boto3). Untuk informasi tentang pemilihan Wilayah di Python, lihat Konfigurasi dalam Referensi API SDK for Python (Boto3) AWS.

DynamoDB Encryption Client untuk Java menentukan Wilayah untuk memanggil AWS KMS dari Wilayah di klien AWS KMS, jika klien yang Anda tentukan mencakup Wilayah. Jika tidak, ia akan menggunakan Wilayah yang Anda konfigurasi di AWS SDK for Java. Untuk informasi tentang pemilihan Wilayah diAWS SDK for Java, lihat Wilayah AWSseleksi di Panduan AWS SDK for Java Pengembang.

Java
// Replace the example key ARN and Region with valid values for your application final String keyArn = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' final String region = 'us-west-2' final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider cmp = new DirectKmsMaterialProvider(kms, keyArn);
Python

Contoh berikut menggunakan ARN kunci untuk menentukan. AWS KMS key Jika pengenal kunci Anda tidak menyertakanWilayah AWS, Klien Enkripsi DynamoDB mendapatkan Wilayah dari sesi Botocore yang dikonfigurasi, jika ada, atau dari Boto default.

# Replace the example key ID with a valid value kms_key = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' kms_cmp = AwsKmsCryptographicMaterialsProvider(key_id=kms_key)

Jika Anda menggunakan tabel global Amazon DynamoDB, kami sarankan Anda mengenkripsi data Anda di bawah kunci Multi-wilayah. AWS KMS Kunci Multi-Region berbeda Wilayah AWS yang dapat digunakan AWS KMS keys secara bergantian karena memiliki ID kunci dan bahan kunci yang sama. Untuk detailnya, lihat Menggunakan kunci multi-Wilayah dalam Panduan Developer AWS Key Management Service.

catatan

Jika Anda menggunakan tabel global versi 2017.11.29, Anda harus mengatur tindakan atribut sehingga bidang replikasi yang dipesan tidak dienkripsi atau ditandatangani. Untuk detailnya, lihat Masalah dengan tabel global versi lama.

Untuk menggunakan kunci multi-Wilayah dengan DynamoDB Encryption Client, buat kunci multi-Wilayah dan replikasi ke Wilayah di mana aplikasi Anda berjalan. Kemudian konfigurasi Penyedia Langsung KMS untuk menggunakan kunci multi-Wilayah di wilayah di mana klien DynamoDB Encryption Client memanggil AWS KMS.

Contoh berikut mengonfigurasi DynamoDB Encryption Client untuk mengenkripsi data di Wilayah AS Timur (N. Virginia) (us-east-1) dan mendekripsi di Wilayah AS Barat (Oregon) (us-west-2) menggunakan kunci multi-Wilayah.

Java

Dalam contoh ini, DynamoDB Encryption Client mendapat Wilayah untuk memanggil AWS KMS dari Wilayah di klien AWS KMS. Nilai keyArn mengidentifikasi kunci multi-Wilayah dalam Wilayah yang sama.

// Encrypt in us-east-1 // Replace the example key ARN and Region with valid values for your application final String usEastKey = 'arn:aws:kms:us-east-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' final String region = 'us-east-1' final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider cmp = new DirectKmsMaterialProvider(kms, usEastKey);
// Decrypt in us-west-2 // Replace the example key ARN and Region with valid values for your application final String usWestKey = 'arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' final String region = 'us-west-2' final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider cmp = new DirectKmsMaterialProvider(kms, usWestKey);
Python

Dalam contoh ini, DynamoDB Encryption Client mendapat Wilayah untuk memanggil AWS KMS dari Wilayah di ARN kunci.

# Encrypt in us-east-1 # Replace the example key ID with a valid value us_east_key = 'arn:aws:kms:us-east-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' kms_cmp = AwsKmsCryptographicMaterialsProvider(key_id=us_east_key)
# Decrypt in us-west-2 # Replace the example key ID with a valid value us_west_key = 'arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' kms_cmp = AwsKmsCryptographicMaterialsProvider(key_id=us_west_key)

Cara kerjanya

Penyedia Direct KMS mengembalikan kunci enkripsi dan penandatanganan yang dilindungi oleh AWS KMS key yang Anda tentukan, seperti yang ditunjukkan pada diagram berikut.

Input, pemrosesan, dan output dari Penyedia KMS Langsung di DynamoDB Encryption Client
  • Untuk menghasilkan materi enkripsi, Penyedia KMS Langsung meminta AWS KMS untuk menghasilkan kunci data unik untuk setiap item menggunakan AWS KMS key yang Anda tentukan. Penyedia ini mendapatkan kunci enkripsi dan penandatanganan untuk item dari salinan plaintext dari kunci data, kemudian mengembalikan kunci enkripsi dan penandatanganan, bersama dengan kunci data terenkripsi, yang disimpan dalam atribut deskripsi bahan item tersebut.

    Enkriptor item menggunakan kunci enkripsi dan penandatanganan serta membuangnya dari memori secepat mungkin. Hanya salinan terenkripsi dari kunci data dari lokasi mereka diambil yang disimpan dalam item yang dienkripsi.

  • Untuk membuat bahan dekripsi, Penyedia KMS Langsung meminta AWS KMS untuk mendekripsi kunci data terenkripsi. Kemudian, ia mendapatkan verifikasi dan kunci penandatanganan dari kunci data plaintext, dan mengembalikan mereka ke enkriptor item.

    Enkriptor item memverifikasi item dan, jika verifikasi berhasil, mendekripsi nilai terenkripsi. Kemudian, ia menghapus kunci dari memori sesegera mungkin.

Dapatkan bahan enkripsi

Bagian ini menjelaskan secara detail input, output, dan pemrosesan Penyedia KMS Langsung ketika menerima permintaan bahan enkripsi dari enkriptor item.

Input (dari aplikasi)

  • ID kunci dari sebuahAWS KMS key.

Input (dari enkriptor item)

Output (untuk enkriptor item)

  • Kunci enkripsi (plaintext)

  • Kunci penandatanganan

  • Dalam deskripsi bahan aktual: Nilai-nilai ini disimpan dalam atribut deskripsi bahan yang ditambahkan klien ke item.

    • amzn-ddb-env-key: Base64 dikodekan kunci data dienkripsi oleh AWS KMS key

    • amzn-ddb-env-alg: Algoritma enkripsi, secara default AES/256

    • amzn-ddb-sig-alg: Penandatanganan algoritma, secara default, HMACSHA256/256

    • amzn-ddb-wrap-alg: km

Pengolahan

  1. Penyedia KMS Langsung mengirimkan AWS KMS permintaan untuk menggunakan yang ditentukan AWS KMS key untuk menghasilkan kunci data unik untuk item tersebut. Operasi mengembalikan kunci plaintext dan salinan yang dienkripsi di bawah. AWS KMS key Hal ini dikenal sebagai bahan kunci awal.

    Permintaan tersebut mencakup nilai-nilai berikut dalam plaintext pada konteks enkripsi AWS KMS. Nilai-nilai non-rahasia ini secara kriptografi terikat pada objek terenkripsi, sehingga konteks enkripsi yang sama diperlukan pada dekripsi. Anda dapat menggunakan nilai-nilai ini untuk mengidentifikasi panggilan ke AWS KMS dilog AWS CloudTrail.

    • amzn-ddb-env-alg- Algoritma enkripsi, secara default AES/256

    • amzn-ddb-sig-alg- Algoritma penandatanganan, secara default HMACSha256/256

    • (Opsional) aws-kms-table - nama tabel

    • (Opsional) nama kunci partisinilai kunci partisi (nilai biner adalah terenkode Base64)

    • (Opsional) nama kunci partisinilai kunci partisi (nilai biner adalah terenkode Base64)

    Penyedia KMS Langsung mendapatkan nilai untuk konteks enkripsi AWS KMS dari konteks enkripsi DynamoDB untuk item tersebut. Jika konteks enkripsi DynamoDB tidak mencakup nilai, seperti nama tabel, pasangan nilai-nama dihilangkan dari konteks enkripsi AWS KMS.

  2. Penyedia KMS Langsung mendapat kunci enkripsi simetris dan kunci penandatanganan dari kunci data. Secara default, ia menggunakan Algoritma Hash Aman (SHA) 256 dan Fungsi Derivasi Kunci Berbasis HMAC RFC5869 untuk mendapatkan kunci enkripsi simetris AES 256-bit dan kunci penandatanganan HMAC-SHA-256 256-bit.

  3. Penyedia KMS Langsung mengembalikan output ke enkriptor item.

  4. Enkriptor item menggunakan kunci enkripsi untuk mengenkripsi atribut yang ditentukan dan kunci penandatanganan untuk menandatanganinya, menggunakan algoritma yang ditentukan dalam deskripsi bahan yang aktual. Ia akan menghapus kunci plaintext dari memori sesegera mungkin.

Dapatkan materi dekripsi

Bagian ini menjelaskan secara detail input, output, dan pemrosesan Penyedia KMS Langsung ketika menerima permintaan bahan dekripsi dari enkriptor item.

Input (dari aplikasi)

  • ID kunci dari sebuahAWS KMS key.

    Nilai ID kunci dapat menjadi ID kunci, kunci ARN, nama alias atau alias ARN dari. AWS KMS key Nilai apa pun yang tidak disertakan dalam ID kunci, seperti Wilayah, harus tersedia di profil AWS bernama. Kunci ARN menyediakan semua nilai yang AWS KMS dibutuhkan.

Input (dari enkriptor item)

Output (untuk enkriptor item)

  • Kunci enkripsi (plaintext)

  • Kunci penandatanganan

Pengolahan

  1. Penyedia KMS Langsung mendapatkan kunci data terenkripsi dari atribut deskripsi material dalam item yang dienkripsi.

  2. Ia meminta AWS KMS untuk menggunakan ditentukan AWS KMS key untuk mendekripsi kunci data terenkripsi. Operasi mengembalikan kunci plaintext.

    Permintaan ini harus menggunakan konteks enkripsi AWS KMS yang digunakan untuk membuat dan mengenkripsi kunci data.

    • aws-kms-table— nama tabel

    • nama kunci partisinilai kunci partisi (nilai biner adalah terenkode Base64)

    • (Opsional) nama kunci partisinilai kunci partisi (nilai biner adalah terenkode Base64)

    • amzn-ddb-env-alg- Algoritma enkripsi, secara default AES/256

    • amzn-ddb-sig-alg- Algoritma penandatanganan, secara default HMACSha256/256

  3. Penyedia KMS Langsung menggunakan Algoritma Hash Aman (SHA) 256 dan Fungsi Derivasi Kunci Berbasis HMAC RFC5869 untuk mendapatkan kunci enkripsi simetris AES 256-bit dan kunci penandatanganan HMAC-SHA-256 256-bit dari kunci data.

  4. Penyedia KMS Langsung mengembalikan output ke enkriptor item.

  5. Enkriptor item menggunakan kunci penandatanganan untuk memverifikasi item. Jika berhasil, ia menggunakan kunci enkripsi simetris untuk mendekripsi nilai atribut terenkripsi. Operasi ini menggunakan algoritma enkripsi dan penandatanganan yang ditentukan dalam deskripsi bahan aktual. Enkriptor item akan menghapus kunci plaintext dari memori sesegera mungkin.