Penyedia Terbaru - 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 Terbaru

catatan

Pustaka enkripsi sisi klien kami diubah namanya menjadi SDK Enkripsi AWS Database. 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 Terbaru adalah penyedia bahan kriptografi (CMP) yang dirancang untuk bekerja dengan toko penyedia. Penyedia ini mendapatkan CMP dari toko penyedia, dan memperoleh bahan kriptografi yang kembali dari CMP. Ia biasanya menggunakan setiap CMP untuk memenuhi beberapa permintaan untuk bahan kriptografi. Namun, Anda dapat menggunakan fitur dari toko penyedia untuk mengendalikan sejauh mana bahan akan digunakan kembali, menentukan seberapa sering CMP dirotasi, dan bahkan mengubah jenis CMP yang digunakan tanpa mengubah Penyedia Terbaru.

catatan

Kode yang terkait dengan simbol MostRecentProvider untuk Penyedia Terbaru mungkin menyimpan bahan kriptografi dalam memori untuk seumur hidup proses. Kode ini mungkin membuat pemanggil dapat menggunakan tombol yang tidak lagi diotorisasi untuk digunakan.

Simbol MostRecentProvider tidak lagi digunakan di versi terdukung yang lebih lama dari DynamoDB Encryption Client dan dihapus dari versi 2.0.0. Simbol ini digantikan oleh simbol CachingMostRecentProvider. Untuk detail selengkapnya, lihat Pembaruan untuk Penyedia Terbaru.

Penyedia Terbaru adalah pilihan yang baik untuk aplikasi yang perlu meminimalkan panggilan ke toko penyedia dan sumber kriptografi mereka, serta aplikasi yang dapat menggunakan kembali beberapa bahan kriptografi tanpa melanggar persyaratan keamanan mereka. Misalnya, Hal ini memungkinkan Anda untuk melindungi materi kriptografi Anda di bawah AWS KMS keyin AWS Key Management Service(AWS KMS) tanpa menelepon AWS KMS setiap kali Anda mengenkripsi atau mendekripsi item.

Toko penyedia yang Anda pilih menentukan jenis CMP yang digunakan penyedia terbaru dan seberapa sering ia mendapatkan CMP baru. Anda dapat menggunakan toko penyedia yang kompatibel dengan Penyedia Terbaru, termasuk toko penyedia kustom yang Anda desain.

Klien Enkripsi DynamoDB menyertakan MetaStoreyang membuat dan mengembalikan Wrapped Materials Providers (Wrapped CMP). MetaStoreMenyimpan beberapa versi CMP Wrapped yang dihasilkannya dalam tabel DynamoDB internal dan melindunginya dengan enkripsi sisi klien oleh instance internal Klien Enkripsi DynamoDB.

Anda dapat mengonfigurasi MetaStore untuk menggunakan semua jenis CMP internal untuk melindungi materi dalam tabel, termasuk Penyedia KMS Langsung yang menghasilkan materi kriptografi yang dilindungi oleh AndaAWS KMS key, CMP Wrapped yang menggunakan kunci pembungkus dan penandatanganan yang Anda berikan, atau CMP kustom yang kompatibel yang Anda desain.

Misalnya kode, lihat:

Cara menggunakannya

Untuk membuat Penyedia Terbaru, Anda perlu membuat dan mengonfigurasi toko penyedia, kemudian membuat Penyedia Terbaru yang menggunakan toko penyedia.

Contoh berikut menunjukkan cara membuat Penyedia Terbaru yang menggunakan MetaStore dan melindungi versi dalam tabel DynamoDB internalnya dengan materi kriptografi dari Penyedia KMS Langsung. Contoh-contoh ini menggunakan simbol CachingMostRecentProvider.

Setiap Penyedia Terbaru memiliki nama yang mengidentifikasi CMP-nya di MetaStore tabel, setelan time-to-live(TTL), dan pengaturan ukuran cache yang menentukan berapa banyak entri yang dapat disimpan cache. Contoh ini mengatur ukuran cache hingga 1000 entri dan TTL selama 60 detik.

Java
// Set the name for MetaStore's internal table final String keyTableName = 'metaStoreTable' // Set the Region and AWS KMS key final String region = 'us-west-2' final String keyArn = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' // Set the TTL and cache size final long ttlInMillis = 60000; final long cacheSize = 1000; // Name that identifies the MetaStore's CMPs in the provider store final String materialName = 'testMRP' // Create an internal DynamoDB client for the MetaStore final AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.standard().withRegion(region).build(); // Create an internal Direct KMS Provider for the MetaStore final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider kmsProv = new DirectKmsMaterialProvider(kms, keyArn); // Create an item encryptor for the MetaStore, // including the Direct KMS Provider final DynamoDBEncryptor keyEncryptor = DynamoDBEncryptor.getInstance(kmsProv); // Create the MetaStore final MetaStore metaStore = new MetaStore(ddb, keyTableName, keyEncryptor); //Create the Most Recent Provider final CachingMostRecentProvider cmp = new CachingMostRecentProvider(metaStore, materialName, ttlInMillis, cacheSize);
Python
# Designate an AWS KMS key kms_key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' # Set the name for MetaStore's internal table meta_table_name = 'metaStoreTable' # Name that identifies the MetaStore's CMPs in the provider store material_name = 'testMRP' # Create an internal DynamoDB table resource for the MetaStore meta_table = boto3.resource('dynamodb').Table(meta_table_name) # Create an internal Direct KMS Provider for the MetaStore kms_cmp = AwsKmsCryptographicMaterialsProvider(key_id=kms_key_id) # Create the MetaStore with the Direct KMS Provider meta_store = MetaStore( table=meta_table, materials_provider=kms_cmp ) # Create a Most Recent Provider using the MetaStore # Sets the TTL (in seconds) and cache size (# entries) most_recent_cmp = MostRecentProvider( provider_store=meta_store, material_name=material_name, version_ttl=60.0, cache_size=1000 )

Cara kerjanya

Penyedia Terbaru mendapatkan CMP dari toko penyedia. Kemudian, penyedia ini menggunakan CMP untuk menghasilkan bahan kriptografi yang dikembalikan ke enkriptor item.

Tentang Penyedia Terbaru

Penyedia Terbaru mendapatkan penyedia bahan kriptografi (CMP) dari penyimpanan penyedia. Kemudian, penyedia ini menggunakan CMP untuk menghasilkan bahan kriptografi yang akan dikembalikan. Setiap Penyedia Terbaru terhubung dengan satu toko penyedia, tetapi toko penyedia dapat memasok CMP untuk banyak penyedia di beberapa host.

Penyedia Terbaru dapat digunakan dengan CMP yang kompatibel dari toko penyedia. Ia meminta bahan enkripsi atau dekripsi dari CMP dan mengembalikan output ke enkriptor item. Ia tidak melakukan operasi kriptografis apa pun.

Untuk meminta CMP dari toko penyedia, Penyedia Terbaru memasok nama bahan dan versi CMP yang ada yang hendak digunakan. Untuk bahan enkripsi, Penyedia Terbaru selalu meminta versi maksimum (“terbaru”). Untuk bahan dekripsi, ia meminta versi CMP yang digunakan untuk membuat bahan enkripsi, seperti yang ditunjukkan dalam diagram berikut.

Penyedia Terbaru

Penyedia Terbaru menyimpan versi CMP yang penyedia toko kembalikan di cache Yang Baru Digunakan (LRU) lokal dalam memori. Cache memungkinkan Provider Terbaru untuk mendapatkan CMP yang dibutuhkan tanpa memanggil toko penyedia untuk setiap item. Anda dapat menghapus cache sesuai permintaan.

Penyedia Terbaru menggunakan time-to-livenilai yang dapat dikonfigurasi yang dapat Anda sesuaikan berdasarkan karakteristik aplikasi Anda.

Tentang MetaStore

Anda dapat menggunakan Penyedia Terbaru dengan toko penyedia apa pun, termasuk toko penyedia kustom yang kompatibel. Klien Enkripsi DynamoDB menyertakan implementasi aman yang dapat Anda konfigurasikan dan sesuaikan. MetaStore

A MetaStoreadalah toko penyedia yang membuat dan mengembalikan CMP Wrapped yang dikonfigurasi dengan kunci pembungkus, kunci pembungkus, dan kunci penandatanganan yang diperlukan oleh Wrapped CMP. A MetaStore adalah opsi aman untuk Penyedia Terbaru karena Wrapped CMP selalu menghasilkan kunci enkripsi item unik untuk setiap item. Hanya kunci pembungkus yang melindungi kunci enkripsi item dan tombol penandatanganan digunakan kembali.

Diagram berikut menunjukkan komponen MetaStore dan bagaimana berinteraksi dengan Penyedia Terbaru.

SEBUAH MetaStore

MetaStoreMenghasilkan CMP Wrapped, dan kemudian menyimpannya (dalam bentuk terenkripsi) dalam tabel DynamoDB internal. Kunci partisi adalah nama dari bahan Penyedia Terbaru; kunci pengurutan nomor versinya. Bahan-bahan dalam tabel dilindungi oleh DynamoDB Encryption Client internal, termasuk enkriptor item dan penyedia bahan kriptografi (CMP) internal.

Anda dapat menggunakan semua jenis CMP internal di AndaMetaStore, termasuk Penyedia Direct KMS, CMP Wrapped dengan materi kriptografi yang Anda berikan, atau CMP kustom yang kompatibel. Jika CMP internal Anda MetaStore adalah Penyedia KMS Langsung, kunci pembungkus dan penandatanganan yang dapat digunakan kembali dilindungi di bawah a AWS KMS keyin AWS Key Management Service(). AWS KMS MetaStorePanggilan AWS KMS setiap kali menambahkan versi CMP baru ke tabel internalnya atau mendapatkan versi CMP dari tabel internalnya.

Menetapkan time-to-live nilai

Anda dapat menetapkan nilai time-to-live (TTL) untuk setiap Penyedia Terbaru yang Anda buat. Secara umum, gunakan nilai TTL terendah yang praktis untuk aplikasi Anda.

Penggunaan nilai TTL berubah dalam simbol CachingMostRecentProvider untuk Penyedia Terbaru.

catatan

Simbol MostRecentProvider untuk Penyedia Terbaru tidak lagi digunakan di versi terdukung yang lebih lama dari DynamoDB Encryption Client dan dihapus dari versi 2.0.0. Simbol ini digantikan oleh simbol CachingMostRecentProvider. Kami menyarankan agar Anda memperbarui kode sesegera mungkin. Untuk detail selengkapnya, lihat Pembaruan untuk Penyedia Terbaru.

CachingMostRecentProvider

Parameter CachingMostRecentProvider menggunakan nilai TTL dalam dua cara yang berbeda.

  • TTL menentukan seberapa sering Penyedia Terbaru memeriksa toko penyedia untuk versi baru CMP. Jika versi baru tersedia, Penyedia Terbaru menggantikan CMP dan menyegarkan bahan kriptografinya. Jika tidak, ia akan terus menggunakan CMP dan bahan kriptografi saat ini.

  • TTL menentukan seberapa lama CMP dalam cache dapat digunakan. Sebelum ia menggunakan CMP cache untuk enkripsi, Penyedia Terbaru mengevaluasi waktu dalam cache. Jika waktu cache CMP melebihi TTL, CMP dikosongkan dari cache dan Penyedia Terbaru mendapat CMP versi paling baru dari toko penyedianya.

MostRecentProvider

Di MostRecentProvider, TTL menentukan seberapa sering Penyedia Terbaru memeriksa toko penyedia untuk versi baru CMP. Jika versi baru tersedia, Penyedia Terbaru menggantikan CMP dan menyegarkan bahan kriptografinya. Jika tidak, ia akan terus menggunakan CMP dan bahan kriptografi saat ini.

TTL tidak menentukan seberapa sering versi CMP baru dibuat. Anda membuat versi CMP baru dengan memutar bahan kriptografi.

Nilai TTL yang ideal bervariasi dengan aplikasi dan tujuan latensi dan ketersediaannya. TTL yang lebih rendah meningkatkan profil keamanan Anda dengan mengurangi waktu untuk menyimpan bahan kriptografi di dalam memori. Selain itu, TTL lebih rendah menyegarkan informasi penting lebih sering. Misalnya, jika CMP internal Anda adalah Penyedia Direct KMS, itu memverifikasi lebih sering bahwa penelepon masih berwenang untuk menggunakan. AWS KMS key

Jika TTL terlalu singkat, panggilan berulang ke toko penyedia dapat meningkatkan biaya dan menyebabkan toko penyedia Anda untuk membatasi permintaan dari aplikasi Anda dan aplikasi lain yang juga menggunakan akun layanan Anda. Anda juga dapat memperoleh manfaat dari koordinasi TTL dengan tingkat di mana Anda memutar bahan kriptografi.

Selama pengujian, variasikan ukuran TTL dan cache di bawah beban kerja yang berbeda sampai Anda menemukan konfigurasi yang pas untuk aplikasi Anda serta standar keamanan dan performa Anda.

Memutar bahan kriptografi

Ketika Penyedia Terbaru membutuhkan bahan enkripsi, ia selalu menggunakan versi terbaru dari CMP yang dikenalnya. Frekuensi yang diperiksa untuk versi yang lebih baru ditentukan oleh nilai time-to-live(TTL) yang Anda tetapkan saat Anda mengkonfigurasi Penyedia Terbaru.

Ketika TTL kedaluwarsa, Penyedia Terbaru memeriksa toko penyedia untuk versi CMP lebih baru. Jika ada yang tersedia, Provider Terbaru mendapatkannya dan menggantikan CMP dalam cache-nya. Ia menggunakan CMP ini dan bahan kriptografi sampai menemukan bahwa toko penyedia memiliki versi yang lebih baru.

Untuk memberi tahu toko penyedia untuk membuat versi baru dari CMP untuk Penyedia Terbaru, panggil operasi Buat Penyedia Baru toko penyedia dengan nama bahan Penyedia Terbaru. Toko penyedia membuat CMP baru dan menyimpan salinan terenkripsi dalam penyimpanan internal dengan nomor versi yang lebih besar. (Hal ini juga mengembalikan CMP, tetapi Anda dapat membuangnya.) Akibatnya, di waktu berikutnya Provider Terbaru memberikan kueri kepada toko penyedia untuk nomor versi maksimum CMP-nya, ia mendapatkan nomor versi baru yang lebih besar, dan menggunakannya dalam permintaan berikutnya ke toko untuk melihat apakah versi baru dari CMP telah dibuat.

Anda dapat menjadwalkan panggilan Buat Penyedia Baru berdasarkan waktu, jumlah item atau atribut yang diproses, atau metrik lain yang masuk akal untuk aplikasi Anda.

Dapatkan bahan enkripsi

Penyedia Terbaru menggunakan proses berikut, ditunjukkan dalam diagram ini, untuk mendapatkan bahan enkripsi yang kembali ke enkriptor item. Output bergantung pada jenis CMP yang dikembalikan toko penyedia. Penyedia Terbaru dapat menggunakan toko penyedia yang kompatibel, termasuk MetaStore yang disertakan dalam Klien Enkripsi DynamoDB.

Input, pemrosesan, dan output dari Penyedia Terbaru di DynamoDB Encryption Client

Saat Anda membuat Penyedia Terbaru dengan menggunakan CachingMostRecentProvidersimbol, Anda menentukan toko penyedia, nama untuk Penyedia Terbaru, dan nilai time-to-live(TTL). Anda juga dapat secara opsional menentukan ukuran cache, yang menentukan jumlah maksimum bahan kriptografi yang dapat ditempatkan di cache.

Ketika enkriptor item meminta Penyedia Terbaru untuk bahan enkripsi, Penyedia Terbaru dimulai dengan mencari cache untuk versi terbaru dari CMP.

  • Jika ia menemukan versi terbaru CMP dalam cache dan CMP tidak melebihi nilai TTL, Penyedia Terbaru menggunakan CMP untuk menghasilkan bahan enkripsi. Kemudian, ia mengembalikan bahan enkripsi ke enkriptor item. Operasi ini tidak memerlukan panggilan ke toko penyedia.

  • Jika versi terbaru dari CMP tidak berada dalam cache, atau jika berada dalam cache tetapi telah melebihi nilai TTL, Penyedia Terbaru meminta CMP dari toko penyedia. Permintaan tersebut mencakup nama bahan Penyedia Terbaru dan nomor versi maksimum yang diketahui.

    1. Toko penyedia mengembalikan CMP dari penyimpanan tetap. Jika toko penyedia adalahMetaStore, ia mendapatkan Wrapped CMP terenkripsi dari tabel DynamoDB internalnya dengan menggunakan nama material Provider Terbaru sebagai kunci partisi dan nomor versi sebagai kunci sortir. MetaStoreMenggunakan enkripsi item internal dan CMP internal untuk mendekripsi Wrapped CMP. Kemudian, ia mengembalikan CMP plaintext ke Penyedia Terbaru. Jika CMP internal adalah Penyedia KMS Langsung, langkah ini mencakup panggilan ke AWS Key Management Service (AWS KMS).

    2. CMP menambahkan bidang amzn-ddb-meta-id ke deskripsi bahan aktual. Nilainya adalah nama bahan dan versi CMP dalam tabel internalnya. Toko penyedia mengembalikan CMP ke Penyedia Terbaru.

    3. Penyedia Terbaru menyimpan cache CMP dalam memori.

    4. Penyedia Terbaru menggunakan CMP untuk menghasilkan bahan enkripsi. Kemudian, ia mengembalikan bahan enkripsi ke enkriptor item.

Dapatkan bahan dekripsi

Ketika enkriptor item meminta Penyedia Terbaru untuk bahan dekripsi, Penyedia Terbaru menggunakan proses berikut untuk mendapatkan dan mengembalikannya.

  1. Penyedia Terbaru meminta toko penyedia untuk nomor versi bahan kriptografi yang digunakan untuk mengenkripsi item. Ia meneruskan deskripsi bahan aktual dari atribut deskripsi bahan dari item.

  2. Toko penyedia mendapatkan nomor versi CMP pengenkripsi dari bidang amzn-ddb-meta-id di deskripsi bahan aktual dan mengembalikannya ke Penyedia Terbaru.

  3. Penyedia Terbaru mencari cache untuk versi CMP yang digunakan untuk mengenkripsi dan menandatangani item.

  • Jika menemukan versi pencocokan CMP berada dalam cache dan CMP belum melebihi nilai time-to-live (TTL), Provider Terbaru menggunakan CMP untuk menghasilkan materi dekripsi. Kemudian, ia mengembalikan bahan dekripsi ke enkriptor item. Operasi ini tidak memerlukan panggilan ke toko penyedia atau CMP lainnya.

  • Jika versi CMP yang cocok tidak ada dalam cache, atau jika cache AWS KMS key telah melebihi nilai TTL-nya, Provider Terbaru meminta CMP dari toko penyedianya. Ia mengirimkan nama bahan dan nomor versi CMP pengenkripsi dalam permintaan.

    1. Toko penyedia mencari penyimpanan tetap untuk CMP dengan menggunakan nama Penyedia Terbaru sebagai kunci partisi dan nomor versi sebagai kunci pengurutan.

      • Jika nama dan nomor versi tidak berada dalam penyimpanan tetap, toko penyedia akan memunculkan pengecualian. Jika toko penyedia digunakan untuk menghasilkan CMP, CMP harus disimpan dalam penyimpanan tetap, kecuali jika itu sengaja dihapus.

      • Jika CMP dengan nama yang cocok dan nomor versi berada dalam penyimpanan tetap toko penyedia, toko penyedia mengembalikan CMP yang ditentukan untuk Penyedia Terbaru.

        Jika toko penyedia adalahMetaStore, ia mendapatkan CMP terenkripsi dari tabel DynamoDB. Kemudian, ia menggunakan bahan kriptografi dari CMP internal untuk mendekripsi CMP terenkripsi sebelum mengembalikan CMP ke Penyedia Terbaru. Jika CMP internal adalah Penyedia KMS Langsung, langkah ini mencakup panggilan ke AWS Key Management Service (AWS KMS).

    2. Penyedia Terbaru menyimpan cache CMP dalam memori.

    3. Penyedia Terbaru menggunakan CMP untuk menghasilkan bahan dekripsi. Kemudian, ia mengembalikan bahan dekripsi ke enkriptor item.

Pembaruan untuk Penyedia Terbaru

Simbol untuk Penyedia Terbaru diubah dari MostRecentProvider ke CachingMostRecentProvider.

catatan

Simbol MostRecentProvider, yang mewakili Penyedia Terbaru, tidak lagi digunakan dalam versi 1.15 DynamoDB Encryption Client untuk Java dan versi 1.3 DynamoDB DynamoDB Encryption Client untuk Python dan dihapus dari versi 2.0.0 DynamoDB Encryption Client di kedua implementasi bahasa. Sebagai gantinya, gunakan CachingMostRecentProvider.

CachingMostRecentProvider menerapkan perubahan berikut:

  • CachingMostRecentProviderSecara berkala menghapus materi kriptografi dari memori ketika waktu mereka dalam memori melebihi nilai yang dikonfigurasi time-to-live(TTL).

    MostRecentProvider mungkin menyimpan bahan kriptografi dalam memori selama masa proses. Akibatnya, Penyedia Terbaru mungkin tidak menyadari perubahan otorisasi. Ia mungkin menggunakan kunci enkripsi setelah izin pemanggil untuk menggunakannya dicabut.

    Jika Anda tidak dapat memperbarui ke versi baru ini, Anda bisa mendapatkan efek yang sama dengan secara berkala memanggil metode clear() pada cache. Metode ini secara manual membuang isi cache dan membutuhkan Penyedia Terbaru untuk meminta CMP baru dan bahan kriptografi baru.

  • CachingMostRecentProvider juga mencakup pengaturan ukuran cache yang memberi Anda lebih banyak kontrol atas cache.

Untuk memperbarui ke CachingMostRecentProvider, Anda harus mengubah nama simbol dalam kode Anda. Dalam semua hal lainnya, CachingMostRecentProvider kompatibel mundur sepenuhnya dengan MostRecentProvider. Anda tidak perlu mengenkripsi ulang item tabel.

Namun, CachingMostRecentProvider menghasilkan lebih banyak panggilan ke infrastruktur kunci yang mendasarinya. Ini memanggil toko penyedia setidaknya sekali dalam setiap interval time-to-live (TTL). Aplikasi dengan banyak CMP aktif (karena rotasi yang sering) atau aplikasi dengan armada besar kemungkinan besar sensitif terhadap perubahan ini.

Sebelum merilis kode yang diperbarui, ujilah secara menyeluruh untuk memastikan bahwa panggilan yang lebih sering tidak mengganggu aplikasi Anda atau menyebabkan throttling oleh layanan yang bergantung pada penyedia Anda, seperti AWS Key Management Service (AWS KMS) atau Amazon DynamoDB. Untuk mengurangi masalah kinerja, sesuaikan ukuran cache dan CachingMostRecentProvider berdasarkan karakteristik kinerja yang Anda amati. time-to-live Untuk panduan, lihat Menetapkan time-to-live nilai.