Chuyển đến nội dung chính

openclaw policy

openclaw policy được cung cấp bởi Plugin Policy đi kèm. Đây là một lớp tuân thủ dành cho doanh nghiệp nằm trên các cài đặt OpenClaw hiện có, không phải một hệ thống cấu hình thứ hai. Bạn soạn các yêu cầu trong policy.jsonc; OpenClaw quan sát không gian làm việc đang hoạt động làm bằng chứng; policy báo cáo sai lệch thông qua doctor --lint. Policy không thực thi các lệnh gọi công cụ hoặc viết lại hành vi runtime tại thời điểm yêu cầu, và không chứng thực các kho thông tin xác thực theo từng agent như auth-profiles.json. Policy kiểm tra các kênh đã cấu hình, máy chủ MCP, nhà cung cấp mô hình, trạng thái SSRF mạng, quyền truy cập đầu vào/kênh, mức độ phơi bày Gateway và trạng thái lệnh Node, các phép kiểm tra định tuyến thông điệp đã soạn, quyền truy cập không gian làm việc của agent, trạng thái sandbox, trạng thái xử lý dữ liệu, trạng thái nhà cung cấp bí mật/hồ sơ xác thực và siêu dữ liệu công cụ được quản trị (TOOLS.md). Hãy sử dụng khi một không gian làm việc cần một tuyên bố bền vững, có thể kiểm tra, chẳng hạn như “Không được bật Telegram” hoặc “các công cụ được quản trị phải khai báo siêu dữ liệu về rủi ro và chủ sở hữu”. Nếu chỉ cần hành vi cục bộ mà không cần chứng thực hoặc phát hiện sai lệch, cấu hình thông thường là đủ.

Bắt đầu nhanh

Plugin vẫn được bật ngay cả khi thiếu policy.jsonc, để doctor có thể báo cáo cấu phần bị thiếu thay vì âm thầm bỏ qua các bước kiểm tra. Hãy soạn policy.jsonc thủ công; tệp này không được tạo từ các cài đặt hiện tại. Mỗi phần cấp cao nhất là một không gian tên quy tắc: một bước kiểm tra chỉ chạy khi có một quy tắc cụ thể bên dưới phần đó (các phần hoặc khóa không được hỗ trợ sẽ thất bại với policy/policy-jsonc-invalid thay vì bị âm thầm bỏ qua). Ví dụ tối thiểu bao quát mọi phần được hỗ trợ:
Các lưu ý xuyên suốt không thể hiện rõ trong các bảng quy tắc bên dưới:
  • Việc bỏ qua gateway.bind trong khi từ chối liên kết không phải loopback có nghĩa là bạn chấp nhận giá trị mặc định của runtime; hãy đặt gateway.bind: "loopback" để tuân thủ nghiêm ngặt.
  • Đối với agent chỉ đọc, hãy đặt mode của sandbox thành all hoặc non-main trong phần mặc định/agent áp dụng và workspaceAccess thành none hoặc ro. Chế độ sandbox bị thiếu hoặc off không đáp ứng policy chỉ đọc.
  • agents.workspace.denyTools chấp nhận exec, process, write, edit, apply_patch. Các nhóm từ chối công cụ trong cấu hình group:fs (thay đổi tệp) và group:runtime (shell/tiến trình) đáp ứng trạng thái tương đương.
  • Các bước kiểm tra phê duyệt thực thi chỉ đọc cấu phần exec-approvals.json đang hoạt động khi có quy tắc execApprovals; cấu phần bị thiếu hoặc không hợp lệ là bằng chứng không thể quan sát, không phải một kết quả đạt giả lập.
  • Bằng chứng về bí mật và hồ sơ xác thực chỉ ghi lại trạng thái nhà cung cấp/nguồn và siêu dữ liệu SecretRef, không bao giờ ghi lại giá trị thô. Policy không đọc hoặc chứng thực các kho thông tin xác thực theo từng agent như auth-profiles.json.
  • Bằng chứng xử lý dữ liệu chỉ là trạng thái ở cấp cấu hình (chế độ che dữ liệu, nút bật/tắt thu thập từ xa, chế độ bảo trì phiên, cài đặt lập chỉ mục bản chép lời phiên). Nó không kiểm tra nhật ký, dữ liệu xuất thu thập từ xa, bản chép lời hoặc tệp bộ nhớ, và kết quả sạch không chứng minh rằng chúng không chứa dữ liệu cá nhân hoặc bí mật.
  • Các phép kiểm tra định tuyến tái sử dụng trình phân giải liên kết runtime của OpenClaw. Bằng chứng định tuyến chỉ ghi lại id phép kiểm tra, agent được phân giải, loại khớp và siêu dữ liệu liên kết đã được che. Nó không bao giờ ghi lại mã định danh của đối tác, tài khoản, guild, nhóm hoặc vai trò. Việc thêm một phần định tuyến chủ ý thay đổi các hàm băm policy và chứng thực; các policy không có định tuyến giữ nguyên hình dạng bằng chứng hiện có.

Tham chiếu quy tắc policy

Mỗi quy tắc bên dưới đều là tùy chọn; một bước kiểm tra chỉ chạy khi có quy tắc đó. Trạng thái quan sát được là cấu hình hoặc siêu dữ liệu không gian làm việc OpenClaw hiện có.

Lớp phủ theo phạm vi

Sử dụng scopes.<scopeName> khi các agent hoặc kênh cụ thể cần policy nghiêm ngặt hơn đường cơ sở cấp cao nhất. Tên phạm vi chỉ là một nhãn; việc khớp sử dụng bộ chọn bên trong phạm vi. Các lớp phủ mang tính bổ sung: quy tắc toàn cục vẫn chạy, và quy tắc theo phạm vi có thể thêm phát hiện riêng dựa trên cùng bằng chứng. Nếu một mục agentIds không có trong agents.list[], OpenClaw đánh giá quy tắc theo phạm vi dựa trên trạng thái toàn cục/mặc định được kế thừa cho id agent runtime đó thay vì bỏ qua.
Cùng một agent có thể xuất hiện trong nhiều phạm vi nếu mỗi phạm vi quản trị một trường khác nhau, như trên. Một trường theo phạm vi lặp lại cho cùng một agent phải nghiêm ngặt tương đương hoặc hơn; một khai báo trùng lặp yếu hơn sẽ bị từ chối (danh sách cho phép là tập con, danh sách từ chối là tập cha, các giá trị boolean bắt buộc là cố định). Các quy tắc trạng thái container (sandbox.containers.*) chỉ được kiểm tra dựa trên bằng chứng mà backend sandbox của agent được khớp có thể cung cấp. Nếu một backend không thể quan sát quy tắc bạn đã bật cho nó, policy sẽ báo cáo policy/sandbox-container-posture-unobservable thay vì đạt; hãy giới hạn quy tắc container trong phạm vi các nhóm agent sử dụng backend có thể cung cấp bằng chứng đó. ingress.session.requireDmScope cấp cao nhất vẫn mang tính toàn cục; session.dmScope không phải bằng chứng có thể quy cho kênh, vì vậy không thể đặt phạm vi bằng channelIds. Mọi phạm vi có trong policy.jsonc đều phải hợp lệ và có thể thực thi.

Kênh

Máy chủ MCP

Nhà cung cấp mô hình

Mạng

Định tuyến tin nhắn

ID đầu dò phải là duy nhất. Một tuyến hỗ trợ channel, accountId tùy chọn, peer, parentPeer, guildId, teamIdmemberRoleIds. Các loại đối tác là direct, groupchannel. matchedBy có thể chứa một hoặc nhiều loại khớp thời gian chạy, bao gồm binding.peer, binding.account, binding.channel hoặc default. Các kiểm tra định tuyến chỉ là kiểm tra tính tuân thủ. Chúng không thay đổi quá trình khởi động, phân phối tin nhắn, thứ tự ưu tiên liên kết hoặc hành vi dự phòng. Các phát hiện yêu cầu người vận hành review vì việc tự động thay đổi một liên kết có thể chuyển hướng tin nhắn riêng tư.

Quyền truy cập đầu vào và kênh

Gateway

gateway.nodes.denyCommands là quy tắc tập cha từ chối chính xác, phân biệt chữ hoa chữ thường. Sử dụng quy tắc này khi chính sách phải chứng minh rằng các lệnh Node đặc quyền được cấu hình OpenClaw từ chối rõ ràng. Một bản triển khai cố ý cho phép một lệnh Node đặc quyền nên cập nhật policy.jsonc sau khi review thay vì chỉ dựa vào gateway.nodes.allowCommands.

Không gian làm việc của tác tử

Trạng thái sandbox

Chính sách coi sandbox.mode bị thiếu là giá trị mặc định ngầm định off, vì vậy sandbox.requireMode báo cáo một sandbox mới hoặc chưa được cấu hình là nằm ngoài danh sách cho phép như ["all"].

Xử lý dữ liệu

Bí mật

Phê duyệt thực thi

Các kiểm tra phê duyệt thực thi đọc cấu phần runtime exec-approvals.json: mặc định là ~/.openclaw/exec-approvals.json, hoặc $OPENCLAW_STATE_DIR/exec-approvals.json khi đặt OPENCLAW_STATE_DIR. Các quy tắc trạng thái trong execApprovals.defaults.* hoặc execApprovals.agents.* yêu cầu bằng chứng cấu phần có thể đọc được; cấu phần bị thiếu hoặc không hợp lệ được báo cáo là bằng chứng không thể quan sát thay vì được cho qua theo nỗ lực tối đa. Sau khi có thể đọc, các trường bị bỏ qua kế thừa giá trị mặc định của runtime: defaults.security bị thiếu là full, và bảo mật tác tử bị thiếu kế thừa giá trị mặc định đó. Bằng chứng bao gồm defaults, agents.*, agents.*.allowlist[].pattern, argPattern tùy chọn, trạng thái autoAllowSkills có hiệu lực và nguồn mục nhập — không bao giờ bao gồm đường dẫn socket/token, commandText, lastUsedCommand, đường dẫn đã phân giải hoặc dấu thời gian. Ví dụ: yêu cầu cấu phần phê duyệt, từ chối các giá trị mặc định dễ dãi và chỉ cho phép trạng thái phê duyệt thực thi đã được review đối với các tác nhân được chọn.

Hồ sơ xác thực

Siêu dữ liệu công cụ

Trạng thái công cụ

Chạy kiểm tra

Chỉ chạy các kiểm tra chính sách trong quá trình biên soạn:
policy check chỉ chạy tập kiểm tra chính sách và xuất bằng chứng, phát hiện cùng các hàm băm chứng thực. Các phát hiện tương tự cũng xuất hiện trong openclaw doctor --lint khi Plugin Policy được bật. So sánh tệp chính sách của người vận hành với đường cơ sở đã biên soạn:
policy compare kiểm tra cú pháp tệp chính sách so với cú pháp tệp chính sách; lệnh này không kiểm tra trạng thái môi trường chạy, bằng chứng, thông tin xác thực hoặc bí mật. Lệnh sử dụng cùng siêu dữ liệu quy tắc chi phối các lớp phủ có phạm vi: danh sách cho phép phải giữ nguyên hoặc hẹp hơn, danh sách từ chối phải giữ nguyên hoặc rộng hơn, các giá trị boolean bắt buộc phải giữ nguyên giá trị, các chuỗi có thứ tự chỉ được chuyển về phía nghiêm ngặt hơn trong thứ tự đã cấu hình và các danh sách chính xác phải khớp. Đường cơ sở có thể là chính sách do tổ chức biên soạn; chính sách được kiểm tra có thể thêm các giá trị nghiêm ngặt hơn hoặc các quy tắc bổ sung. Một quy tắc cấp cao nhất được kiểm tra có thể đáp ứng một quy tắc đường cơ sở có phạm vi khi nó hạn chế tương đương hoặc nghiêm ngặt hơn. Tên phạm vi không cần khớp giữa các tệp; phép so sánh được lập khóa theo bộ chọn (agentIds/channelIds) và trường. Đối với các phép thăm dò định tuyến, mọi mã định danh phép thăm dò trong đường cơ sở phải được giữ lại với cùng tuyến và tác nhân dự kiến. Chính sách được kiểm tra có thể thêm phép thăm dò hoặc thu hẹp matchedBy, nhưng việc xóa một phép thăm dò, thay đổi tuyến hoặc tác nhân của nó hay mở rộng các loại khớp được chấp nhận đều làm chính sách yếu hơn. Kết quả so sánh sạch (--json):
Đầu ra policy check --json sạch bao gồm các hàm băm ổn định mà người vận hành hoặc người giám sát có thể ghi lại:

Cấu hình chính sách

Cấu hình chính sách nằm trong plugins.entries.policy.config.
Đặt plugins.entries.policy.config.enabled thành false để vô hiệu hóa các kiểm tra chính sách cho một không gian làm việc trong khi vẫn giữ Plugin được cài đặt.

Chấp nhận trạng thái chính sách

Ví dụ về đầu ra JSON:
attestation.policy.hash xác định cấu phần quy tắc đã được biên soạn. evidence ghi lại trạng thái OpenClaw quan sát được mà các bước kiểm tra sử dụng, và workspace.hash xác định tải trọng bằng chứng đó. findingsHash xác định chính xác tập hợp phát hiện. checkedAt ghi lại thời điểm chạy kiểm tra. attestationHash xác định tuyên bố ổn định (hàm băm chính sách, hàm băm bằng chứng, hàm băm phát hiện và trạng thái sạch/bẩn) và chủ ý loại trừ checkedAt, để cùng một trạng thái chính sách luôn tạo ra cùng một hàm băm chứng thực. Kết hợp lại, bốn giá trị này tạo thành bộ giá trị kiểm toán cho một lần kiểm tra chính sách. Nếu Gateway hoặc trình giám sát dùng chính sách để chặn, phê duyệt hoặc chú thích một hành động khi chạy, nó nên ghi lại hàm băm chứng thực từ lần kiểm tra sạch gần nhất. checkedAt vẫn nằm trong đầu ra JSON dành cho nhật ký kiểm toán nhưng không thuộc hàm băm ổn định. Vòng đời chấp nhận trạng thái chính sách:
  1. Biên soạn hoặc review policy.jsonc.
  2. Chạy openclaw policy check --json.
  3. Nếu sạch, ghi attestation.policy.hash dưới dạng expectedHash.
  4. Ghi attestation.attestationHash dưới dạng expectedAttestationHash.
  5. Chạy lại openclaw doctor --lint trong CI hoặc các cổng phát hành.
Nếu các quy tắc chính sách được chủ ý thay đổi, hãy cập nhật cả hai hàm băm đã chấp nhận từ một lần kiểm tra sạch. Nếu chỉ các cài đặt không gian làm việc thay đổi (chính sách giữ nguyên), thông thường chỉ expectedAttestationHash thay đổi. Việc bật hoặc nâng cấp các quy tắc agents.workspace sẽ thêm bằng chứng agentWorkspace vào hàm băm không gian làm việc và hàm băm chứng thực; hãy review bằng chứng mới và làm mới các hàm băm chứng thực đã chấp nhận sau khi bật. Việc bật hoặc nâng cấp các quy tắc về trạng thái công cụ cũng thêm bằng chứng toolPosture theo cách tương tự. openclaw policy watch chạy lại kiểm tra và báo cáo khi bằng chứng hiện tại không còn khớp với expectedAttestationHash:
Sử dụng --once trong CI hoặc các tập lệnh cần một lần đánh giá độ lệch duy nhất. Khi không có --once, theo mặc định lệnh sẽ thăm dò mỗi hai giây; sử dụng --interval-ms để thay đổi khoảng thời gian.

Các phát hiện

Một phát hiện có thể bao gồm cả target (đối tượng quan sát được trong không gian làm việc không tuân thủ) và requirement (quy tắc đã khai báo khiến nó trở thành một phát hiện). Hiện tại, cả hai đều là chuỗi địa chỉ oc://, nhưng tên trường mô tả vai trò trong chính sách thay vì định dạng địa chỉ. Ví dụ về các phát hiện:

Sửa chữa

doctor --lintpolicy check chỉ có quyền đọc. doctor --fix chỉ chỉnh sửa các cài đặt không gian làm việc do chính sách quản lý khi workspaceRepairs được bật rõ ràng; nếu không, các bước kiểm tra sẽ báo cáo nội dung mà chúng sẽ sửa chữa và giữ nguyên các cài đặt. Trong phiên bản này, chức năng sửa chữa có thể vô hiệu hóa các kênh bị channels.denyRules từ chối và áp dụng các biện pháp sửa chữa thu hẹp tự động được liệt kê dưới đây. Chỉ bật workspaceRepairs sau khi tệp chính sách đã được xem xét, vì một quy tắc hợp lệ có thể thay đổi cấu hình không gian làm việc:
  • đặt tools.elevated.enabled=false khi chính sách toàn cục cấm các công cụ có đặc quyền nâng cao
  • thêm các id công cụ bắt buộc từ chối còn thiếu vào tools.deny hoặc agents.list[].tools.deny khi chính sách yêu cầu từ chối các công cụ đó
  • đặt các tùy chọn gateway.controlUi.* không an toàn thành false
  • đặt gateway.mode=local khi chính sách từ chối chế độ Gateway từ xa
  • đặt các đường dẫn gateway.http.endpoints.*.enabled được báo cáo thành false khi chính sách từ chối các điểm cuối API HTTP của Gateway
  • đặt các đường dẫn groupPolicy tiếp nhận kênh được báo cáo thành allowlist khi chính sách từ chối tiếp nhận nhóm mở
  • đặt các đường dẫn requireMention tiếp nhận kênh được báo cáo thành true khi chính sách yêu cầu đề cập trong nhóm
  • đặt logging.redactSensitive=tools khi chính sách yêu cầu che thông tin nhạy cảm trong nhật ký
  • đặt diagnostics.otel.captureContent=false, hoặc diagnostics.otel.captureContent.enabled=false đối với các cài đặt thu thập dữ liệu đo từ xa ở dạng đối tượng, khi chính sách từ chối thu thập nội dung dữ liệu đo từ xa
Các biện pháp sửa chữa công cụ có đặc quyền nâng cao theo phạm vi chỉ có chức năng phát hiện. Các biện pháp sửa chữa xử lý dữ liệu theo phạm vi cũng bị bỏ qua khi phát hiện báo cáo cấu hình nhật ký hoặc dữ liệu đo từ xa dùng chung, vì việc thay đổi cài đặt dùng chung sẽ ảnh hưởng đến nhiều đối tượng hơn mục tiêu chính sách theo phạm vi. Các biện pháp sửa chữa bắt buộc từ chối theo phạm vi bị bỏ qua khi phát hiện báo cáo tools.deny gốc được kế thừa, vì việc thêm công cụ bắt buộc vào cấu hình gốc sẽ ảnh hưởng đến nhiều đối tượng hơn mục tiêu chính sách theo phạm vi. Các biện pháp sửa chữa bắt buộc từ chối cục bộ của tác tử có thể cập nhật đường dẫn agents.list[].tools.deny được báo cáo. Các biện pháp sửa chữa tiếp nhận kênh theo phạm vi bị bỏ qua khi phát hiện báo cáo channels.defaults.* được kế thừa, vì việc thay đổi giá trị mặc định dùng chung của kênh sẽ ảnh hưởng đến nhiều đối tượng hơn mục tiêu chính sách theo phạm vi. Các phát hiện về danh sách cho phép tìm nạp URL qua HTTP của Gateway vẫn cần được xử lý thủ công vì chức năng sửa chữa tự động không thể chọn đúng các giá trị danh sách cho phép URL điểm cuối. Các phát hiện về liên kết Gateway và lệnh Node vẫn yêu cầu xem xét. Khi policy/gateway-non-loopback-bind hoặc policy/gateway-node-command-denied có thể được ánh xạ tới một đường dẫn cấu hình, doctor --fix báo cáo thay đổi gateway.bind hoặc gateway.nodes.denyCommands được đề xuất dưới dạng hướng dẫn xem trước bị bỏ qua. Chức năng này không áp dụng thay đổi và phát hiện không được tính là đã sửa chữa cho đến khi người vận hành xem xét và cập nhật cấu hình hoặc chính sách.

Mã thoát

Liên quan