View a markdown version of this page

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

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

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 bersama dengan kebijakan IAM berbasis identitas untuk menyediakan kontrol akses untuk sumber daya Amazon Bedrock Anda. AgentCore Meskipun kebijakan berbasis identitas dilampirkan ke identitas IAM dan menentukan tindakan apa yang dapat dilakukan, 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:

  • Agent Runtime dan Agent Endpoints - Kontrol akses ke operasi pemanggilan dan manajemen agen

  • Gateway - Kontrol akses ke operasi pemanggilan gateway

  • Mem ori - 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 ke 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 (Prinsip adalah implisit)

Prinsip, Tindakan, dan Kondisi (Sumber Daya tersirat)

Kasus Penggunaan

Tentukan apa yang dapat dilakukan identitas

Tentukan siapa yang dapat mengakses sumber daya

Evaluasi kebijakan

Ketika permintaan dibuat ke sumber daya Amazon Bedrock, AWS mengevaluasi kebijakan berbasis identitas dan berbasis 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 utama:

  • Penolakan Eksplisit Selalu Menang: Jika ada kebijakan yang secara eksplisit menolak tindakan tersebut, akses ditolak terlepas dari kebijakan lainnya

  • Salah satu Kebijakan Dapat Memungkinkan: Jika kebijakan berbasis identitas atau kebijakan berbasis sumber daya mengizinkan tindakan tersebut (dan tidak ada kebijakan yang menolaknya), akses diberikan

  • Penolakan Default: Jika tidak ada kebijakan yang secara eksplisit mengizinkan tindakan, akses ditolak

Otorisasi hierarkis untuk runtime dan titik akhir agen

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, kondisi berikut harus dipenuhi:

  • Kebijakan berbasis identitas yang dilampirkan ke prinsipal pemanggil harus mengizinkan tindakan pada runtime agen dan sumber daya 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: Memberikan 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 tergantung pada jenis otentikasi yang dikonfigurasi untuk Agent Runtime atau Gateway Anda:

Otentikasi SIGv4

Gunakan prinsi AWS pal tertentu (pengguna IAM, peran, atau akun) dalam elemen. Principal Sebagai contoh:"Principal": {"AWS": "arn:aws:iam::123456789012:role/MyRole"}. Kebijakan ini dievaluasi bersamaan dengan izin IAM penelepon. Untuk contoh yang membatasi runtime agar hanya dipanggil oleh AgentCore Gateway, lihat Membatasi inbound IAM (SigV4) ke gateway Anda.

OAuth Otentikasi

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 Identity Provider (IdP) terdaftar yang dapat memanggil sumber daya. Permintaan anonim atau tidak diautentikasi ditolak sebelum evaluasi kebijakan. Gunakan kunci kondisi untuk membatasi akses (mis.,aws:SourceVpc,aws:SourceVpce).

penting

Agent Runtime atau Gateway hanya dapat dikonfigurasi dengan autentikasi SIGv4 ATAU OAuth pada waktu pembuatan, bukan 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

Bid Resource ang dalam dokumen kebijakan harus berisi ARN yang tepat dari sumber daya yang dilampirkan kebijakan. Menggunakan “Resource”: “*” tidak didukung dan akan mengakibatkan kesalahan validasi.

Tindakan yang didukung

Tindakan Agen Runtime

  • bedrock-agentcore:InvokeAgentRuntime- Memanggil runtime agen

  • bedrock-agentcore:InvokeAgentRuntimeForUser- Memanggil titik akhir runtime agen 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 stream dengan header X-Amzn-Bedrock-AgentCore-Runtime-User-Id

  • bedrock-agentcore:StopRuntimeSession- Hentikan sesi runtime aktif

  • bedrock-agentcore:GetAgentCard- Mengambil informasi kartu agen

Tindakan gateway

  • bedrock-agentcore:InvokeGateway- Memanggil gateway

Tindakan memori

  • bedrock-agentcore:GetMemory- Mengambil sumber daya Memori

  • bedrock-agentcore:UpdateMemory- Memperbarui sumber daya Memori

  • bedrock-agentcore:DeleteMemory- Hapus sumber daya Memori

  • bedrock-agentcore:CreateEvent- Buat acara di sumber daya Memori

  • bedrock-agentcore:GetEvent- Mengambil peristiwa dari sumber daya Memori

  • bedrock-agentcore:DeleteEvent- Menghapus 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- Menghapus 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 kunci kondisi untuk menyempurnakan kontrol akses lebih lanjut dalam kebijakan Anda. Untuk daftar lengkap kunci kondisi yang tersedia, lihat Kunci Kondisi Dasar AgentCore dan Kunci AWS Konteks Kondisi Global.

Kasus dan contoh penggunaan umum

Bagian ini memberikan contoh praktis kebijakan berbasis sumber daya untuk skenario umum. Bid Resource ang dalam setiap contoh harus berisi ARN yang tepat dari sumber daya yang dilampirkan kebijakan. 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

Saat Agent Runtime atau Gateway dikonfigurasi dengan otentikasi OAuth, Anda harus menggunakan prinsip 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

Prinsip wildcard (“Principal”: “*”) diperlukan untuk otentikasi OAuth. Token OAuth divalidasi oleh AWS Identity Service sebelum evaluasi kebijakan. Hanya pengguna dengan token JWT 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 kunci 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

Kesalahan akses ditolak

Jika Anda menerima kesalahan “Akses Ditolak”:

  • Periksa kedua kebijakan: Verifikasi kebijakan berbasis identitas dan kebijakan berbasis sumber daya

  • Cari penolakan eksplisit: Penolakan eksplisit dalam kebijakan apa pun mengesampingkan semua izin

  • Verifikasi ARN utama: Pastikan ARN utama dalam kebijakan cocok dengan penelepon

  • Periksa kondisi: Verifikasi semua kunci kondisi dievaluasi menjadi 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 adalah JSON yang valid

  • 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 hilang: Pastikan Versi, Pernyataan, Efek, Prinsip, dan Tindakan hadir