Lewati ke konten utama
Halaman ini adalah terjemahan mesin dan belum sepenuhnya ditinjau. Teks asli berbahasa Inggris adalah acuan yang berlaku. Pernyataan tentang keamanan, privasi, penanganan data, kepatuhan, dan lisensi tetap dalam bahasa Inggris sampai peninjau teknis menyetujuinya. Baca teks asli berbahasa Inggris

Alur kerja persetujuan Human-in-the-Loop

Teks asli berbahasa Inggris -- terjemahan menunggu tinjauan teknis

escalate_on_deny does not raise an approval request

The deny fires. A rule tagged escalate_on_deny: true denies exactly as written -- the matched rule's own policy_id, effect: "deny", reason_code: "RULE_MATCH". You are protected.

The escalation does not. The tag is accepted by the policy schema and carried into the policy bundle, and no enforcer acts on it: no approval request is raised, no approver is notified, and decision.requires_approval stays false. Code that branches on decision.requires_approval in order to act on this tag therefore never runs. (A different mechanism, LLM function policies' require_approval, does set that field -- escalate_on_deny is not wired to it.) Tracking: #2391.

To request approval today, call it explicitly. client.request_approval(decision) posts a real approval request. Nothing about the tag calls it for you. See Approval callback. Per #2363 the approver-facing /approvals pages are gated in production, so requests are resolved through the API.

This applies to the published Python SDK (controlzero 1.13.14) and the published Node SDK (@controlzero/sdk 1.13.6) alike.

Mode yang didukung: Hosted Hybrid Local Tersedia di: Teams (Free + Solo dapat membaca tetapi tidak dapat mengaktifkan; memerlukan pemberi persetujuan yang terpisah) Status: BETA SDK: 1.6.0+ (validator-additive di 1.5.8)

Ketersediaan

Jalur permintaan persetujuan berfungsi di setiap deployment, termasuk paket hosted (SaaS): kebijakan memunculkan permintaan, SDK berhenti sejenak, dan administrator mengaktifkan alurnya per cakupan (organisasi, proyek, atau kunci API) di Settings -> Approvals. Fitur ini berstatus BETA dan nonaktif secara default.

Halaman untuk pemberi persetujuan belum dapat diakses. Rute kotak masuk persetujuan dan detail permintaan dialihkan ke dasbor di setiap deployment yang dirilis, dan tautan dalam notifikasi mengarah ke jalur yang sama, sehingga saat ini pemberi persetujuan tidak dapat menyelesaikan permintaan dari UI.

Teks asli berbahasa Inggris -- terjemahan menunggu tinjauan teknis

A request nobody resolves runs to its deadline and the SDK raises HITLTimeoutError with a synthesized deny, so the original deny stands.

Lihat Menyiapkan persetujuan untuk panduan menyeluruh.

Ketika mesin kebijakan menolak pemanggilan alat, satu-satunya pilihan pengguna saat ini adalah: membaca pesan penolakan, mengedit kebijakan, melakukan redeploy. Gesekannya tinggi. Pelanggan melonggarkan kebijakan mereka untuk menghindari gesekan itu, dan tata kelola pun terkikis. Persetujuan mengubah momen penolakan menjadi momen permintaan, ketika sakelar per cakupan aktif dan kode Anda memintanya.

Cara kerjanya​

  1. Tulis kebijakan yang ketat. Tulis aturan deny yang seharusnya dapat ditinjau.
  2. Agen mengenai aturan. Pemanggilan ditolak. Kode Anda memutuskan bahwa penolakan ini adalah penolakan yang perlu dilihat manusia, dan memanggil client.request_approval(decision), yang melakukan POST permintaan persetujuan ke backend. Langkah ini eksplisit: tidak ada tag kebijakan yang melakukannya untuk Anda.
  3. Pemberi persetujuan diberi tahu. Lonceng dalam aplikasi + email (dengan magic-link untuk sesi dingin).
  4. Pemberi persetujuan memilih satu: Tolak / Setujui sekali / Setujui selama 24 jam, 7 hari, 30 hari / Setujui selamanya.
  5. SDK melanjutkan. Agen melanjutkan pemanggilan (jalur izinkan), atau mematuhi penolakan (jalur tolak).

Teks asli berbahasa Inggris -- terjemahan menunggu tinjauan teknis

Every approval is auditable: who approved, when, why, what grant was created or what policy diff was applied.

Jenis keputusan​

Pemberi persetujuan memilih salah satu dari:

Jenis keputusanYang dilakukannyaPenyimpanan
approved_onceSingle call only; auto-revoke after first use OR 5 minuteshitl_grants row, args_hash-bound
approved_timed24 jam, 7 hari, 30 hari, atau kustom (maks 90 hari)baris hitl_grants, terikat expires_at
approved_forever_grantSelamanya; dapat dicabut dari halaman admin /grantsbaris hitl_grants, expires_at IS NULL
approved_foreverPengeditan kebijakan: menyisipkan aturan izinkan di atas penolakanKenaikan versi kebijakan; aturan membawa metadata created_by_hitl

Defaultnya adalah approved_once. Admin menaikkan cakupan ketika mereka melihat sebuah pola.

Pemilih "Siapa yang dapat menggunakan persetujuan ini?"​

Untuk setiap keputusan grant, pemberi persetujuan memilih cakupan prinsipal:

  • Hanya <requestor_email> (default untuk alat + grant berjangka waktu)
  • Siapa pun yang menggunakan proyek X
  • Siapa pun di mesin Y
  • Siapa pun yang menggunakan kunci Z
  • Kondisi kustom (admin mengedit aturan secara manual)

Untuk secret, defaultnya adalah berlingkup pengguna bahkan pada approved_forever. Grant secret berumur panjang untuk seluruh proyek melemahkan vault. Lihat Persetujuan secret.

Lapisan identitas​

Alur persetujuan perlu mengetahui manusia mana yang memicu permintaan. Kunci API adalah kredensial mesin; kunci tersebut dapat dibagikan. SDK mewajibkan controlzero install --email <email> saat pemasangan; email dikirim pada setiap pemanggilan backend sebagai header X-CZ-Requestor-Email.

Ini paling penting untuk kunci API bersama (kunci proyek, kunci CI). Lihat Kunci multi-pengguna untuk model ancaman dan cerita forensiknya.

Apa yang BUKAN persetujuan​

  • Bukan pengganti penulisan kebijakan yang baik. Persetujuan adalah jalan keluar darurat ketika sebuah penolakan akan memaksa pelanggan melonggarkan aturan.

Teks asli berbahasa Inggris -- terjemahan menunggu tinjauan teknis

  • Not silent. Every approval is in the audit log. The /approvals page is the canonical surface for security review.

Teks asli berbahasa Inggris -- terjemahan menunggu tinjauan teknis

  • Not unlimited. Custom grant duration is capped at 365 days (default cap 90 days, configurable per scope).
  • Bukan untuk paket Free / Solo. Kedua paket hanya memiliki satu pengguna; persetujuan oleh diri sendiri hanya formalitas dan tidak memberikan tata kelola. Tingkatkan ke Teams untuk menggunakannya.

Lihat juga​