View a markdown version of this page

Enkripsi AgentCore gateway Anda dengan kunci KMS yang dikelola pelanggan - Batuan Dasar Amazon AgentCore

Enkripsi AgentCore gateway Anda dengan kunci KMS yang dikelola pelanggan

Secara default, Gateway mengenkripsi data Anda saat istirahat menggunakan kunci Layanan Manajemen AWS Kunci yang dikelola layanan. Namun, Anda dapat secara opsional memberikan kunci KMS yang dikelola pelanggan Anda sendiri untuk mengenkripsi data saat istirahat saat Anda:

  • Buat gateway.

  • Perbarui konfigurasi gateway.

Menggunakan kunci yang dikelola pelanggan memberi Anda kontrol lebih besar atas proses enkripsi, termasuk kemampuan untuk:

  • Putar tombol pada jadwal Anda sendiri

  • Kontrol akses ke kunci melalui kebijakan IAM

  • Nonaktifkan atau hapus kunci saat tidak lagi diperlukan

  • Audit penggunaan kunci melalui CloudWatch log dan AWS CloudTrail

Untuk informasi selengkapnya, lihat Panduan Pengembang Layanan Manajemen AWS Utama.

catatan

Jika Anda memilih untuk menggunakan kunci yang dikelola pelanggan, Anda bertanggung jawab untuk mengelola kunci dan izinnya. Jika kunci dinonaktifkan atau dihapus, atau jika Gateway kehilangan izin untuk menggunakan kunci, Anda akan kehilangan akses ke data terenkripsi.

Prasyarat untuk mengenkripsi gateway Anda AgentCore

Sebelum mengenkripsi gateway Anda, pastikan Anda telah memenuhi prasyarat berikut:

  • Anda memiliki akses ke kunci KMS. Untuk informasi tentang membuat kunci KMS, lihat Membuat kunci KMS.

  • Kunci KMS memiliki kebijakan kunci yang melekat padanya yang memungkinkan izin berikut:

    • Izin yang memungkinkan peran layanan gateway untuk melakukan tindakan berikut:

      • km: CreateGrant

      • km: DescribeKey

      • kms:Decrypt

      • km: GenerateDataKey

    • (Jika Anda mengaktifkan CloudWatch Log untuk gateway Anda) Izin yang memungkinkan layanan CloudWatch Log untuk mendekripsi kunci.

      Untuk informasi selengkapnya tentang mengendalikan izin IAM untuk kunci KMS, lihat akses kunci KMS dan izin di Panduan Pengembang Layanan Manajemen AWS Kunci.

Contoh kebijakan kunci

Contoh kebijakan berikut memberikan izin yang diperlukan untuk mengenkripsi gateway dan menggunakan gateway terenkripsi. Pernyataan keempat juga memungkinkan CloudWatch log log penggunaan kunci untuk gateway terenkripsi. Kebijakan ini berisi kunci kondisi agar sesuai dengan praktik terbaik keamanan.

{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowServiceRoleDescribeKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/GatewayServiceRole" }, "Action": [ "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "bedrock-agentcore.us-east-1.amazonaws.com" ] } } }, { "Sid": "AllowServiceRoleDecryptKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/GatewayServiceRole" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "bedrock-agentcore.us-east-1.amazonaws.com" ] }, "StringLike": { "kms:EncryptionContext:aws:bedrock-agentcore-gateway:arn": "arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/GatewayId" } } }, { "Sid": "AllowServiceRoleCreateGrant", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/GatewayServiceRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "bedrock-agentcore.us-east-1.amazonaws.com" ], "kms:GrantConstraintType": "EncryptionContextSubset" }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Decrypt", "GenerateDataKey" ] }, "StringLike": { "kms:EncryptionContext:aws:bedrock-agentcore-gateway:arn": "arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/GatewayId" } } }, { "Sid": "AllowKMSDecryptionLogging", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:SourceArn": "arn:aws:logs:us-east-1:123456789012:*" } } } ] }

Kebijakan tersebut berisi pernyataan berikut:

  • AllowServiceRoleDescribeKKey— Memungkinkan kepala sekolah yang ditentukan untuk menjelaskan kunci jika permintaan dibuat melalui AgentCore layanan. Ganti nilai di bidang berikut:

    • Principal— Ganti AWS nilai dengan ARN sebenarnya dari peran layanan gateway Anda.

    • Condition— Dalam kms:ViaService array, ganti us-east-1 dengan AWS Wilayah sebenarnya yang ingin Anda izinkan kuncinya dijelaskan.

  • AllowServiceRoleDecryptKey— Memungkinkan kepala sekolah yang ditentukan untuk mendekripsi kunci jika permintaan dibuat melalui AgentCore layanan dan jika ARN dari gateway tempat permintaan dibuat cocok dengan yang ada di lapangan. kmsEncryptionContext:aws:bedrock-agentcore-gateway-arn Ganti nilai-nilai berikut:

    • Principal— Ganti AWS nilai dengan ARN sebenarnya dari peran layanan gateway Anda.

    • Condition— Lakukan hal berikut:

      • Dalam kms:ViaService array, ganti us-east-1 dengan AWS Wilayah sebenarnya yang ingin Anda izinkan kuncinya didekripsi.

      • Ganti kmsEncryptionContext:aws:bedrock-agentcore-gateway-arn nilainya dengan ARN sebenarnya dari gateway Anda.

  • AllowServiceRoleCreateGrant— Memungkinkan kepala sekolah yang ditentukan untuk membuat hibah untuk kunci jika permintaan dibuat melalui AgentCore layanan dan jika ARN dari gateway tempat permintaan dibuat cocok dengan yang ada di kmsEncryptionContext:aws:bedrock-agentcore-gateway-arn lapangan. Ganti nilai-nilai berikut:

    • Principal— Ganti AWS nilai dengan ARN sebenarnya dari peran layanan gateway Anda.

    • Condition— Lakukan hal berikut:

      • Dalam kms:ViaService array, ganti us-east-1 dengan AWS Wilayah sebenarnya yang ingin Anda izinkan kuncinya didekripsi.

      • Ganti kmsEncryptionContext:aws:bedrock-agentcore-gateway-arn nilainya dengan ARN sebenarnya dari gateway Anda (jika Anda ingin mengizinkan).

  • AllowKMSDecryptionLogging— Memungkinkan prinsipal yang ditentukan untuk mendekripsi kunci KMS yang dikelola pelanggan untuk mengaudit penggunaan kunci melalui Log. CloudWatch Dalam kms:EncryptionContext:SourceArn nilai, ganti us-east-1 dan 123456789012 nilai dengan AWS Wilayah dan ID akun Anda yang sebenarnya.

contoh
Console
  1. ====== Untuk mengenkripsi gateway Anda dengan kunci KMS yang dikelola pelanggan

  2. Ikuti langkah-langkah Konsol di Buat AgentCore gateway Amazon Bedrock dan perluas kunci KMS - bagian opsional.

  3. Pilih Sesuaikan pengaturan enkripsi (lanjutan).

  4. Pilih tombol KMS dan konfirmasikan detailnya.

    catatan

    Jika Anda tidak melihat kunci KMS Anda, periksa Prasyarat untuk mengenkripsi AgentCore gateway Anda dan periksa apakah izin telah dikonfigurasi dengan benar.

  5. Lanjutkan melalui langkah-langkah konsol yang tersisa.

CLI
  1. Untuk mengenkripsi gateway Anda menggunakan AWS CLI, sertakan kms-key-arn saat mengirim salah satu permintaan berikut melalui klien AgentCore pesawat kontrol. :

    • buat-gerbang

    • perbaruan-gerbang

      Contoh berikut menunjukkan permintaan CLI contoh untuk membuat gateway dengan kunci AWS KMS ditentukan menggunakan argumen: kms-key-arn

      aws bedrock-agentcore-control create-gateway \ --name "MyGateway" \ --role-arn "arn:aws:iam::123456789012:role/GatewayRole" \ --protocol-type "MCP" \ --kms-key-arn "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" \ --authorizer-type "CUSTOM_JWT" \ --authorizer-configuration '{ "customJWTAuthorizer": { "allowedAudience": ["myAudience"], "discoveryUrl": "https://example.com/.well-known/openid-configuration" } }'
Python (Boto3)
  1. Untuk mengenkripsi gateway Anda menggunakan AWS Python SDK (Boto3), sertakan kms-key-arn saat mengirim salah satu permintaan berikut melalui klien bidang kontrol. AgentCore :

    • create_gateway

    • update_gateway

      Contoh berikut menunjukkan contoh permintaan Boto3 untuk membuat gateway dengan kunci AWS KMS ditentukan menggunakan argumen: kmsKeyArn

      import boto3 # Create client agentcore_client = boto3.client('bedrock-agentcore-control') # Create gateway and specify gateway = agentcore_client.create_gateway( name="MyGateway", roleArn="arn:aws:iam::123456789012:role/GatewayRole", protocolType="MCP", kmsKeyArn="arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" authorizerType="CUSTOM_JWT", authorizerConfiguration= { "customJWTAuthorizer": { "allowedAudience": ["myAudience"], "discoveryUrl": "https://example.com/.well-known/openid-configuration" } } )