View a markdown version of this page

Kontrol keamanan dan akses - Batuan Dasar Amazon AgentCore

Kontrol keamanan dan akses

Harness memberi Anda primitif keamanan yang sama seperti yang lainnya AgentCore, terhubung dengan konfigurasi.

  • Eksekusi terisolasi. Setiap sesi berjalan di MicroVM Firecracker sendiri di Runtime. AgentCore Tidak ada status bersama, tidak ada sistem file bersama.

  • Peran eksekusi IAM. Harness mengasumsikan peran IAM yang Anda miliki, dapat dikonfigurasi untuk menyertakan Bedrock, ECR CloudWatch, dan primitif yang disentuhnya. AgentCore Lihat contoh kebijakan peran eksekusi di bawah ini.

  • Model izin IAM. Harness API memerlukan izin pada sumber daya harness dan sumber daya Runtime yang mendasarinyaAgentCore . Misalnya, panggilan InvokeHarness memerlukan keduanya bedrock-agentcore:InvokeHarness dan bedrock-agentcore:InvokeAgentRuntime izin pada ARN harness. Pola yang sama berlaku untuk operasi pesawat kontrol: UpdateHarness membutuhkan bedrock-agentcore:UpdateAgentRuntimebedrock-agentcore:DeleteAgentRuntime, DeleteHarness membutuhkan, dan sebagainya. Lihat kebijakan peran eksekusi untuk daftar lengkapnya.

  • Dukungan OAuth Masuk. Sumber daya Harness yang dikonfigurasi JWT mengharuskan penelepon untuk menyajikan JWT valid yang dikeluarkan oleh penyedia identitas yang dikonfigurasi sebelum mereka dapat memanggil harness. AgentCore Identitas menghubungkan identitas pengguna akhir melalui agen, sehingga alat hilir dapat memanggil API dengan kredensyal pengguna tercakup, bukan akun layanan bersama.

  • VPC. Hubungkan sesi harness ke VPC Anda untuk akses pribadi ke sumber daya internal.

  • Kebijakan tentang Gateway. Ketika alat disajikan melalui AgentCore Gateway, Cedar-based kebijakan dapat dikonfigurasi untuk gerbang setiap panggilan: siapa yang dapat memanggil alat mana, dalam kondisi apa, dengan argumen mana.

catatan

SigV4 dan identitas per pengguna. Saat penelepon mengautentikasi dengan SiGv4 (AWS IAM), harness tidak menyebarkan identitas per pengguna ke dalam panggilan alat hilir. Ini berarti fitur pelingkupan kredenal per pengguna di AgentCore Identity Token Vault - seperti penyimpanan token OAuth yang dicakup pengguna dan pertukaran token on-behalf-of - hanya tersedia saat penelepon mengautentikasi dengan Bearer JWT melalui jalur masuk OAuth. Jika kasus penggunaan Anda memerlukan pelingkupan kredenal per pengguna untuk alat hilir, konfigurasikan OAuth masuk pada harness. Dukungan SiGv4 untuk identitas per pengguna direncanakan untuk rilis future.

Model tanggung jawab bersama

Harness dibangun di atas AgentCore Runtime. Batas keamanannya sama: otentikasi IAM atau JWT dikombinasikan dengan isolasi microVM. Harness tidak menambahkan lapisan keamanan antara penelepon dan microVM.

AWS tanggung jawab:
  • Infrastruktur aman dan isolasi microVM di tingkat perangkat keras

  • Penambalan kernel OS

  • Penambalan runtime bahasa untuk penerapan kode langsung

  • Keamanan infrastruktur jaringan

  • Ketersediaan dan ketahanan layanan

Tanggung jawab Anda:
  • Keamanan kode agen dan manajemen ketergantungan

  • Kontrol akses IAM dan kebijakan sumber daya

  • Keamanan perintah yang dijalankan dalam sesi runtime

  • Session-to-user pemetaan penegakan

  • Validasi input dan pencegahan injeksi yang cepat - termasuk memvalidasi semua InvokeHarness input (lihat) Batas kepercayaan dan validasi masukan

  • Validasi konfigurasi model - sepertiadditionalParams,apiBase, dan modelId bidang (lihatParameter konfigurasi model)

  • Sumber keterampilan dan instruksi - memastikan bahwa bucket S3, repositori Git, dan URL yang digunakan untuk keterampilan mengandung konten tepercaya (lihat) Keterampilan dan instruksi

  • Pembaruan gambar kontainer (untuk penerapan kontainer) - bangun kembali dengan gambar dasar aman terbaru secara teratur

  • Konfigurasi jaringan (grup keamanan, titik akhir VPC, tabel rute)

Untuk model tanggung jawab bersama AgentCore Runtime penuh, lihat Praktik terbaik keamanan untuk AgentCore Runtime.

Batas kepercayaan dan validasi masukan

Semua InvokeHarness dan InvokeAgentRuntimeCommand masukan dipercaya. Setiap prinsipal yang melewati gerbang autentikasi dan otorisasi IAM atau JWT memiliki akses ke sesi microVM penuh, termasuk alat dan kemampuan yang dikonfigurasi pada harness. Harness tidak membersihkan input, memfilter blok konten, atau menegakkan batasan perilaku.

Jika Anda mengekspos harness kepada pengguna akhir yang tidak sepenuhnya Anda percayai (karyawan, konsumen eksternal, atau integrasi pihak ketiga), validasi dan sanitasi pesan di lapisan aplikasi Anda sebelum meneruskannya. InvokeHarness Ini termasuk menghapus jenis blok konten atau bidang konfigurasi model yang tidak ingin Anda kirimkan. Ini adalah pola yang sama dengan layanan apa pun yang menerima muatan dari penelepon resmi, seperti Lambda, Amazon API Gateway, dan Amazon SQS.

Parameter konfigurasi model

modelBidang dalam InvokeHarness menerima konfigurasi additionalParams Bedrock, OpenAI, dan LitellM. Parameter ini diteruskan ke penyedia model yang mendasarinya tidak berubah. Harness tidak memvalidasi, memfilter, atau membatasi parameter ini.

Penelepon yang dapat mengatur additionalParams dapat:

  • Mengalihkan permintaan ke titik akhir arbitrer - aws_bedrock_runtime_endpoint Parameter LitellM mengesampingkan URL endpoint Bedrock. Penelepon dapat merutekan permintaan yang ditandatangani - termasuk tanda tangan SigV4 dan kredensyal sesi - ke titik akhir yang ditentukan dalam konfigurasi model kepercayaan.

  • Ganti header HTTP - extra_headers Parameter OpenAI menyuntikkan atau mengganti header HTTP pada permintaan keluar ke penyedia model, termasuk header. Authorization

  • Mencoba asumsi peran IAM - aws_role_name Parameter LitellM menginstruksikan runtime untuk mengambil peran IAM yang berbeda sebelum memanggil penyedia model. Upaya berhasil atau gagal berdasarkan sts:AssumeRole izin peran eksekusi.

  • Ubah model atau wilayah target - apiBase Bidang modelId and dapat mengarahkan inferensi ke model, wilayah, atau penyedia yang berbeda seluruhnya.

Jika aplikasi Anda mengekspos InvokeHarness kapabilitas ke penelepon yang tidak sepenuhnya Anda percayai, pertimbangkan untuk menerapkan validasi input di lapisan aplikasi Anda. Contohnya termasuk:

  • Menghapus atau mengizinkan daftar model bidang sebelum meneruskan permintaan

  • Memvalidasi atau menghapusadditionalParams,apiBase, dan modelId

  • Menolak sts:AssumeRole peran eksekusi jika pengalihan peran tidak diperlukan

  • Mencakup akses jaringan harness menggunakan grup keamanan VPC

Keterampilan dan instruksi

Keterampilan adalah bundel penurunan harga dan skrip yang diambil harness dari Amazon S3 atau Git pada waktu pemanggilan dan disuntikkan ke dalam konteks agen. Harness memperlakukan semua konten keterampilan sebagai masukan tepercaya. Itu tidak memvalidasi, membersihkan, atau memeriksa konten atau sumber keterampilan sebelum memberikannya kepada agen.

Anda bertanggung jawab untuk:

  • Memastikan bahwa sumber keterampilan (bucket S3, repositori Git, URL) dipercaya dan dikendalikan akses

  • Meninjau konten keterampilan - termasuk instruksi penurunan harga dan skrip yang disematkan - sebelum mengonfigurasinya di harness

  • Mengontrol prinsipal mana yang dapat mengganti skills bidang per pemanggilan, karena pemanggil dapat mengarahkan harness ke sumber S3 atau Git yang sewenang-wenang

Keterampilan dapat diganti per panggilan. InvokeHarness Jika aplikasi Anda meneruskan input yang disediakan pemanggil keInvokeHarness, pemanggil dapat menyediakan sumber keterampilan mereka sendiri yang berisi instruksi atau skrip arbitrer. Contoh mitigasi meliputi:

  • Menghapus atau mengabaikan skills bidang dari permintaan yang disediakan pemanggil

  • Izinkan daftar awalan S3 atau repositori Git yang diizinkan

Observabilitas dan korelasi jejak

Harness secara otomatis menyebarkan pengidentifikasi korelasi ke AgentCore primitif hilir (Gateway, Memory, Code Interpreter, Browser) untuk mengaktifkan tampilan jejak terpadu di. CloudWatch Pengidentifikasi ini hanya digunakan untuk observabilitas - mereka tidak pernah digunakan untuk otorisasi atau keputusan akses data.

Konfigurasi jaringan

Secara default, sesi harness berjalan di jaringan publik. Untuk mengakses sumber daya pribadi (database, API internal, subnet pribadi), gunakan harness di VPC Anda.

contoh
AWS CLI/boto3
aws bedrock-agentcore-control create-harness \ --harness-name "VpcHarness" \ --execution-role-arn "arn:aws:iam::123456789012:role/MyHarnessRole" \ --environment '{"agentCoreRuntimeEnvironment": {"networkConfiguration": {"networkMode": "VPC", "vpcConfig": {"securityGroupIds": ["sg-0abc1234def56789a"], "subnetIds": ["subnet-0abc1234def56789a"]}}}}'
AgentCore CLI
agentcore add harness --name internal-agent \ --network-mode VPC \ --subnets subnet-0abc1234def56789a \ --security-groups sg-0abc1234def56789a agentcore deploy
penting

Harness menarik wadah aplikasinya dari Amazon ECR Public pada awal setiap sesi. Saat berjalan dalam mode VPC, VPC Anda harus mengizinkan akses keluar. public.ecr.aws Amazon ECR Public tidak mendukung titik akhir VPC, jadi VPC Anda harus memiliki gateway NAT dengan rute ke gateway internet. Jika konektivitas ini tidak tersedia, sesi akan gagal dimulai karena batas waktu tarik gambar.

Untuk panduan konfigurasi jaringan tambahan, lihat Mengkonfigurasi AgentCore Runtime dan alat bawaan konfigurasi VPC. Untuk konektivitas API masuk via PrivateLink, lihat Titik akhir antarmuka VPC.

OAuth masuk

Mengharuskan penelepon untuk menunjukkan JWT valid yang dikeluarkan oleh penyedia identitas yang dikonfigurasi sebelum mereka dapat memanggil harness. AgentCore Identitas menghubungkan identitas pengguna akhir melalui agen, sehingga alat hilir dapat memanggil API dengan kredensyal pengguna tercakup, bukan akun layanan bersama.

contoh
AWS CLI/boto3
aws bedrock-agentcore-control create-harness \ --harness-name "OAuthHarness" \ --execution-role-arn "arn:aws:iam::123456789012:role/MyHarnessRole" \ --authorizer-configuration '{"customJWTAuthorizer": {"discoveryUrl": "https://cognito-idp.us-west-2.amazonaws.com/<POOL_ID>/.well-known/openid-configuration", "allowedClients": ["<CLIENT_ID>"]}}'

Panggil dengan token Bearer alih-alih kredensyal SiGv4:

curl -X POST "https://bedrock-agentcore.us-west-2.amazonaws.com/harnesses/invoke?harnessArn=${HARNESS_ARN}" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${ID_TOKEN}" \ -H "X-Amzn-Bedrock-AgentCore-Runtime-Session-Id: $(uuidgen)" \ -d '{"messages": [{"role": "user", "content": [{"text": "Hi"}]}]}'
AgentCore CLI
agentcore add harness --name MyNewHarness \ --authorizer-type CUSTOM_JWT \ --discovery-url {DISCOVERY_URL} \ --allowed-clients {CLIENT_ID} agentcore deploy

Memanggil dengan token pembawa:

agentcore invoke --harness MyNewHarness --bearer-token "{token}" "Hello"

Jika titik akhir penemuan OIDC penyedia identitas Anda hanya dapat dijangkau, tambahkan flag titik akhir pribadi ke otorisasi PrivateLink CUSTOM_JWT. Menggunakan titik akhir VPC yang dikelola layanan:

agentcore add harness --name MyNewHarness \ --authorizer-type CUSTOM_JWT \ --discovery-url {DISCOVERY_URL} \ --allowed-clients {CLIENT_ID} \ --private-endpoint-vpc-id vpc-0abc1234def56789a \ --private-endpoint-subnets subnet-0abc1234def56789a,subnet-0def5678abc12349b \ --private-endpoint-ip-type IPV4 \ --private-endpoint-security-groups sg-0abc1234def56789a agentcore deploy

Atau arahkan ke konfigurasi sumber daya VPC Lattice yang ada alih-alih titik akhir VPC yang dikelola:

agentcore add harness --name MyNewHarness \ --authorizer-type CUSTOM_JWT \ --discovery-url {DISCOVERY_URL} \ --allowed-clients {CLIENT_ID} \ --private-endpoint-lattice-arn rcfg-0abc1234def56789a agentcore deploy
catatan

Bendera titik akhir pribadi hanya valid dengan. --authorizer-type CUSTOM_JWT --private-endpoint-vpc-iddan --private-endpoint-lattice-arn saling eksklusif - pilih satu. Dengan--private-endpoint-vpc-id, keduanya --private-endpoint-subnets dan --private-endpoint-ip-type (IPV4atauIPV6) diperlukan.

Lihat otorisasi JWT masuk untuk alur pengaturan OAuth lengkap.

Interactive

Jalankan agentcore di direktori proyek, pilih tambahkan, pilih Harness, dan lanjutkan ke Pengaturan lanjutan. Aktifkan Otentikasi (dan Jaringan untuk akses VPC) dengan Spasi, lalu tekan Enter.

  1. Pilih jenis otorisasi: AWS IAM (default) atau Custom JWT untuk autentikasi token pembawa OIDC.

    Pilih jenis otorisasi harness
  2. Untuk Custom JWT, masukkan URL penemuan OIDC.

    Konfigurasikan JWT Kustom: URL penemuan
  3. Pilih batasan token mana yang akan divalidasi - audiens yang diizinkan, klien yang diizinkan, cakupan yang diizinkan, atau klaim khusus.

    Pilih batasan JWT untuk dikonfigurasi
  4. Pilih cara harness mencapai titik akhir penemuan IDP: Tidak ada (dapat dijangkau secara publik), sumber daya VPC Lattice, atau titik akhir VPC Terkelola (). PrivateLink

    PrivateLink opsi untuk titik akhir penemuan IDP
  5. Untuk Jaringan, pilih mode VPC dan berikan ID subnet dan ID grup keamanan.

    Masukkan ID subnet VPC

Konfirmasikan wizard, lalu jalankan agentcore deploy untuk menerapkan.

Pelajari lebih lanjut: AgentCore Identitas · otorisasi JWT masuk · kredensyal keluar

Kebijakan gateway

Ketika alat disajikan melalui AgentCore Gateway, Cedar-based kebijakan gerbang setiap panggilan: siapa yang dapat memanggil alat mana, dalam kondisi apa, dengan argumen mana.

Pelajari lebih lanjut: AgentCore Kebijakan · pola umum

Kebijakan peran eksekusi

Harness mengasumsikan peran eksekusi IAM yang Anda berikan. Kebijakan kepercayaan peran harus memungkinkan kepala AgentCore layanan untuk menganggapnya:

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "bedrock-agentcore.amazonaws.com"}, "Action": "sts:AssumeRole" }] }

Izin IAM yang diperlukan untuk penelepon

Harness API memerlukan izin pada sumber daya harness dan sumber daya AgentCore Runtime dan Memori opsional yang mendasarinya. AgentCore Tabel berikut mencantumkan tindakan yang diperlukan untuk setiap API:

API Tindakan IAM yang diperlukan

InvokeHarness

bedrock-agentcore:InvokeHarness, bedrock-agentcore:InvokeAgentRuntime

InvokeAgentRuntimeCommand

bedrock-agentcore:InvokeAgentRuntimeCommand, bedrock-agentcore:InvokeAgentRuntime

CreateHarness

bedrock-agentcore:CreateHarness, bedrock-agentcore:CreateAgentRuntime, bedrock-agentcore:CreateMemory

UpdateHarness

bedrock-agentcore:UpdateHarness, bedrock-agentcore:UpdateAgentRuntime, bedrock-agentcore:UpdateMemory

DeleteHarness

bedrock-agentcore:DeleteHarness, bedrock-agentcore:DeleteAgentRuntime, bedrock-agentcore:DeleteMemory

GetHarness

bedrock-agentcore:GetHarness

ListHarnesses

bedrock-agentcore:ListHarnesses

CreateHarnessEndpoint

bedrock-agentcore:CreateHarnessEndpoint, bedrock-agentcore:CreateAgentRuntimeEndpoint

UpdateHarnessEndpoint

bedrock-agentcore:UpdateHarnessEndpoint, bedrock-agentcore:UpdateAgentRuntimeEndpoint

DeleteHarnessEndpoint

bedrock-agentcore:DeleteHarnessEndpoint, bedrock-agentcore:DeleteAgentRuntimeEndpoint

GetHarnessEndpoint

bedrock-agentcore:GetHarnessEndpoint

ListHarnessEndpoints

bedrock-agentcore:ListHarnessEndpoints

ListHarnessVersions

bedrock-agentcore:ListHarnessVersions

Sebagian besar tindakan menggunakan harness ARN sebagai ruang lingkup sumber daya:. arn:aws:bedrock-agentcore:<region>:<accountId>:harness/<id> Tindakan titik akhir juga menggunakan titik akhir harness ARN:. arn:aws:bedrock-agentcore:<region>:<accountId>:harness/<id>/harness-endpoint/<endpointName>

TheGetHarnessEndpoint,UpdateHarnessEndpoint, dan DeleteHarnessEndpoint action membutuhkan ARN harness dan ARN endpoint. CreateHarnessEndpointhanya membutuhkan harness ARN. Titik akhir belum ada, jadi tidak diperlukan ARN titik akhir. Saat Anda memanggil titik akhir khusus, InvokeHarness dan InvokeAgentRuntimeCommand memerlukan ARN harness dan ARN titik akhir.

Contoh kebijakan peran eksekusi

{ "Version": "2012-10-17", "Statement": [ { "Sid": "BedrockModelInvocation", "Effect": "Allow", "Action": [ "bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream" ], "Resource": [ "arn:aws:bedrock:*::foundation-model/*", "arn:aws:bedrock:<region>:<accountId>:*" ] }, { "Sid": "EcrPublicTokenAccess", "Effect": "Allow", "Action": [ "ecr-public:GetAuthorizationToken" ], "Resource": "*" }, { "Sid": "StsForEcrPublicPull", "Effect": "Allow", "Action": [ "sts:GetServiceBearerToken" ], "Resource": "*" }, { "Sid": "XRayTracingAccess", "Effect": "Allow", "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", "xray:GetSamplingRules", "xray:GetSamplingTargets" ], "Resource": "*" }, { "Sid": "CloudWatchLogsGroup", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:DescribeLogStreams" ], "Resource": "arn:aws:logs:<region>:<accountId>:log-group:/aws/bedrock-agentcore/runtimes/*" }, { "Sid": "CloudWatchLogsDescribeGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": "arn:aws:logs:<region>:<accountId>:log-group:*" }, { "Sid": "CloudWatchLogsStream", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:<region>:<accountId>:log-group:/aws/bedrock-agentcore/runtimes/*:log-stream:*" }, { "Sid": "CloudWatchMetricsPublish", "Effect": "Allow", "Resource": "*", "Action": "cloudwatch:PutMetricData", "Condition": { "StringEquals": { "cloudwatch:namespace": "bedrock-agentcore" } } }, { "Sid": "AgentCoreWorkloadIdentity", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetWorkloadAccessToken", "bedrock-agentcore:GetWorkloadAccessTokenForJWT" ], "Resource": [ "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default/workload-identity/harness_<agentName>-*" ] }, { "Sid": "AgentCoreBrowserDefault", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartBrowserSession", "bedrock-agentcore:StopBrowserSession", "bedrock-agentcore:GetBrowserSession", "bedrock-agentcore:ListBrowserSessions", "bedrock-agentcore:UpdateBrowserStream", "bedrock-agentcore:ConnectBrowserAutomationStream", "bedrock-agentcore:ConnectBrowserLiveViewStream" ], "Resource": "arn:aws:bedrock-agentcore:<region>:aws:browser/*" }, { "Sid": "AgentCoreCodeInterpreterDefault", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartCodeInterpreterSession", "bedrock-agentcore:StopCodeInterpreterSession", "bedrock-agentcore:GetCodeInterpreterSession", "bedrock-agentcore:ListCodeInterpreterSessions", "bedrock-agentcore:InvokeCodeInterpreter" ], "Resource": "arn:aws:bedrock-agentcore:<region>:aws:code-interpreter/*" } ] }

AgentCore CLI menciptakan peran dengan izin ini secara otomatis saat Anda membuat proyek harness. Kebijakan di atas adalah untuk kasus di mana Anda membuat peran sendiri.

catatan

BedrockModelInvocationContoh pernyataan di atas memungkinkan pemanggilan semua model foundation di semua wilayah dan semua sumber daya Bedrock di akun Anda. Untuk merutekan ini, ganti ARN sumber daya dengan profil inferensi tertentu, yang memungkinkan Anda merutekan permintaan lintas model dan wilayah dengan satu ARN. Misalnya: arn:aws:bedrock:<destination_regions>:<accountId>:inference-profile/<profileId> dipasangkan dengan semua wilayah arn:aws:bedrock:<region>:<accountId>:foundation-model/<modelId> yang diizinkan.

Untuk beban kerja produksi, lingkup Resource nilai hingga ke ARN spesifik yang dibutuhkan harness Anda daripada menggunakan. "*"

Izin tambahan untuk fitur opsional

Di bawah ini adalah contoh kebijakan yang dapat Anda tambahkan ke peran eksekusi berdasarkan fitur yang digunakan harness Anda. Ikuti prinsip hak istimewa paling sedikit - berikan agen harness Anda hanya alat dan kredensyal khusus yang dibutuhkan untuk inferensi. Lihat Referensi placeholder definisi placeholder.

Akses ECR pribadi (gambar wadah khusus)

Tambahkan kebijakan ini saat harness Anda menggunakan gambar ECR pribadi untuk wadah kustom.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ECRImageAccess", "Effect": "Allow", "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "arn:aws:ecr:<ecrRegion>:<ecrAccountId>:repository/<ecrRepoName>" }, { "Sid": "ECRTokenAccess", "Effect": "Allow", "Action": "ecr:GetAuthorizationToken", "Resource": "*" } ] }

AgentCore Memori

Tambahkan kebijakan ini saat harness Anda menggunakan instance memori milik pelanggan.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreMemory", "Effect": "Allow", "Action": [ "bedrock-agentcore:CreateEvent", "bedrock-agentcore:DeleteEvent", "bedrock-agentcore:GetEvent", "bedrock-agentcore:ListEvents", "bedrock-agentcore:RetrieveMemoryRecords" ], "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:memory/<memoryId>" } ] }

AgentCore Browser (kustom)

Tambahkan kebijakan ini saat harness Anda menggunakan sumber daya browser khusus milik pelanggan.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreBrowserCustom", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartBrowserSession", "bedrock-agentcore:StopBrowserSession", "bedrock-agentcore:GetBrowserSession", "bedrock-agentcore:ListBrowserSessions", "bedrock-agentcore:UpdateBrowserStream", "bedrock-agentcore:ConnectBrowserAutomationStream", "bedrock-agentcore:ConnectBrowserLiveViewStream" ], "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:browser-custom/<browserCustomId>" } ] }

AgentCore Kode Interpreter (kustom)

Tambahkan kebijakan ini saat harness Anda menggunakan penerjemah kode kustom milik pelanggan.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreCodeInterpreterCustom", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartCodeInterpreterSession", "bedrock-agentcore:StopCodeInterpreterSession", "bedrock-agentcore:GetCodeInterpreterSession", "bedrock-agentcore:ListCodeInterpreterSessions", "bedrock-agentcore:InvokeCodeInterpreter" ], "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:code-interpreter-custom/<codeInterpreterCustomId>" } ] }

AgentCore Gerbang

Tambahkan kebijakan ini saat harness Anda menggunakan gateway yang dikonfigurasi dengan otentikasi masuk SiGv4.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreGatewayAccess", "Effect": "Allow", "Action": "bedrock-agentcore:InvokeGateway", "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:gateway/<gatewayId>" } ] }

Sumber keterampilan di Amazon S3 dan Git

Tambahkan kebijakan ini saat harness Anda mengambil skill dari sumber Amazon S3. Peran eksekusi mencantumkan dan mengunduh objek skill di bawah awalan bucket.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreSkillS3Access", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::<skillBucket>", "arn:aws:s3:::<skillBucket>/*" ] } ] }

Untuk mengambil keterampilan dari repositori Git pribadi, harness membaca token akses pribadi dari penyedia kredensi kunci API. Berikan kebijakan penyedia kredensyal kunci API yang ditunjukkan di bawah ini untuk penyedia kredensi yang memegang token.

Penyedia kredensi kunci API (referensi ARN header OpenAI, Gemini, LitellM, atau MCP)

Tambahkan kebijakan ini saat harness Anda menggunakan penyedia kredensi kunci API untuk penyedia model seperti OpenAI, Gemini, atau LiteLM.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreApiKeyTokenVaultDefault", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceApiKey", "Resource": [ "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default/workload-identity/harness_<agentName>-*" ] }, { "Sid": "AgentCoreApiKeyTokenVaultPerKey", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceApiKey", "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default/apikeycredentialprovider/<apiKeyName>" }, { "Sid": "AgentCoreApiKeySecret", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:<region>:<accountId>:secret:bedrock-agentcore-identity!default/apikey/<apiKeyName>-*" } ] }

Penyedia kredensi OAuth2 (Gateway) OAuth-protected

Tambahkan kebijakan ini saat harness Anda menggunakan penyedia kredensi OAuth2 untuk alat gateway. OAuth-protected

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreOAuth2TokenVaultDefault", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceOauth2Token", "Resource": [ "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default/workload-identity/harness_<agentName>-*" ] }, { "Sid": "AgentCoreOAuth2TokenVaultPerProvider", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceOauth2Token", "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default/oauth2credentialprovider/<oauthProviderName>" }, { "Sid": "AgentCoreOAuth2Secret", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:<region>:<accountId>:secret:bedrock-agentcore-identity!default/oauth2/<oauthProviderName>-*" } ] }

Referensi placeholder

Ganti placeholder berikut dalam kebijakan di atas dengan nilai khusus untuk lingkungan Anda:

Placeholder Deskripsi

<region>

AWS Wilayah tempat sumber daya Anda digunakan.

<accountId>

ID AWS akun Anda.

<agentName>

Nama agen harness Anda.

<memoryId>

ID sumber daya AgentCore memori Anda.

<browserCustomId>

ID sumber daya browser kustom Anda.

<codeInterpreterCustomId>

ID sumber daya interpreter kode kustom Anda.

<gatewayId>

ID sumber daya AgentCore Gateway Anda.

<apiKeyName>

Nama penyedia kredensi kunci API Anda.

<skillBucket>

Nama bucket S3 yang menyimpan file keahlian Anda.

<oauthProviderName>

Nama penyedia kredensi OAuth2 Anda.

<ecrRegion>

Wilayah tempat repositori ECR Anda di-host.

<ecrAccountId>

ID AWS akun yang memiliki repositori ECR.

<ecrRepoName>

Nama repositori ECR Anda.

catatan

Bagian belakang -* pada sumber daya Secrets Manager menyumbang akhiran acak yang ditambahkan Secrets Manager ke ARN rahasia.