Menulis kebijakan dalam bahasa alami
Kebijakan di AgentCore akan secara otomatis memilih wilayah optimal dalam geografi Anda untuk memproses permintaan inferensi Anda yang dibuat melalui layanan pembuat Kebijakan. Ini memaksimalkan sumber daya komputasi yang tersedia, ketersediaan model, dan memberikan pengalaman pelanggan terbaik. Data Anda akan tetap disimpan hanya di wilayah tempat permintaan berasal, namun, permintaan input dan hasil keluaran dapat diproses di luar wilayah tersebut. Semua data akan dikirimkan dienkripsi di seluruh jaringan aman Amazon.
Kebijakan dalam AgentCore akan secara aman merutekan permintaan inferensi Anda ke sumber daya komputasi yang tersedia dalam wilayah geografis tempat permintaan tersebut berasal, sebagai berikut:
-
Permintaan inferensi yang berasal dari Uni Eropa akan diproses di dalam Uni Eropa.
-
Permintaan inferensi yang berasal dari Amerika Serikat akan diproses di Amerika Serikat.
-
Permintaan inferensi yang berasal dari APAC akan diproses dalam APAC.
Topik
Gambaran umum
Cedar menyediakan kontrol akses yang tepat, tetapi membutuhkan pembelajaran sintaks formal. NL2cedar memungkinkan Anda untuk:
-
Tulis persyaratan otorisasi dalam bahasa alami
-
Secara otomatis mengkonversi ke sintaks Cedar
-
Verifikasi kebijakan yang dihasilkan sesuai dengan kebutuhan Anda
catatan
Pembuatan kebijakan bahasa alami memerlukan AgentCore Gateway dan mesin kebijakan yang diterapkan. Layanan ini menggunakan skema AgentCore Gateway untuk menghasilkan kebijakan Cedar yang valid. Lihat Memulai Kebijakan AgentCore untuk petunjuk penyiapan.
catatan
Bahasa alami fleksibel, tetapi presisi sangat penting untuk keamanan. Kebijakan harus jelas dan tidak ambigu.
Contoh
Kebijakan pengembalian dana dari bagian sebelumnya dapat dinyatakan dalam bahasa alami:
Bahasa alami:
Izinkan prinsipal dengan nama pengguna “agen pengembalian uang” untuk memproses pengembalian dana ketika jumlah pengembalian dana kurang dari $500.
Konversi ke Cedar:
permit( principal is AgentCore::OAuthUser, action == AgentCore::Action::"RefundTool___process_refund", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/refund-gateway" ) when { principal.hasTag("username") && principal.getTag("username") == "refund-agent" && context.input.amount < 500 };
Efek kebijakan
Kebijakan otorisasi memiliki dua kemungkinan efek: izin dan larangan.
Kebijakan izin
Kebijakan izin menentukan apa yang dapat dilakukan pengguna:
-
“Izinkan agen pengembalian dana pengguna untuk memproses pengembalian uang”
-
“Izinkan pengguna dengan direktur peran untuk menyetujui keputusan”
-
“Otorisasi pengguna dengan admin lingkup: tulis untuk memperbarui cakupan”
Melarang kebijakan
Kebijakan larangan menentukan apa yang tidak dapat dilakukan pengguna:
-
“Blokir pengguna dari mengakses model sensitivitas tinggi”
-
“Tolak penjamin emisi junior dari menyetujui keputusan”
-
“Melarang pengguna memproses pengembalian uang saat validasi risiko tertunda”
Semantik otorisasi
Memahami bagaimana Cedar mengevaluasi kebijakan sangat penting untuk menulis aturan otorisasi yang efektif. Cedar mengikuti tiga prinsip dasar:
-
Secara default, semuanya ditolak - Jika tidak ada kebijakan yang secara eksplisit mengizinkan suatu tindakan, kebijakan tersebut akan diblokir secara otomatis
-
Melarang selalu menang - Jika ada kebijakan larangan yang cocok, akses ditolak meskipun kebijakan izin juga cocok
-
Setidaknya satu izin diperlukan - Agar akses diberikan, setidaknya satu kebijakan izin harus cocok DAN tidak ada kebijakan larangan yang dapat cocok
Mengapa menggunakan kebijakan larangan jika semuanya ditolak secara default?
Kebijakan melarang memastikan bahwa tindakan tertentu tidak dapat secara keliru diizinkan. Bahkan jika seseorang menulis kebijakan izin yang lebih luas, kebijakan larangan diutamakan dan memblokir akses.
Contoh skenario:
// Broad permit policy - allows all users to view model results permit( principal is AgentCore::OAuthUser, action == AgentCore::Action::"ModelAPI___view_results", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/model" ); // Forbid policy - blocks access to high-sensitivity results forbid( principal is AgentCore::OAuthUser, action == AgentCore::Action::"ModelAPI___view_results", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/model" ) when { context.input.sensitivity == "high" };
Hasil: Pengguna dapat melihat hasil sensitivitas rendah dan sedang (izin berlaku), tetapi hasil sensitivitas tinggi selalu diblokir (melarang kemenangan).
Gunakan kebijakan larangan untuk:
-
Pembatasan keamanan eksplisit yang tidak boleh diganti
-
Persyaratan kepatuhan
-
Penutupan darurat
-
Membuat pengecualian untuk kebijakan izin yang lebih luas
Elemen kebijakan
Kebijakan otorisasi memerlukan tiga elemen kunci:
-
Siapa - Pengguna atau peran mana yang dapat melakukan tindakan
-
Apa - Operasi atau alat apa yang dapat mereka gunakan
-
Kapan - Dalam kondisi atau kendala apa
Spesifikasi utama
Prinsipal mengidentifikasi pengguna, peran, atau grup mana yang berlaku untuk kebijakan tersebut.
Ekspresi fleksibel:
-
“Izinkan agen pengembalian uang pengguna untuk...”
-
“Izinkan pengguna dengan agen pengembalian uang nama pengguna untuk...”
-
“Pengguna dengan peran agen asuransi dapat...”
-
“Siapa pun dengan ruang lingkup pengembalian uang: tulis diizinkan untuk...”
-
“Semua pengguna bisa...”
Jadilah spesifik tentang identitas:
Tidak lengkap: ❌ “Izinkan pemrosesan pengembalian uang di bawah $500"
Selesai: ✓ “Izinkan agen pengembalian uang untuk memproses pengembalian uang di bawah $500"
Spesifikasi tindakan
“Apa” mengidentifikasi operasi, alat, atau tindakan mana yang dikendalikan kebijakan.
Kata kerja aksi fleksibel:
-
“Izinkan pengguna untuk memproses pengembalian uang”
-
“Izin pemrosesan pengembalian uang”
-
“Pengguna dapat membuat aplikasi”
-
“Otorisasi melihat log audit”
Lebih spesifik tentang alat ini:
Vague: ❌ “Izinkan pengguna mengakses model”
Hapus: ✓ “Izinkan tim ilmu data mengakses model analitik”
Spesifikasi kondisi
“Kapan” menentukan dalam keadaan apa kebijakan tersebut berlaku.
Ekspresi kondisional yang fleksibel:
-
“... ketika jumlahnya kurang dari $500"
-
“... jika wilayahnya AS, CA, atau Inggris”
-
“... hanya ketika status persetujuan disetujui oleh manajer”
-
“... asalkan skor risiko telah diserahkan”
Tepat dengan kondisi:
Vague: ❌ “Izinkan transfer jika jumlahnya masuk akal”
Tepat: ✓ “Izinkan transfer ketika jumlahnya kurang dari $10.000"
Contoh kebijakan
Contoh berikut menunjukkan bagaimana menyusun kebijakan bahasa alami dengan prinsip, tindakan, dan kondisi yang jelas.
Topik
Contoh 1: User-Based Kebijakan Sederhana
Izinkan agen pengembalian dana pengguna untuk memproses pengembalian dana ketika jumlahnya kurang dari $500.
Elemen:
-
Siapa: agen pengembalian dana pengguna
-
Apa: pengembalian dana proses
-
Kapan: jumlahnya kurang dari $500
Contoh 2: Role-Based dengan Beberapa Kondisi
Memungkinkan pengguna dengan agen asuransi peran untuk memperbarui cakupan ketika jenis pertanggungan adalah kewajiban atau tabrakan dan kebijakan aktif.
Elemen:
-
Siapa: pengguna dengan agen asuransi peran
-
Apa: perbarui cakupan
-
Kapan: Jenis pertanggungan adalah kewajiban atau tabrakan DAN kebijakan aktif
Contoh 3: Scope-Based Akses
Izinkan pengguna dengan cakupan perjalanan: pesan untuk membuat pemesanan penerbangan ketika wilayah tersebut bukan UE dan produk memenuhi syarat.
Elemen:
-
Siapa: pengguna dengan ruang lingkup perjalanan:buku
-
Apa: buat pemesanan penerbangan
-
Kapan: wilayah bukan UE DAN produk memenuhi syarat
Contoh 4: Semua Orang dengan Kendala
Izinkan semua pengguna untuk melihat hasil model ketika sensitivitas data rendah atau sedang dan jenis hasilnya adalah skor risiko.
Elemen:
-
Siapa: semua pengguna
-
Apa: lihat hasil model
-
Kapan: sensitivitas data rendah atau sedang DAN tipe hasilnya adalah skor risiko
Sintaks kondisi
Kondisi adalah di mana kebijakan sering menjadi ambigu. Berikut cara menulis kondisi yang jelas dan dapat diuji.
Perbandingan Numerik
Contoh yang bagus:
-
“ketika jumlahnya kurang dari $500"
-
“ketika jumlah pertanggungan di bawah 5 juta”
-
“ketika klaim melebihi $10.000.000"
-
“ketika jumlah penumpang tepat 2"
Hindari istilah yang tidak jelas:
-
❌ “ketika jumlahnya kecil”
-
❌ “ketika cakupannya tinggi”
Pencocokan String
Pertandingan yang tepat:
-
“ketika wilayahnya adalah AS”
-
“ketika metode pembayarannya adalah kartu kredit”
-
“ketika status disetujui”
Beberapa opsi:
-
“ketika wilayahnya adalah AS atau CA atau Inggris”
-
“ketika jenis keputusan disetujui atau dirujuk”
Pencocokan pola:
-
“ketika email berisi @example .com”
-
“ketika ruang lingkup berisi admin:write”
Negasi:
-
“ketika wilayah itu bukan UE”
-
“ketika klasifikasi tidak dibatasi”
Kondisi Boolean
Pemeriksaan langsung:
-
“ketika produk memenuhi syarat”
-
“ketika skor risiko dikirimkan”
-
“ketika pengiriman ekspres diminta”
Negasi:
-
“ketika produk tidak memenuhi syarat”
-
“ketika skor risiko tidak dikirimkan”
Keberadaan Lapangan
Membutuhkan bidang:
-
“ketika ada alasan yang diberikan”
-
“ketika ID aplikasi ada”
-
“ketika tanggal pengembalian ditentukan”
Menggabungkan kondisi
Kebijakan riil seringkali membutuhkan beberapa kondisi. Gunakan konektor logis yang jelas.
DAN Logika (Semua Harus Benar)
Gunakan kata-kata seperti: “dan”, “juga”, “tambahan”, “sementara”, “dengan”
Contoh:
Izinkan aplikasi ketika wilayah tersebut adalah AS dan produk memenuhi syarat dan wilayah tersebut aktif.
ATAU Logika (Setidaknya Satu Harus Benar)
Gunakan kata-kata seperti: “atau”, “alternatifnya”, “baik”
Contoh:
Izinkan persetujuan ketika klaim melebihi $10.000.000 atau tingkat risiko tinggi atau kritis.
Logika Kompleks
Untuk kondisi kompleks, gunakan struktur yang jelas:
Contoh:
Izinkan finalisasi saat tahap alur kerja selesai ditinjau atau disetujui, dan status kepatuhan disahkan, dan wewenangnya adalah manajer atau direktur.
Perangkap umum
Hindari kesalahan umum ini saat menulis kebijakan bahasa alami untuk memastikan mereka mengonversi dengan benar ke sintaks Cedar.
Topik
Kesalahan 1: Prinsipal Samar-samar
Buruk: “Izinkan akses ke alat pengembalian dana”
Bagus: “Izinkan agen pengembalian dana pengguna untuk mengakses alat pengembalian dana”
Kesalahan 2: Tindakan Ambigu
Buruk: “Izinkan pengguna mengakses data”
Bagus: “Izinkan pengguna untuk melihat catatan pasien”
Kesalahan 3: Kondisi Subyektif
Buruk: “Izinkan transfer ketika jumlahnya masuk akal”
Bagus: “Izinkan transfer ketika jumlahnya kurang dari $10.000"
Kesalahan 4: Kondisi Hilang
Buruk: “Izinkan pengguna dengan admin lingkup: tulis untuk memperbarui cakupan”
Bagus: “Izinkan pengguna dengan admin lingkup: tulis untuk memperbarui cakupan saat kebijakan aktif dan jenis cakupan adalah kewajiban atau tabrakan”
Kesalahan 5: Logika Tidak Jelas
Buruk: “Izinkan ketika A atau B dan C”
Bagus: “Izinkan kapan (A atau B) dan C” atau “Izinkan saat A atau (B dan C)”