Resource-based kebijakan untuk Amazon Bedrock AgentCore
Resource-based kebijakan di Amazon Bedrock AgentCore memungkinkan Anda mengontrol prinsipal mana (AWS akun, pengguna IAM, atau peran IAM) yang dapat memanggil dan mengelola AgentCore sumber daya Amazon Bedrock Anda (saat ini didukung untuk Runtime, Gateway, dan Memori). Anda dapat melampirkan IAM-style kebijakan langsung ke sumber daya Anda untuk menentukan aturan seputar siapa yang dapat memulai sesi runtime, memanggil gateway, mengakses memori, atau melakukan tindakan manajemen dan pemanggilan lainnya.
Resource-based Kebijakan bekerja sama dengan kebijakan IAM berbasis identitas untuk menyediakan kontrol akses untuk sumber daya Amazon Bedrock Anda. AgentCore Sementara kebijakan berbasis identitas dilampirkan pada identitas IAM dan menentukan tindakan apa yang dapat mereka lakukan, kebijakan berbasis sumber daya dilampirkan langsung ke sumber daya dan menentukan siapa yang dapat mengaksesnya.
Topik
Sumber daya yang didukung
Amazon Bedrock AgentCore mendukung kebijakan berbasis sumber daya untuk sumber daya berikut:
-
Agen Runtime dan Titik Akhir Agen - Kontrol akses ke pemanggilan agen dan operasi manajemen
-
Gateway - Kontrol akses ke operasi pemanggilan gateway
-
Memori - Kontrol akses ke operasi memori
Cara kerja kebijakan berbasis sumber daya
Identity-based vs kebijakan berbasis sumber daya
| Aspek | Identity-Based Kebijakan | Resource-Based Kebijakan |
|---|---|---|
|
Lampiran |
Terlampir pada pengguna, peran, atau grup IAM |
Terlampir langsung ke sumber daya Amazon Bedrock AgentCore |
|
Manajemen |
Dikelola melalui AWS IAM |
Dikelola melalui Amazon Bedrock API AgentCore |
|
Menentukan |
Tindakan dan Sumber Daya (Prinsipal implisit) |
Prinsip, Tindakan, dan Kondisi (Sumber daya implisit) |
|
Kasus Penggunaan |
Tentukan apa yang bisa dilakukan identitas |
Tentukan siapa yang dapat mengakses sumber daya |
Evaluasi kebijakan
Saat permintaan dibuat ke sumber daya Amazon Bedrock, AWS evaluasi kebijakan berbasis identitas dan AgentCore sumber daya. Tabel berikut menunjukkan bagaimana kombinasi kebijakan yang berbeda memengaruhi akses:
| Kebijakan IAM | Kebijakan Sumber Daya | Hasil |
|---|---|---|
|
Memberikan akses |
Diam |
Diizinkan |
|
Memberikan akses |
Memberikan akses |
Diizinkan |
|
Memberikan akses |
Menolak akses |
Ditolak |
|
Diam |
Diam |
Ditolak |
|
Diam |
Memberikan akses |
Diizinkan |
|
Diam |
Menolak akses |
Ditolak |
|
Menolak akses |
Diam |
Ditolak |
|
Menolak akses |
Memungkinkan akses |
Ditolak |
|
Menolak akses |
Menolak akses |
Ditolak |
Prinsip-prinsip kunci:
-
Penolakan Eksplisit Selalu Menang: Jika ada kebijakan yang secara eksplisit menyangkal tindakan tersebut, akses ditolak terlepas dari kebijakan lainnya
-
Salah satu Kebijakan Dapat Mengizinkan: Jika kebijakan berbasis identitas atau berbasis sumber daya mengizinkan tindakan (dan tidak ada kebijakan yang menyangkalnya), akses diberikan
-
Default Deny: Jika tidak ada kebijakan yang secara eksplisit mengizinkan suatu tindakan, akses ditolak
Otorisasi hierarkis untuk runtime agen dan titik akhir
Titik akhir agen adalah titik akses yang dapat dialamatkan ke versi tertentu dari runtime agen. Setiap titik akhir menunjuk ke versi tertentu dari konfigurasi runtime, dengan titik akhir DEFAULT secara otomatis merutekan ke versi terbaru. Saat mengotorisasi operasi API runtime seperti InvokeAgentRuntime danInvokeAgentRuntimeCommand, AWS mengevaluasi kebijakan berbasis identitas dan berbasis sumber daya untuk runtime agen dan titik akhir agen yang dipanggil.
Agar permintaan diotorisasi, ketentuan berikut harus dipenuhi:
-
Kebijakan berbasis identitas yang dilampirkan pada prinsipal panggilan harus memungkinkan tindakan pada sumber daya runtime agen dan titik akhir agen
-
Kebijakan berbasis sumber daya pada runtime agen harus mengizinkan tindakan (jika ada kebijakan)
-
Kebijakan berbasis sumber daya pada titik akhir agen harus mengizinkan tindakan (jika ada kebijakan)
penting
Untuk menyediakan akses lintas akun ke prinsipal, Anda harus membuat kebijakan berbasis sumber daya yang memberikan akses untuk runtime agen dan titik akhir agen. Jika salah satu sumber daya menolak akses atau tidak memiliki pernyataan izin eksplisit, permintaan akan ditolak.
Contoh: Pemberian akses lintas akun memerlukan kebijakan pada kedua sumber daya:
// Policy for Agent Runtime (attached to // arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID) { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/CrossAccountRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" } ] } // Policy for Agent Endpoint (attached to // arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID/endpoint/ENDPOINTID) { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/CrossAccountRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID/endpoint/ENDPOINTID" } ] }
Pertimbangan jenis otentikasi
Cara Anda menulis kebijakan berbasis sumber daya bergantung pada jenis autentikasi yang dikonfigurasi untuk Agent Runtime atau Gateway Anda:
- SiGv4 Otentikasi
-
Gunakan AWS prinsip tertentu (pengguna IAM, peran, atau akun) dalam elemen.
PrincipalMisalnya:"Principal": {"AWS": "arn:aws:iam::123456789012:role/MyRole"}. Kebijakan ini dievaluasi bersamaan dengan izin IAM pemanggil. Untuk contoh yang membatasi runtime agar hanya dipanggil oleh AgentCore Gateway, lihat Membatasi pemanggilan masuk IAM (SigV4) ke gateway Anda. - Otentikasi OAuth
-
Harus menggunakan wildcard principal (“Principal”: “*”) dalam pernyataan kebijakan. Token OAuth divalidasi oleh AWS Identity Service sebelum evaluasi kebijakan. Hanya pengguna OAuth yang diautentikasi dengan token JWT yang valid dari Penyedia Identitas terdaftar (iDP) yang dapat memanggil sumber daya. Permintaan anonim atau tidak diautentikasi ditolak sebelum evaluasi kebijakan. Gunakan tombol kondisi untuk membatasi akses (misalnya,
aws:SourceVpc,aws:SourceVpce).
penting
Agent Runtime atau Gateway hanya dapat dikonfigurasi dengan otentikasi SigV4 ATAU OAuth pada waktu pembuatan, tidak keduanya secara bersamaan. Ini berarti kebijakan berbasis sumber daya tunggal hanya berlaku untuk satu jenis otentikasi.
Struktur kebijakan
Kebijakan berbasis sumber daya adalah dokumen JSON dengan struktur berikut:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "StatementId", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/role-name" }, "Action": "bedrock-agentcore:ActionName", "Resource": "arn:aws:bedrock-agentcore:region:account-id:resource-type/resource-id", "Condition": { "ConditionOperator": { "ConditionKey": "ConditionValue" } } } ] }
penting
ResourceBidang dalam dokumen kebijakan harus berisi ARN yang tepat dari sumber daya yang dilampirkan kebijakan tersebut. Menggunakan “Resource”: “*” tidak didukung dan akan menghasilkan kesalahan validasi.
Tindakan yang didukung
Tindakan Agen Runtime
-
bedrock-agentcore:InvokeAgentRuntime- Memanggil runtime agen -
bedrock-agentcore:InvokeAgentRuntimeForUser- Memanggil endpoint agen runtime dengan header X-Amzn-Bedrock-AgentCore-Runtime-User-Id -
bedrock-agentcore:InvokeAgentRuntimeCommand- Jalankan perintah shell dalam sesi runtime aktif -
bedrock-agentcore:InvokeAgentRuntimeCommandShell- Buka sesi WebSocket shell interaktif dalam sesi runtime aktif -
bedrock-agentcore:InvokeAgentRuntimeWithWebSocketStream- Memanggil runtime agen dengan aliran WebSocket -
bedrock-agentcore:InvokeAgentRuntimeWithWebSocketStreamForUser- Memanggil runtime agen dengan WebSocket aliran dengan header X-Amzn-Bedrock-AgentCore-Runtime-User-Id -
bedrock-agentcore:StopRuntimeSession- Hentikan sesi runtime aktif -
bedrock-agentcore:GetAgentCard- Ambil informasi kartu agen
Tindakan gateway
-
bedrock-agentcore:InvokeGateway- Memanggil gateway
Tindakan memori
-
bedrock-agentcore:GetMemory- Ambil sumber daya Memori -
bedrock-agentcore:UpdateMemory- Perbarui sumber daya Memori -
bedrock-agentcore:DeleteMemory- Hapus sumber daya Memori -
bedrock-agentcore:CreateEvent- Buat acara di sumber daya Memori -
bedrock-agentcore:GetEvent- Mengambil acara dari sumber daya Memori -
bedrock-agentcore:DeleteEvent- Hapus acara dari sumber daya Memori -
bedrock-agentcore:ListEvents- Daftar Acara dari sumber daya Memori -
bedrock-agentcore:ListActors- Daftar aktor dari sumber daya Memori -
bedrock-agentcore:ListSessions- Daftar sesi dari sumber daya Memori -
bedrock-agentcore:GetMemoryRecord- Dapatkan catatan memori dari sumber daya Memori -
bedrock-agentcore:ListMemoryRecords- Daftar catatan memori dari sumber daya Memori -
bedrock-agentcore:RetrieveMemoryRecords- Cari catatan memori dari sumber daya Memori -
bedrock-agentcore:DeleteMemoryRecord- Hapus catatan memori dari sumber daya Memori -
bedrock-agentcore:BatchCreateMemoryRecords- Batch membuat catatan memori dalam sumber daya Memori -
bedrock-agentcore:BatchUpdateMemoryRecords- Batch memperbarui catatan memori dalam sumber daya Memori -
bedrock-agentcore:BatchDeleteMemoryRecords- Batch menghapus catatan memori dalam sumber daya Memori -
bedrock-agentcore:StartMemoryExtractionJob- Mulai pekerjaan ekstraksi dalam Sumber Daya Memori -
bedrock-agentcore:ListMemoryExtractionJobs- Daftar pekerjaan ekstraksi dalam Sumber Daya Memori
Kunci syarat
Anda dapat menggunakan tombol kondisi untuk menyempurnakan kontrol akses lebih lanjut dalam kebijakan Anda. Untuk daftar lengkap kunci kondisi yang tersedia, lihat Tombol AgentCore Kondisi Batuan Dasar dan Kunci Konteks Kondisi AWS Global.
Kasus dan contoh penggunaan umum
Bagian ini memberikan contoh praktis kebijakan berbasis sumber daya untuk skenario umum. ResourceBidang dalam setiap contoh harus berisi ARN yang tepat dari sumber daya yang dilampirkan kebijakan tersebut. Ganti contoh ARN dengan ARN sumber daya Anda yang sebenarnya.
Izinkan peran di yang lain AWS akun
Berikan akses API ke peran tertentu di AWS akun yang berbeda:
// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:role/DeveloperRole", "arn:aws:iam::123456789012:role/AdminRole" ] }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" } ] }
Tolak lalu lintas berdasarkan alamat IP sumber
Blokir lalu lintas masuk dari rentang alamat IP tertentu:
// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" }, { "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "198.51.100.0/24" ] } } } ] }
Izinkan lalu lintas hanya dari VPC tertentu
Batasi akses ke permintaan dari VPC tertentu:
// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" }, { "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "StringNotEquals": { "aws:SourceVpc": "vpc-1a2b3c4d" } } } ] }
Otentikasi OAuth dengan pembatasan VPC
Ketika Agent Runtime atau Gateway Anda dikonfigurasi dengan otentikasi OAuth, Anda harus menggunakan prinsipal wildcard. Contoh ini membatasi OAuth-authenticated permintaan ke VPC tertentu:
// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOAuthFromVPC", "Effect": "Allow", "Principal": "*", "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "StringEquals": { "aws:SourceVpc": "vpc-1a2b3c4d" } } } ] }
penting
Prinsipal wildcard (“Principal”: “*”) diperlukan untuk otentikasi OAuth. Token OAuth divalidasi oleh AWS Identity Service sebelum evaluasi kebijakan. Hanya pengguna dengan token JWT yang valid dari Penyedia Identitas terdaftar Anda yang dapat mengakses sumber daya. Permintaan anonim atau tidak diautentikasi ditolak sebelum mencapai evaluasi kebijakan. Gunakan tombol kondisi (sepertiaws:SourceVpc,aws:SourceVpce) untuk membatasi akses lebih lanjut
Mengelola kebijakan sumber daya
Pilih salah satu metode berikut:
contoh
Praktik terbaik keamanan
Berikan hak akses paling rendah
Berikan hanya izin minimum yang diperlukan untuk kasus penggunaan Anda:
// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" } ] }
Cegah wakil yang bingung
Selalu gunakan tombol kondisi saat memberikan akses ke AWS layanan:
// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:gateway/GATEWAYID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "bedrock-agentcore:InvokeGateway", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:gateway/GATEWAYID", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnEquals": { "aws:SourceArn": "arn:aws:lambda:us-west-2:111122223333:function/SpecificFunction" } } } ] }
Gunakan penolakan eksplisit untuk kontrol kritis
Gunakan pernyataan penolakan eksplisit untuk pembatasan kritis keamanan:
// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAllExceptVPC", "Effect": "Deny", "Principal": "*", "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "StringNotEquals": { "aws:SourceVpc": "vpc-12345678" }, "Bool": { "aws:ViaAWSService": "false" } } } ] }
Pemecahan masalah
Akses kesalahan ditolak
Jika Anda menerima kesalahan “Akses Ditolak”:
-
Periksa kedua kebijakan: Verifikasi kebijakan berbasis identitas dan sumber daya
-
Cari penolakan eksplisit: Penolakan eksplisit dalam kebijakan apa pun mengesampingkan semua izin
-
Verifikasi ARN utama: Pastikan ARN utama dalam polis cocok dengan penelepon
-
Periksa kondisi: Verifikasi semua kunci kondisi mengevaluasi ke true
-
Tinjau SCP: Kebijakan kontrol layanan organisasi dapat mengesampingkan kebijakan sumber daya
Kesalahan validasi kebijakan
Kesalahan validasi kebijakan umum:
-
JSON tidak valid: Pastikan kebijakan Anda valid JSON
-
Format ARN tidak valid: Verifikasi semua ARN mengikuti format yang benar
-
Tindakan yang tidak didukung: Periksa apakah semua tindakan didukung untuk jenis sumber daya
-
Elemen yang diperlukan tidak ada: Pastikan Versi, Pernyataan, Efek, Prinsip, dan Tindakan hadir