1. Thứ tự: ưu tiên tăng dần, match đầu tiên thắng
Trong một chính sách, các quy tắc được đánh giá theo thứ tựpriority ASC, id ASC:
prioritythấp hơn chạy trước. Một quy tắc vớipriority: 0được kiểm tra trước một cái vớipriority: 10. Hãy nghĩ về nó như một vị trí trong hàng đợi, không phải một điểm sức mạnh — số nhỏ hơn được nói trước.- Hòa thì phân giải theo rule id. Hai quy tắc ở cùng
prioritychạy theo thứ tự tạo (rule id tăng dần), nên quy tắc cũ hơn thắng lúc hòa. Dùng các ưu tiên riêng biệt khi thứ tự thực sự quan trọng thay vì dựa vào phân-giải-hòa theo id. - Match đầu tiên thắng. Engine dừng ở quy tắc đầu tiên mà các điều kiện của nó tất cả đúng và áp dụng verdict của nó. Các quy tắc xa hơn trong danh sách không bao giờ được hỏi cho cuộc gọi đó.
- Không match → verdict mặc định. Nếu không gì khớp,
default_verdictcủa chính sách áp dụng —audittrừ khi bạn đã đổi nó.
Một quy tắc chỉ khớp khi mọi điều kiện được khai báo đúng cùng lúc:
bề mặt,
glob tên-tool, glob skill tùy chọn, các
mệnh đề argument tùy chọn, và phạm
vi egress (chỉ quy tắc egress). Một match một phần là không-match, và việc đánh
giá chuyển sang quy tắc kế tiếp.
2. Một ví dụ cụ thể: cụ thể trước rộng
Công việc sắp-thứ-tự điển hình là để một allow hẹp sống sót qua một deny rộng. Đặt quy tắc cụ thể ở một ưu tiên thấp hơn để nó được tới trước:shell.echo chạm Rule A trước (priority 10), khớp, và
được allow — engine không bao giờ tới Rule B. Một cuộc gọi tới shell.exec rơi
qua A (glob không khớp), chạm Rule B, và bị deny.
Lật các ưu tiên và deny shell.* rộng ở priority 10 sẽ bắt shell.echo trước,
và allow của bạn ở priority 20 sẽ là dead code. Quy tắc kinh nghiệm: cụ thể
nhất trước, rộng nhất cuối.
3. Xác minh thứ tự trước khi bạn phụ thuộc vào nó
Suy luận về ưu tiên trên giấy dễ sai một khi một chính sách có hơn một nhúm quy tắc. Sandbox Test chạy engine thật trên một cuộc gọi tool mẫu và cho bạn biết không chỉ verdict mà còn quy tắc nào thắng — nên bạn có thể xác nhận quy tắc bạn mong đợi thực sự kích hoạt:Gửi một cuộc gọi mẫu
Nhập một tên tool (và đối số, nếu các quy tắc của bạn kiểm tra chúng) và
chạy nó. Không gì được dispatch và không gì được lưu — đó là một chạy thử.
4. Thực thi skill chồng lên trên
Ưu tiên quy tắc quyết định verdict của quy tắc thắng — nhưng đó không phải lúc nào cũng là câu trả lời cuối. Nếu cuộc gọi tool thuộc về một skill được quản trị, chế độ thực thi của skill được áp dụng chồng lên trên verdict thắng, sau khi phân giải match-đầu-tiên:| Chế độ skill | Hiệu ứng lên verdict thắng |
|---|---|
allow | Không đổi — verdict quy tắc đứng vững. |
quarantine | Leo thang bất cứ thứ gì chưa tới deny thành pending_approval; một deny hiện có được để nguyên. |
block | Ép một deny bất kể verdict quy tắc. |
quarantine có thể biến một allow của quy tắc thành một cuộc
gọi được giữ, và một skill block deny một cuộc gọi ngay cả khi không quy
tắc nào nêu tên các tool của nó. Quarantine chỉ leo thang — nó không bao giờ
hạ cấp một deny thành thứ mềm hơn. Đây là lý do tại sao một skill được tự-phát-
hiện là rủi ro ở lại cách ly cho đến khi bạn xem xét nó, bất kể các quy tắc của
bạn rộng rãi đến đâu.
5. Những thứ không đi theo match-đầu-tiên
Một vài cơ chế nằm ngoài lượt duyệt ưu tiên theo-từng-quy-tắc — biết chúng đáp xuống đâu để bạn không cố sắp thứ tự chúng:cap_cost — được phân giải, không xếp hạng
cap_cost — được phân giải, không xếp hạng
Một quy tắc
cap_cost dưới trần của nó
được xử lý như không-khớp, nên việc đánh giá tiếp tục đến quy tắc kế tiếp
thay vì để nó thắng match-đầu-tiên như một cấp phép. Trên trần nó phân giải
về một deny. Nó không bao giờ đoản mạch một quy tắc ưu-tiên-thấp-hơn chỉ
vì được tới.Chuỗi — phản ứng, không inline
Chuỗi — phản ứng, không inline
Một quy tắc chuỗi khớp một chuỗi
cuộc gọi qua một cửa sổ thời gian, nên nó được thực thi phản ứng bởi một bộ
khớp bất đồng bộ thay vì trên cuộc gọi đơn hoàn tất chuỗi. Nó làm sáng
events feed nhưng không thắng lượt match-đầu-tiên cho một cuộc gọi riêng lẻ.
Shadow mode — áp dụng sau verdict
Shadow mode — áp dụng sau verdict
Shadow mode không thay đổi quy tắc nào
thắng — nó hạ cấp verdict thực thi thắng thành
audit (lý do thêm tiền
tố [shadow] would …) sau khi phân giải match-đầu-tiên, nên bạn có thể đo
tác động của một chính sách trước khi nó thay đổi traffic.6. Ghép lại với nhau
Với bất kỳ cuộc gọi tool nào, phân giải đầy đủ là:- Phân giải chính sách — cái được gắn vào key đang gọi, hoặc mặc định workspace. Xem phạm vi.
- Duyệt các quy tắc theo
priority ASC, id ASC— match đầu tiên thắng; không match →default_verdict. - Áp dụng thực thi skill — chế độ của một skill được quản trị chồng lên
trên verdict thắng (
blockép deny,quarantineleo thang). - Áp dụng shadow mode — nếu bật, hạ cấp các verdict thực thi thành
audit. - Ghi event — verdict, bề mặt, tool, và quy tắc đã khớp đáp xuống events feed.
Chỉnh sửa ưu tiên của một quy tắc có hiệu lực trên cuộc gọi kế tiếp cho mọi
key được gắn vào chính sách — không redeploy, không đổi code agent. Chạy lại
sandbox Test sau khi sắp-lại-thứ-tự để xác
nhận người thắng mới trước khi traffic live phụ thuộc vào nó.
Đi đâu tiếp theo
Verdict
Mỗi verdict thắng thực sự làm gì.
Cú pháp glob
Cách khớp tên-tool quyết định liệu một quy tắc có là một ứng cử viên.
Test quy tắc
Chạy thử một chính sách và xem quy tắc nào thắng.
Allow-list tool
Mẫu default-deny dựa nhiều nhất vào việc sắp thứ tự.
