View a markdown version of this page

Enkripsi bundel konfigurasi - Batuan Dasar Amazon AgentCore

Enkripsi bundel konfigurasi

Saat Anda menentukan kmsKeyArn pada bundel konfigurasi, layanan mengenkripsi konfigurasi komponen (prompt sistem, deskripsi alat, dan konten konfigurasi lainnya) menggunakan enkripsi amplop. Semua metadata bundel lainnya (nama, deskripsi, ID versi, cap waktu) tetap dienkripsi dengan kunci yang dimiliki. AWS

Cara kerjanya

Enkripsi bundel konfigurasi menggunakan enkripsi amplop dengan kredensi pemanggil. Saat Anda membuat atau memperbarui bundel dengan akmsKeyArn, layanan menggunakan kredensil Anda (melalui Sesi Akses Teruskan) untuk menghasilkan kunci enkripsi data (DEK) dari KMS. Layanan mengenkripsi konfigurasi komponen secara lokal menggunakan AES-GCM DEK itu, lalu menyimpan DEK terenkripsi di samping bundel. Saat Anda mengambil bundel, layanan mendekripsi DEK menggunakan kredensil Anda dan mendekripsi komponen.

Penelepon harus memilikikms:GenerateDataKey,kms:Decrypt,kms:DescribeKey, dan kms:ReEncrypt* izin pada kunci.

AgentCore pengoptimalan hanya mendukung kunci KMS enkripsi simetris. Kunci KMS harus berada di AWS Wilayah yang sama dengan bundel konfigurasi.

Mengkonfigurasi izin untuk menggunakan kunci KMS yang dikelola pelanggan

Kebijakan kunci berikut memberikan izin minimum yang diperlukan untuk enkripsi bundel konfigurasi. Kebijakan tersebut memiliki dua pernyataan:

  • AllowCallerAccess— Memungkinkan pengguna atau peran IAM untuk memvalidasi kunci melalui. DescribeKey

  • AllowCallerCryptoOps— Memungkinkan pengguna atau peran IAM untuk menghasilkan kunci data, mendekripsi, dan mengenkripsi ulang (untuk rotasi kunci), dicakup oleh konteks enkripsi.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCallerAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyConfigBundleRole" }, "Action": "kms:DescribeKey", "Resource": "*" }, { "Sid": "AllowCallerCryptoOps", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyConfigBundleRole" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt", "kms:ReEncrypt*" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:bedrock-agentcore:configurationBundleArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:configuration-bundle/*" } } } ] }

Kebijakan tersebut berisi pernyataan berikut:

  • AllowCallerAccess— Memberikan kms:DescribeKey izin peran IAM untuk validasi kunci pada pembuatan bundel atau waktu pembaruan. Ganti 111122223333 dengan ID akun Anda dan MyConfigBundleRole dengan peran IAM atau pengguna yang mengelola bundel konfigurasi.

  • AllowCallerCryptoOps— Memberikan peran IAMkms:GenerateDataKey,, dan kms:ReEncrypt* izinkms:Decrypt, yang dicakup oleh konteks enkripsi. aws:bedrock-agentcore:configurationBundleArn kms:ReEncrypt*Izin diperlukan untuk rotasi kunci (mengubah kunci KMS pada bundel yang ada). Ganti 111122223333MyConfigBundleRole,, dan us-east-1 dengan nilai-nilai Anda. Untuk mengizinkan akses ke semua bundel konfigurasi di akun Anda, gunakan wildcard denganStringLike:. arn:aws:bedrock-agentcore:us-east-1:111122223333:configuration-bundle/*

Mencakup akses ke kunci KMS yang dikelola pelanggan

Anda dapat menggunakan konteks enkripsi untuk mengurangi akses ke kunci yang dikelola pelanggan. AgentCore pengoptimalan mencakup konteks enkripsi berikut di semua operasi KMS:

{ "aws:bedrock-agentcore:configurationBundleArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:configuration-bundle/bundle-id" }

Anda dapat menggunakan konteks enkripsi ini dalam kondisi kebijakan utama untuk membatasi operasi KMS ke bundel konfigurasi tertentu, seperti yang ditunjukkan dalam AllowCallerCryptoOps pernyataan dalam contoh kebijakan kunci di atas.

Membuat bundel konfigurasi dengan kunci KMS yang dikelola pelanggan

Untuk mengenkripsi bundel konfigurasi, tentukan kmsKeyArn parameter saat memanggil CreateConfigurationBundle.

contoh
AWS CLI
aws bedrock-agentcore-control create-configuration-bundle \ --bundle-name "MyEncryptedBundle" \ --kms-key-arn "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" \ --components '{ "arn:aws:bedrock-agentcore:us-east-1:111122223333:runtime/my-agent": { "configuration": { "systemPrompt": "You are a helpful assistant.", "modelId": "anthropic.claude-3-sonnet" } } }'
Python (Boto3)
import boto3 client = boto3.client('bedrock-agentcore-control') response = client.create_configuration_bundle( bundleName='MyEncryptedBundle', kmsKeyArn='arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab', components={ 'arn:aws:bedrock-agentcore:us-east-1:111122223333:runtime/my-agent': { 'configuration': { 'systemPrompt': 'You are a helpful assistant.', 'modelId': 'anthropic.claude-3-sonnet' } } } ) print(f"Bundle ID: {response['bundleId']}")

Mengubah konfigurasi enkripsi pada bundel yang ada

Anda dapat mengubah konfigurasi enkripsi pada bundel yang ada menggunakan UpdateConfigurationBundle:

  • Tambahkan enkripsi - Tentukan kmsKeyArn pada bundel yang dibuat tanpa satu. Layanan ini menghasilkan DEK baru dan mengenkripsi konfigurasi komponen.

  • Putar tombol - Tentukan yang berbedakmsKeyArn. Layanan membungkus kembali DEK yang ada dari kunci lama ke kunci baru menggunakan. kms:ReEncrypt Penelepon harus memiliki izin pada kedua tombol. Jika kunci lama tidak tersedia (izin dinonaktifkan, dihapus, atau hilang), pembaruan akan gagal.

catatan

Anda tidak dapat menghapus enkripsi kunci terkelola pelanggan dari bundel konfigurasi setelah ditambahkan.

Memantau penggunaan KMS untuk bundel konfigurasi

Nama CloudTrail acara berikut muncul untuk operasi KMS bundel konfigurasi:

  • GenerateDataKey— Saat membuat bundel dengan kunci yang dikelola pelanggan, atau menambahkan enkripsi ke bundel yang ada. encryptionContextBidang berisiaws:bedrock-agentcore:configurationBundleArn.

  • Decrypt— Saat mengambil konten bundel (GetConfigurationBundle, GetConfigurationBundleVersion) atau saat memperbarui bundel terenkripsi.

  • ReEncrypt— Saat memutar tombol KMS pada bundel yang ada melalui. UpdateConfigurationBundle

  • DescribeKey— Saat memvalidasi kunci pada pembuatan bundel atau waktu pembaruan.

Perilaku ketika kunci menjadi tidak tersedia

Jika Anda menonaktifkan atau menghapus kunci KMS terkelola pelanggan yang digunakan oleh bundel konfigurasi:

  • CreateConfigurationBundle— Gagal dalam validasi denganValidationException.

  • UpdateConfigurationBundle— Gagal karena layanan tidak dapat mendekripsi DEK yang ada untuk mengenkripsi ulang komponen baru. Rotasi kunci juga gagal karena kunci lama tidak tersedia untuk pembungkus ulang.

  • GetConfigurationBundle / GetConfigurationBundleVersion— Gagal karena layanan tidak dapat mendekripsi konfigurasi DEK atau komponen.

  • ListConfigurationBundles / ListConfigurationBundleVersions— Berhasil karena daftar mengembalikan metadata saja dan tidak memerlukan operasi KMS.

  • DeleteConfigurationBundle— Berhasil karena penghapusan tidak memerlukan data bundel dekripsi.

Untuk memulihkan akses, aktifkan kembali kunci atau perbarui kebijakan kunci untuk memberikan izin yang diperlukan.