View a markdown version of this page

Resource-based kebijakan untuk Amazon Bedrock AgentCore - Batuan Dasar Amazon AgentCore

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.

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. Principal Misalnya:"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
AWS CLI
  1. ====== Membuat atau memperbarui kebijakan sumber daya

    Gunakan put-resource-policy perintah:

    aws bedrock-agentcore-control put-resource-policy \ --resource-arn arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID \ --policy file://policy.json

    Dapatkan kebijakan sumber daya

    Gunakan get-resource-policy perintah:

    aws bedrock-agentcore-control get-resource-policy \ --resource-arn arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID

    Menghapus kebijakan sumber daya

    Gunakan delete-resource-policy perintah:

    aws bedrock-agentcore-control delete-resource-policy \ --resource-arn arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID
Python (Boto3)
  1. Contoh berikut menunjukkan cara mengelola kebijakan sumber daya menggunakan AWS Python SDK (Boto3):

    import boto3 import json client = boto3.client('bedrock-agentcore-control', region_name='us-west-2') # Define the resource ARN resource_arn = 'arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID' # Put resource policy # Note: The Resource field must match the resource ARN to which the policy is attached policy = { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:role/MyRole"}, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": resource_arn } ] } response = client.put_resource_policy( resourceArn=resource_arn, policy=json.dumps(policy) ) # Get resource policy response = client.get_resource_policy( resourceArn='arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID' ) print(response['policy']) # Delete resource policy response = client.delete_resource_policy( resourceArn='arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID' )

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