Pagar pembatas dalam kebijakan
Bagian ini menjelaskan cara mendefinisikan Bedrock Guardrails dalam kebijakan. Bedrock Guardrails menyediakan perlindungan yang dapat dikonfigurasi yang dapat berjalan pada permintaan dan tanggapan untuk menjaga keamanan aplikasi AI. Saat ini Anda dapat menentukan serangan cepat, filter konten, dan pagar pembatas informasi sensitif dalam kebijakan. Setiap pagar pembatas harus dikonfigurasi dengan kategori dan ambang batas antara 0 dan 1.
Ketika pagar pembatas mengevaluasi konteks, ia mengembalikan skor kepercayaan antara 0 dan 1, menunjukkan tingkat kepercayaan bahwa konten yang dievaluasi menunjukkan properti yang ditentukan (misalnya). PROMPT_INJECTION
Ketersediaan regional pagar pembatas
Tabel berikut menunjukkan AWS Daerah mana yang memiliki dukungan untuk pagar pembatas dalam kebijakan:
| Timur AS (N. Virginia) | AS Timur (Ohio) | AS Barat (Oregon) | Eropa (Frankfurt) | Eropa (Irlandia) | Eropa (London) | Eropa (Paris) | Eropa (Stockholm) | Asia Pasifik (Mumbai) | Asia Pasifik (Singapura) | Asia Pasifik (Sydney) | Asia Pasifik (Tokyo) | Asia Pasifik (Seoul) | Kanada (Pusat) | Amerika Selatan (Sao Paulo) | AWS GovCloud (US-West) | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Support Guardrails |
✅ |
❌ |
❌ |
❌ |
❌ |
✅ |
❌ |
✅ |
❌ |
❌ |
✅ |
✅ |
❌ |
❌ |
❌ |
❌ |
Sebelum Anda mulai
Sebelum Anda mulai, Anda perlu mengkonfigurasi peran IAM Anda dengan benar.
Izin
Peran Eksekusi AgentCore Gateway yang dikonfigurasi pada gateway yang terkait dengan mesin kebijakan Anda harus memiliki izin untuk AgentCore operasi Bedrock dan Bedrock Guardrails. bedrock:InvokeGuardrailChecksIzin diperlukan karena bidang data Kebijakan menggunakan kredensyal FAS (Forward Access Session) yang berasal dari peran eksekusi gateway untuk memanggil Bedrock Guardrails API atas nama Anda.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "bedrock-agentcore:*", "Resource": "*" }, { "Effect": "Allow", "Action": "bedrock:InvokeGuardrailChecks", "Resource": "*" } ] }
Pagar pembatas yang didukung
| Nama Safeguard | Jenis Entitas | Kategori Safeguard |
|---|---|---|
|
Filter konten |
|
|
|
Deteksi serangan yang cepat |
|
|
|
Informasi sensitif |
|
|
Mendefinisikan pagar pembatas dalam kebijakan
Untuk menentukan pagar pembatas dalam kebijakan, Anda dapat menulis kebijakan sebagai kode atau menjelaskan kebijakan dalam bahasa alami. Mirip dengan kebijakan yang ada yang mungkin telah Anda buat, Anda perlu menentukan efek (misalnyapermit) dengan kondisi (when guardrails). Dalam kondisi tersebut, Anda perlu memberikan perlindungan pagar pembatas khusus yang ingin Anda aktifkan, kategori perlindungan yang akan digunakan, konteks yang Anda inginkan untuk dievaluasi oleh pelindung pagar pembatas, dan ambang batas skor kepercayaan.
Contoh definisi pagar pembatas
suppressOutput (principal, action == AgentCore::Action::"<TARGET_NAME>_<METHOD>:<URI>", resource == AgentCore::Gateway::"<GATEWAY_ARN>") when guardrails { BedrockGuardrails::ContentFilter(["HATE"],[context.output.message])["HATE"] .confidenceScore .greaterThan(decimal("0.2")) };
Menentukan perlindungan pagar pembatas
Untuk memilih jenis entitas safeguard tertentu, gunakan namespace: BedrockGuardrails
| Pengamanan | Nama fungsi pagar pembatas |
|---|---|
|
Filter Konten |
|
|
Serangan Cepat |
|
|
Informasi Sensitif |
|
Memilih kategori perlindungan
Pilih kategori untuk perlindungan yang diberikan (lihat). Pagar pembatas yang didukung
mis. BedrockGuardrails::ContentFilter(["HATE"],[context.output.message])
Efek untuk pagar pembatas
Untuk membuat pagar pembatas untuk digunakan dalam permintaan otorisasi, gunakan dan efek. permit forbid Ini terus mengatur otorisasi permintaan.
forbid (principal, action == AgentCore::Action::"<TargetName>___POST:/invocations", resource) when guardrails { BedrockGuardrails::PromptAttack(["PROMPT_INJECTION"], [context.input.prompt])["PROMPT_INJECTION"].confidenceScore.greaterThan(decimal("0.6")) };
Untuk membuat pagar pembatas untuk digunakan dalam menekan output dari alat, agen, atau model, gunakan efeknya. suppressOutput suppressOutputadalah efek baru yang beroperasi pada data yang dikembalikan tindakan. Setelah tindakan resmi selesai, ia mengevaluasi output terhadap pagar pembatas dan menekan output ketika pagar pembatas dilanggar.
suppressOutput (principal, action == AgentCore::Action::"<TargetName>___POST:/invocations", resource) when guardrails { BedrockGuardrails::SensitiveInformation(["US_SOCIAL_SECURITY_NUMBER"], [context.output.text])["US_SOCIAL_SECURITY_NUMBER"] .confidenceScore .greaterThan(decimal("0.5")) };
Meneruskan konteks ke pagar pembatas Anda
Saat mendefinisikan pagar pembatas dalam kebijakan, Anda harus menentukan jalur data (misalnyacontext.input.message) yang mengidentifikasi nilai yang akan diekstrak dari muatan tindakan. Pagar pembatas mengevaluasi nilai yang diekstraksi. Anda dapat menentukan satu atau beberapa jalur ke data berdasarkan permintaan atau skema respons Anda.
mis. [context.input.message, context.input.systemPrompt]
Ambang batas untuk pagar pembatas
Dengan filter konten dan deteksi serangan cepat, pagar pembatas mengembalikan skor kepercayaan, yang merupakan nilai numerik dalam kisaran [0, 1], di mana 0 adalah kepercayaan rendah dan 1 adalah kepercayaan tinggi. Skor tersebut menunjukkan seberapa percaya diri pagar pembatas mendeteksi pelanggaran. Skor yang mungkin saat ini adalah nilai diskrit {0, 0.2, 0.4, 0.6, 0.8, dan 1.0}.
Untuk menetapkan ambang batas, Anda perlu memberikan nilai desimal ke operator perbandingan (misalnya). greaterThan(decimal("0.4"))
Operator perbandingan skor
Anda dapat menerapkan operator perbandingan di bawah ini ke salah satu dariconfidenceScore,maxConfidenceScore(), atauminConfidenceScore():
| Operator | Penggunaan |
|---|---|
|
|
Skor > ambang |
|
|
Skor ≥ ambang batas |
|
|
Skor < ambang batas |
|
|
Skor ≤ ambang batas |
Anda dapat menggunakan agregasi dalam kebijakan Anda untuk mengekstrak dan membandingkan skor yang dikembalikan oleh pagar pembatas:
Agregasi
| Agregasi | Deskripsi | Contoh |
|---|---|---|
|
|
Akses skor kepercayaan untuk kategori tertentu (desimal |
|
|
|
Keyakinan maksimum di semua kategori yang dipindai (desimal |
|
|
|
Keyakinan minimum di semua kategori yang dipindai (desimal |
|
|
|
Jumlah temuan yang terdeteksi (Panjang |
|
Bagaimana memilih ambang batas
Jika Anda tidak menentukan ambang batas saat meminta layanan authoring, AgentCore tetapkan nilai default. Jika Anda menulis kebijakan Anda tanpa bantuan layanan authoring, Anda harus memberikan nilai ambang batas.
Default di bawah ini dikalibrasi untuk memberikan cakupan luas dengan presisi yang dapat diterima untuk sebagian besar beban kerja:
| Pengamanan | Ambang batas default |
|---|---|
|
Filter Konten |
0.2 |
|
Deteksi Serangan Cepat |
0,4 |
|
Informasi Sensitif |
0.2 |
Memilih ambang batas khusus
Jika ambang batas default tidak memenuhi persyaratan Anda, Anda dapat menentukan ambang batas optimal untuk beban kerja Anda menggunakan salah satu pendekatan berikut.
Opsi 1: Evaluasi terhadap set tes emas
Gunakan pendekatan ini ketika Anda memiliki serangkaian input pengujian yang dikuratori dengan hasil yang diharapkan yang jelas.
-
Buat kebijakan Anda dan setel mode mesin kebijakan Anda ke LOG_ONLY.
-
Jalankan set pengujian Anda melalui gateway yang dilampirkan oleh mesin kebijakan Anda.
-
Tinjau log untuk setiap evaluasi. Setiap entri log mencakup konten yang dievaluasi dan skor kepercayaan yang dikembalikan oleh pagar pembatas.
-
Untuk setiap hasil, beri label apakah pagar pembatas seharusnya menandai konten atau tidak melakukan apa pun (masing-masing benar dan salah).
-
Dengan menggunakan label ini, dikombinasikan dengan skor kepercayaan yang tersedia di log Anda, buat matriks kebingungan pada beberapa nilai ambang batas. Bandingkan presisi dan ingat di setiap ambang batas untuk memilih nilai yang sesuai dengan toleransi Anda untuk positif palsu versus deteksi yang terlewat.
Opsi 2: Evaluasi terhadap lalu lintas produksi
Gunakan pendekatan ini ketika Anda tidak memiliki set pengujian pra-bangun dan ingin mengkalibrasi menggunakan pola lalu lintas nyata.
-
Buat kebijakan Anda dan setel mode mesin kebijakan Anda ke LOG_ONLY.
-
Izinkan mesin kebijakan untuk mengevaluasi lalu lintas produksi. Setiap entri log mencakup konten yang dievaluasi dan skor kepercayaan yang dikembalikan oleh pagar pembatas.
-
Gunakan LLM-as-a-judge untuk memberi label pada setiap hasil yang dicatat sebagai true (pagar pembatas seharusnya menandai konten) atau false (pagar pembatas seharusnya tidak menandai konten).
-
Dengan menggunakan label ini, buat matriks kebingungan pada beberapa nilai ambang batas. Bandingkan presisi dan ingat di setiap ambang batas untuk memilih nilai yang sesuai dengan toleransi Anda untuk positif palsu versus deteksi yang terlewat.
Uji pagar pembatas dalam kebijakan
AgentCore menyediakan beberapa mekanisme untuk menguji kebijakan pagar pembatas sebelum menegakkannya pada lalu lintas produksi. Anda dapat mengontrol penegakan hukum di tingkat mesin kebijakan, di tingkat kebijakan individu, atau keduanya, memungkinkan Anda untuk memvalidasi perilaku pagar pembatas secara bertahap. Lihat menguji kebijakan untuk informasi selengkapnya.
Bagaimana pagar pembatas bekerja dengan kebijakan
Kebijakan pagar pembatas dapat diterapkan ke target gateway apa pun. Pagar pembatas berjalan pada: * Target MCP — POST /mcp (JSON-RPC tools/call) * Target runtime HTTP — * Target Inferensi HTTP — POST /<target>/invocations POST /inference
Saat panggilan tiba di gateway Anda, Penilai Kebijakan melakukan hal berikut:
-
Lingkup kecocokan - Mengidentifikasi kebijakan pagar pembatas mana yang berlaku untuk permintaan ini
-
Mengekstrak konten - Menarik bidang yang ditentukan oleh
dataPath(misalnya,context.input.message) dari badan permintaan -
Calls Bedrock InvokeGuardrailChecks API — Mengevaluasi konten dan menyuntikkan skor kepercayaan yang dikembalikan ke dalam konteks evaluasi kebijakan
-
Mengevaluasi kebijakan menggunakan skor pagar pembatas - Membandingkan skor kepercayaan yang dikembalikan dengan ambang batas yang ditentukan dalam kebijakan
-
Mengembalikan keputusan —
ALLOWatauDENYdengan anotasi kebijakan kembali ke gateway
Catatan: Pagar pembatas tidak deterministik. Masukan yang sama dapat menghasilkan output yang berbeda. Kebijakan, bagaimanapun, bersifat deterministik, input yang sama akan selalu menghasilkan output yang sama.
Batasan pagar pembatas dalam kebijakan
-
Tidak ada dukungan untuk regex atau pencocokan pola - pagar pembatas menggunakan penilaian HTML, bukan ekspresi reguler
-
Anda tidak dapat mencampur kebijakan Cedar standar dengan pagar pembatas — menggantikan
when guardrails {…}when {…} -
Pagar pembatas diperlukan di
when guardrails {…}blok — blok pagar pembatas harus memiliki setidaknya satu pagar pembatas yang ditentukan di dalamnya