ในหน้านี้
ในหน้านี้
CLI commands
นโยบาย
openclaw policy
openclaw policy มาจาก Policy plugin ที่รวมมาให้ โดยเป็นชั้นการตรวจสอบความสอดคล้องระดับองค์กรที่ครอบทับการตั้งค่า OpenClaw ที่มีอยู่ ไม่ใช่ระบบการกำหนดค่าระบบที่สอง คุณเขียนข้อกำหนดไว้ใน policy.jsonc; OpenClaw สังเกต workspace ที่ใช้งานอยู่เพื่อใช้เป็นหลักฐาน; Policy รายงานความคลาดเคลื่อนผ่าน doctor --lint Policy ไม่ได้บังคับใช้การเรียกใช้เครื่องมือหรือเขียนพฤติกรรมรันไทม์ใหม่ในขณะประมวลผลคำขอ และไม่ได้รับรองที่เก็บข้อมูลประจำตัวของแต่ละ agent เช่น auth-profiles.json
Policy ตรวจสอบ channel ที่กำหนดค่าไว้, เซิร์ฟเวอร์ MCP, ผู้ให้บริการโมเดล, สถานะการป้องกัน SSRF ของเครือข่าย, การเข้าถึง ingress/channel, การเปิดเผย Gateway และสถานะคำสั่งของ Node, โพรบการกำหนดเส้นทางข้อความที่ผู้ใช้เขียนขึ้น, การเข้าถึง workspace ของ agent, สถานะ sandbox, สถานะการจัดการข้อมูล, สถานะผู้ให้บริการ secret/โปรไฟล์การยืนยันตัวตน และข้อมูลเมตาของเครื่องมือที่อยู่ภายใต้การกำกับดูแล (TOOLS.md) ใช้เมื่อ workspace ต้องการข้อความประกาศที่คงทนและตรวจสอบได้ เช่น "ต้องไม่เปิดใช้งาน Telegram" หรือ "เครื่องมือที่อยู่ภายใต้การกำกับดูแลต้องประกาศข้อมูลเมตาด้านความเสี่ยงและเจ้าของ" หากต้องการเพียงพฤติกรรมภายในเครื่องโดยไม่มีการรับรองหรือการตรวจจับความคลาดเคลื่อน การกำหนดค่าปกติก็เพียงพอ
เริ่มต้นอย่างรวดเร็ว
Plugin จะยังคงเปิดใช้งานแม้ไม่มี policy.jsonc เพื่อให้ doctor รายงานอาร์ติแฟกต์ที่ขาดหายไปแทนที่จะข้ามการตรวจสอบโดยไม่แจ้งให้ทราบ
เขียน policy.jsonc ด้วยตนเอง โดยไม่ได้สร้างขึ้นจากการตั้งค่าปัจจุบัน แต่ละส่วนระดับบนสุดคือเนมสเปซของกฎ: การตรวจสอบจะทำงานต่อเมื่อมีกฎที่เป็นรูปธรรมอยู่ภายใต้ส่วนนั้นเท่านั้น (ส่วนหรือคีย์ที่ไม่รองรับจะล้มเหลวเป็น policy/policy-jsonc-invalid แทนที่จะถูกละเว้นโดยไม่แจ้งให้ทราบ) ตัวอย่างขั้นต่ำที่ครอบคลุมทุกส่วนที่รองรับ:
หมายเหตุที่ครอบคลุมหลายส่วนซึ่งอาจไม่ชัดเจนจากตารางกฎด้านล่าง:
- การละเว้น
gateway.bindขณะปฏิเสธการ bind ที่ไม่ใช่ loopback หมายความว่าคุณยอมรับค่าเริ่มต้นของรันไทม์; ตั้งค่าgateway.bind: "loopback"เพื่อให้สอดคล้องอย่างเคร่งครัด - สำหรับ agent แบบอ่านอย่างเดียว ให้ตั้งค่า sandbox
modeเป็นallหรือnon-mainในค่าเริ่มต้น/agent ที่เกี่ยวข้อง และตั้งค่าworkspaceAccessเป็นnoneหรือroโหมด sandbox ที่ไม่มีค่าหรือเป็นoffไม่เป็นไปตามนโยบายแบบอ่านอย่างเดียว agents.workspace.denyToolsยอมรับexec,process,write,edit,apply_patchกลุ่มปฏิเสธเครื่องมือในการกำหนดค่าgroup:fs(การแก้ไขไฟล์) และgroup:runtime(shell/process) เป็นไปตามสถานะที่เทียบเท่ากัน- การตรวจสอบการอนุมัติการดำเนินการจะอ่านอาร์ติแฟกต์
exec-approvals.jsonที่ใช้งานอยู่ต่อเมื่อมีกฎexecApprovals; อาร์ติแฟกต์ที่ขาดหายไปหรือไม่ถูกต้องคือหลักฐานที่สังเกตไม่ได้ ไม่ใช่ผลผ่านที่สร้างขึ้น - หลักฐานของ secret และโปรไฟล์การยืนยันตัวตนจะบันทึกเฉพาะสถานะของผู้ให้บริการ/แหล่งที่มาและข้อมูลเมตา SecretRef เท่านั้น โดยไม่บันทึกค่าดิบ Policy ไม่อ่านหรือรับรองที่เก็บข้อมูลประจำตัวของแต่ละ agent เช่น
auth-profiles.json - หลักฐานการจัดการข้อมูลเป็นเพียงสถานะระดับการกำหนดค่าเท่านั้น (โหมดการปกปิดข้อมูล, สวิตช์การบันทึกข้อมูล telemetry, โหมดการบำรุงรักษาเซสชัน, การตั้งค่าการทำดัชนีทรานสคริปต์) โดยไม่ตรวจสอบบันทึก, ข้อมูลส่งออก telemetry, ทรานสคริปต์ หรือไฟล์หน่วยความจำ และผลลัพธ์ที่ไม่มีปัญหาไม่ได้พิสูจน์ว่าไม่มีข้อมูลส่วนบุคคลหรือ secret อยู่ในสิ่งเหล่านั้น
- โพรบการกำหนดเส้นทางใช้ตัวแก้ไข binding ของรันไทม์ OpenClaw ซ้ำ หลักฐานการกำหนดเส้นทางบันทึกเฉพาะรหัสโพรบ, agent ที่แก้ไขได้, ประเภทการจับคู่ และข้อมูลเมตา binding ที่ปกปิดแล้วเท่านั้น โดยจะไม่บันทึกตัวระบุ peer, account, guild, team หรือ role การเพิ่มส่วนการกำหนดเส้นทางจะเปลี่ยนแฮชนโยบายและการรับรองโดยเจตนา; นโยบายที่ไม่มีการกำหนดเส้นทางจะคงรูปแบบหลักฐานเดิมไว้
ข้อมูลอ้างอิงกฎ Policy
กฎทุกข้อด้านล่างเป็นตัวเลือก; การตรวจสอบจะทำงานต่อเมื่อมีกฎนั้นอยู่ สถานะที่สังเกตได้คือการกำหนดค่า OpenClaw หรือข้อมูลเมตาของ workspace ที่มีอยู่
โอเวอร์เลย์แบบกำหนดขอบเขต
ใช้ scopes.<scopeName> เมื่อ agent หรือ channel บางรายการต้องการนโยบายที่เข้มงวดกว่าค่าพื้นฐานระดับบนสุด ชื่อขอบเขตเป็นเพียงป้ายกำกับ; การจับคู่ใช้ตัวเลือกภายในขอบเขต โอเวอร์เลย์เป็นแบบเพิ่มเติม: กฎส่วนกลางยังคงทำงาน และกฎที่กำหนดขอบเขตสามารถเพิ่มผลการตรวจพบของตนเองต่อหลักฐานเดียวกันได้
| ตัวเลือก | ส่วนที่รองรับ | ใช้เมื่อ |
|---|---|---|
agentIds |
tools, agents.workspace, sandbox, dataHandling.memory, execApprovals |
agent รันไทม์อย่างน้อยหนึ่งรายการต้องการกฎที่เข้มงวดยิ่งขึ้น |
channelIds |
ingress.channels |
channel อย่างน้อยหนึ่งรายการต้องการกฎ ingress ที่เข้มงวดยิ่งขึ้น |
หากไม่มีรายการ agentIds อยู่ใน agents.list[] OpenClaw จะประเมินกฎที่กำหนดขอบเขตกับสถานะส่วนกลาง/ค่าเริ่มต้นที่สืบทอดมาสำหรับรหัส agent รันไทม์นั้นแทนที่จะข้ามไป
agent เดียวกันสามารถปรากฏในหลายขอบเขตได้ หากแต่ละขอบเขตกำกับดูแลฟิลด์ที่ต่างกันดังตัวอย่างข้างต้น ฟิลด์ที่กำหนดขอบเขตซ้ำสำหรับ agent เดียวกันต้องเข้มงวดเท่ากันหรือมากกว่า; การอ้างสิทธิ์ซ้ำที่อ่อนกว่าจะถูกปฏิเสธ (รายการอนุญาตต้องเป็นเซตย่อย, รายการปฏิเสธต้องเป็นเซตครอบ และค่าบูลีนที่กำหนดเป็นข้อบังคับจะคงที่)
กฎสถานะคอนเทนเนอร์ (sandbox.containers.*) จะตรวจสอบเฉพาะกับหลักฐานที่แบ็กเอนด์ sandbox ของ agent ที่ตรงกันสามารถเปิดเผยได้ หากแบ็กเอนด์ไม่สามารถสังเกตกฎที่คุณเปิดใช้งานสำหรับแบ็กเอนด์นั้น Policy จะรายงาน policy/sandbox-container-posture-unobservable แทนการให้ผลผ่าน; กำหนดขอบเขตกฎคอนเทนเนอร์ให้กับกลุ่ม agent ที่ใช้แบ็กเอนด์ซึ่งสามารถเปิดเผยหลักฐานดังกล่าวได้
ingress.session.requireDmScope ระดับบนสุดยังคงเป็นส่วนกลาง; session.dmScope ไม่ใช่หลักฐานที่ระบุแหล่งที่มาเป็น channel ได้ จึงไม่สามารถกำหนดขอบเขตด้วย channelIds
ทุกขอบเขตที่มีอยู่ใน policy.jsonc ต้องถูกต้องและบังคับใช้ได้
Channel
| ฟิลด์นโยบาย | สถานะที่สังเกตได้ | ใช้เมื่อ |
|---|---|---|
channels.denyRules[].when.provider |
ผู้ให้บริการและสถานะการเปิดใช้งานของ channels.* |
ปฏิเสธ channel ที่กำหนดค่าไว้จากผู้ให้บริการ เช่น telegram |
channels.denyRules[].reason |
ข้อความผลการตรวจพบและบริบทคำแนะนำการแก้ไข | อธิบายสาเหตุที่ผู้ให้บริการถูกปฏิเสธ |
เซิร์ฟเวอร์ MCP
| ฟิลด์นโยบาย | สถานะที่สังเกตได้ | ใช้เมื่อ |
|---|---|---|
mcp.servers.allow |
รหัส mcp.servers.* |
กำหนดให้เซิร์ฟเวอร์ MCP ที่กำหนดค่าไว้ทุกรายการต้องอยู่ในรายการอนุญาต |
mcp.servers.deny |
รหัส mcp.servers.* |
ปฏิเสธรหัสเซิร์ฟเวอร์ MCP ที่กำหนดค่าไว้โดยเฉพาะ |
ผู้ให้บริการโมเดล
| ฟิลด์นโยบาย | สถานะที่สังเกตได้ | ใช้เมื่อ |
|---|---|---|
models.providers.allow |
รหัส models.providers.* และการอ้างอิงโมเดลที่เลือก |
กำหนดให้ผู้ให้บริการที่กำหนดค่าไว้และการอ้างอิงโมเดลที่เลือกใช้เฉพาะผู้ให้บริการที่ได้รับอนุมัติ |
models.providers.deny |
รหัส models.providers.* และการอ้างอิงโมเดลที่เลือก |
ปฏิเสธผู้ให้บริการที่กำหนดค่าไว้และการอ้างอิงโมเดลที่เลือกตามรหัสผู้ให้บริการ |
เครือข่าย
| ฟิลด์นโยบาย | สถานะที่สังเกตได้ | ใช้เมื่อ |
|---|---|---|
network.privateNetwork.allow |
ช่องทางเลี่ยงการป้องกัน SSRF สำหรับเครือข่ายส่วนตัว | ตั้งเป็น false เพื่อกำหนดให้การเข้าถึงเครือข่ายส่วนตัวยังคงปิดใช้งานอยู่ |
การกำหนดเส้นทางข้อความ
| ฟิลด์นโยบาย | สถานะที่สังเกตได้ | ใช้เมื่อ |
|---|---|---|
routing.requireBindings |
การผูกเส้นทางช่องทาง โดยไม่รวมการผูก ACP | กำหนดให้มีการผูกสำหรับกำหนดเส้นทางข้อความอย่างน้อยหนึ่งรายการ |
routing.requireConfiguredChannels |
ID ช่องทางในการผูกและ ID channels.* ที่กำหนดค่าไว้ |
ตรวจหาค่า ID ช่องทางในการผูกที่ล้าสมัยหรือสะกดผิด |
routing.probes[].route |
ตัวแก้ไขเส้นทางสาธารณะของ OpenClaw | อธิบายเส้นทางขาเข้าที่เป็นตัวแทนโดยไม่ส่งข้อความ |
routing.probes[].expect.agentId |
ID เอเจนต์ที่แก้ไขได้ | กำหนดให้เส้นทางไปถึงเอเจนต์ที่ผ่านการตรวจสอบ |
routing.probes[].expect.matchedBy |
ชนิดการจับคู่ของตัวแก้ไขเส้นทาง | กำหนดความเฉพาะเจาะจงของการผูกที่ผ่านการตรวจสอบในระดับเพียร์ บัญชี ช่องทาง หรือชนิดอื่น |
ID โพรบต้องไม่ซ้ำกัน เส้นทางรองรับ channel, accountId ซึ่งเป็นตัวเลือก,
peer, parentPeer, guildId, teamId และ memberRoleIds ชนิดเพียร์ได้แก่
direct, group และ channel ส่วน matchedBy อาจมีชนิดการจับคู่ขณะรันไทม์
หนึ่งชนิดขึ้นไป รวมถึง binding.peer, binding.account, binding.channel
หรือ default
การตรวจสอบการกำหนดเส้นทางเป็นเพียงการตรวจสอบความสอดคล้องเท่านั้น โดยไม่เปลี่ยนแปลงการเริ่มทำงาน การส่งข้อความ ลำดับความสำคัญของการผูก หรือพฤติกรรมสำรอง ข้อค้นพบต้องได้รับ การตรวจสอบจากผู้ดำเนินการ เนื่องจากการเปลี่ยนการผูกโดยอัตโนมัติอาจเปลี่ยนเส้นทาง ของข้อความส่วนตัว
การรับข้อมูลขาเข้าและการเข้าถึงช่องทาง
| ฟิลด์นโยบาย | สถานะที่สังเกตได้ | ใช้เมื่อ |
|---|---|---|
ingress.session.requireDmScope |
session.dmScope |
กำหนดขอบเขตการแยกข้อความโดยตรงที่ผ่านการตรวจสอบ |
ingress.channels.allowDmPolicies |
channels.*.dmPolicy และฟิลด์นโยบาย DM แบบเดิมของช่องทาง |
อนุญาตเฉพาะนโยบายช่องทางข้อความโดยตรงที่ผ่านการตรวจสอบ |
ingress.channels.denyOpenGroups |
นโยบายการรับข้อมูลขาเข้าของช่องทาง บัญชี และกลุ่ม | ปฏิเสธการรับข้อมูลขาเข้าของกลุ่มแบบเปิดสำหรับช่องทางและบัญชีที่กำหนดค่าไว้ |
ingress.channels.requireMentionInGroups |
การกำหนดค่าเกตการกล่าวถึงของช่องทาง บัญชี กลุ่ม กิลด์ และระดับที่ซ้อนกัน | กำหนดให้ใช้เกตการกล่าวถึงเมื่อการรับข้อมูลขาเข้าของกลุ่มเป็นแบบเปิดหรือมีเกตการกล่าวถึง |
Gateway
| ฟิลด์นโยบาย | สถานะที่สังเกตได้ | ใช้เมื่อ |
|---|---|---|
gateway.exposure.allowNonLoopbackBind |
gateway.bind |
ตั้งเป็น false เพื่อกำหนดให้ Gateway ผูกกับลูปแบ็ก |
gateway.exposure.allowTailscaleFunnel |
สถานะการให้บริการ/ฟันเนลของ Gateway ผ่าน Tailscale | ตั้งเป็น false เพื่อปฏิเสธการเปิดเผยผ่าน Tailscale Funnel |
gateway.auth.requireAuth |
gateway.auth.mode |
ตั้งเป็น true เพื่อปฏิเสธการปิดใช้งานการยืนยันตัวตนของ Gateway |
gateway.auth.requireExplicitRateLimit |
gateway.auth.rateLimit |
ตั้งเป็น true เพื่อกำหนดให้ระบุการกำหนดค่าขีดจำกัดอัตราสำหรับการยืนยันตัวตนอย่างชัดเจน |
gateway.controlUi.allowInsecure |
ตัวเลือกเปิด/ปิดการยืนยันตัวตน อุปกรณ์ หรือต้นทางที่ไม่ปลอดภัยของ Control UI | ตั้งเป็น false เพื่อปฏิเสธตัวเลือกเปิด/ปิดที่ทำให้ Control UI เปิดเผยอย่างไม่ปลอดภัย |
gateway.remote.allow |
โหมด/การกำหนดค่า Gateway ระยะไกล | ตั้งเป็น false เพื่อปฏิเสธโหมด Gateway ระยะไกล |
gateway.http.denyEndpoints |
เอนด์พอยต์ HTTP API ของ Gateway | ปฏิเสธ ID เอนด์พอยต์ เช่น chatCompletions หรือ responses |
gateway.http.requireUrlAllowlists |
อินพุตการดึงข้อมูลจาก URL ผ่าน HTTP ของ Gateway | ตั้งเป็น true เพื่อกำหนดให้มีรายการอนุญาต URL สำหรับอินพุตการดึงข้อมูลจาก URL |
gateway.nodes.denyCommands |
gateway.nodes.denyCommands |
กำหนดให้ ID คำสั่ง Node แบบตรงกันทุกตัวอักษร เช่น system.run ถูกปฏิเสธในการกำหนดค่า OpenClaw |
gateway.nodes.denyCommands เป็นกฎเซตครอบคลุมของรายการปฏิเสธที่ต้องตรงกันทุกตัวอักษรและคำนึงถึงตัวพิมพ์เล็กใหญ่
ใช้เมื่อจำเป็นต้องใช้นโยบายพิสูจน์ว่าคำสั่ง Node ที่มีสิทธิ์พิเศษถูกปฏิเสธอย่างชัดเจน
โดยการกำหนดค่า OpenClaw การติดตั้งใช้งานที่ตั้งใจอนุญาตคำสั่ง Node ที่มีสิทธิ์พิเศษ
ควรอัปเดต policy.jsonc หลังการตรวจสอบ แทนการพึ่งพาเพียง
gateway.nodes.allowCommands
พื้นที่ทำงานของเอเจนต์
| ฟิลด์นโยบาย | สถานะที่สังเกตได้ | ใช้เมื่อ |
|---|---|---|
agents.workspace.allowedAccess |
agents.defaults.sandbox.workspaceAccess และ agents.list[].sandbox.workspaceAccess |
อนุญาตเฉพาะค่าการเข้าถึงพื้นที่ทำงานของแซนด์บ็อกซ์ เช่น none หรือ ro |
agents.workspace.denyTools |
การกำหนดค่าปฏิเสธเครื่องมือส่วนกลางและรายเอเจนต์ | กำหนดให้ปฏิเสธเครื่องมือที่แก้ไขข้อมูล (exec, process, write, edit, apply_patch) |
สถานะของแซนด์บ็อกซ์
| ฟิลด์นโยบาย | สถานะที่สังเกตได้ | ใช้เมื่อ |
|---|---|---|
sandbox.requireMode |
agents.defaults.sandbox.mode และโหมดรายเอเจนต์ |
อนุญาตเฉพาะโหมดแซนด์บ็อกซ์ที่ผ่านการตรวจสอบ เช่น all หรือ non-main |
sandbox.allowBackends |
agents.defaults.sandbox.backend และแบ็กเอนด์รายเอเจนต์ |
อนุญาตเฉพาะแบ็กเอนด์แซนด์บ็อกซ์ที่ผ่านการตรวจสอบ เช่น docker |
sandbox.containers.denyHostNetwork |
โหมดเครือข่ายของแซนด์บ็อกซ์/เบราว์เซอร์ที่ใช้คอนเทนเนอร์ | ปฏิเสธโหมดเครือข่ายโฮสต์ |
sandbox.containers.denyContainerNamespaceJoin |
โหมดเครือข่ายของแซนด์บ็อกซ์/เบราว์เซอร์ที่ใช้คอนเทนเนอร์ | ปฏิเสธการเข้าร่วมเนมสเปซเครือข่ายของคอนเทนเนอร์อื่น |
sandbox.containers.requireReadOnlyMounts |
โหมดการเมานต์ของแซนด์บ็อกซ์/เบราว์เซอร์ที่ใช้คอนเทนเนอร์ | กำหนดให้การเมานต์เป็นแบบอ่านอย่างเดียว |
sandbox.containers.denyContainerRuntimeSocketMounts |
เป้าหมายการเมานต์ของแซนด์บ็อกซ์/เบราว์เซอร์ที่ใช้คอนเทนเนอร์ | ปฏิเสธการเมานต์ซ็อกเก็ตรันไทม์ของคอนเทนเนอร์ |
sandbox.containers.denyUnconfinedProfiles |
สถานะโปรไฟล์ความปลอดภัยของคอนเทนเนอร์ | ปฏิเสธโปรไฟล์ความปลอดภัยของคอนเทนเนอร์ที่ไม่มีข้อจำกัด |
sandbox.browser.requireCdpSourceRange |
ช่วงต้นทาง CDP ของเบราว์เซอร์ในแซนด์บ็อกซ์ | กำหนดให้การเปิดเผย CDP ของเบราว์เซอร์ประกาศช่วงต้นทาง |
นโยบายถือว่า sandbox.mode ที่ไม่มีการระบุค่าใช้ค่าเริ่มต้นโดยนัยคือ off ดังนั้น
sandbox.requireMode จึงรายงานว่าแซนด์บ็อกซ์ใหม่หรือยังไม่ได้กำหนดค่าอยู่นอก
รายการอนุญาต เช่น ["all"]
การจัดการข้อมูล
| ฟิลด์นโยบาย | สถานะที่สังเกตได้ | ใช้เมื่อ |
|---|---|---|
dataHandling.sensitiveLogging.requireRedaction |
logging.redactSensitive |
ตั้งเป็น true เพื่อปฏิเสธ logging.redactSensitive: "off" |
dataHandling.telemetry.denyContentCapture |
diagnostics.otel.captureContent |
ตั้งเป็น true เพื่อปฏิเสธการบันทึกเนื้อหาเทเลเมทรี |
dataHandling.retention.requireSessionMaintenance |
session.maintenance.mode |
ตั้งเป็น true เพื่อกำหนดให้โหมดบำรุงรักษาเซสชันที่มีผลเป็น enforce |
dataHandling.memory.denySessionTranscriptIndexing |
memory.qmd.sessions.enabled และ agents.*.memorySearch.experimental.sessionMemory |
ตั้งเป็น true เพื่อปฏิเสธการทำดัชนีบันทึกถอดความเซสชันลงในหน่วยความจำ |
ข้อมูลลับ
| ฟิลด์นโยบาย | สถานะที่สังเกตได้ | ใช้เมื่อ |
|---|---|---|
secrets.requireManagedProviders |
SecretRef ในการกำหนดค่าและการประกาศ secrets.providers.* |
ตั้งเป็น true เพื่อกำหนดให้ SecretRef ชี้ไปยังผู้ให้บริการที่ประกาศไว้ |
secrets.denySources |
แหล่งที่มาของผู้ให้บริการข้อมูลลับและแหล่งที่มาของ SecretRef | ปฏิเสธแหล่งที่มา เช่น exec, file หรือชื่อแหล่งที่มาอื่นที่กำหนดค่าไว้ |
secrets.allowInsecureProviders |
แฟล็กสถานะผู้ให้บริการข้อมูลลับที่ไม่ปลอดภัย | ตั้งเป็น false เพื่อปฏิเสธผู้ให้บริการที่เลือกใช้สถานะไม่ปลอดภัย |
การอนุมัติ Exec
การตรวจสอบการอนุมัติ Exec อ่านอาร์ติแฟกต์ exec-approvals.json ขณะรันไทม์:
ค่าเริ่มต้นคือ ~/.openclaw/exec-approvals.json หรือ
$OPENCLAW_STATE_DIR/exec-approvals.json เมื่อตั้งค่า OPENCLAW_STATE_DIR
กฎสถานะภายใต้ execApprovals.defaults.* หรือ execApprovals.agents.*
กำหนดให้มีหลักฐานอาร์ติแฟกต์ที่อ่านได้ อาร์ติแฟกต์ที่ไม่มีหรือไม่ถูกต้องจะถูกรายงานเป็น
หลักฐานที่สังเกตไม่ได้ แทนที่จะถือว่าผ่านตามความพยายามสูงสุด เมื่ออ่านได้แล้ว ฟิลด์ที่ละไว้
จะสืบทอดค่าเริ่มต้นขณะรันไทม์: defaults.security ที่ไม่มีการระบุค่าคือ full และ
การรักษาความปลอดภัยของเอเจนต์ที่ไม่มีการระบุค่าจะสืบทอดค่าเริ่มต้นนั้น หลักฐานประกอบด้วย defaults,
agents.*, agents.*.allowlist[].pattern, argPattern ซึ่งเป็นตัวเลือก, สถานะ
autoAllowSkills ที่มีผล และแหล่งที่มาของรายการ โดยจะไม่รวมพาธซ็อกเก็ต/โทเค็น,
commandText, lastUsedCommand, พาธที่แก้ไขแล้ว หรือการประทับเวลา
| ฟิลด์นโยบาย | สถานะที่สังเกตได้ | ใช้เมื่อ |
|---|---|---|
execApprovals.requireFile |
พาธ exec-approvals.json ของรันไทม์ที่ใช้งานอยู่ |
ตั้งเป็น true เพื่อกำหนดให้อาร์ติแฟกต์การอนุมัติต้องมีอยู่และแยกวิเคราะห์ได้ |
execApprovals.defaults.allowSecurity |
defaults.security โดยมีค่าเริ่มต้นเป็น full |
อนุญาตเฉพาะโหมดความปลอดภัยเริ่มต้นสำหรับการอนุมัติที่ได้รับอนุมัติแล้ว |
execApprovals.agents.allowSecurity |
agents.*.security โดยสืบทอดค่าเริ่มต้น |
อนุญาตเฉพาะโหมดความปลอดภัยที่มีผลสำหรับการอนุมัติรายเอเจนต์ซึ่งได้รับอนุมัติแล้ว |
execApprovals.agents.allowAutoAllowSkills |
defaults.autoAllowSkills และ agents.*.autoAllowSkills โดยสืบทอดค่าเริ่มต้นของรันไทม์ |
ตั้งเป็น false เพื่อกำหนดให้ใช้รายการอนุญาตแบบกำหนดเองที่เข้มงวด โดยไม่มีการอนุมัติ CLI ของ Skills โดยปริยาย |
execApprovals.agents.allowlist.expected |
รูปแบบ agents.*.allowlist[] แบบรวมและรายการ argPattern ที่ไม่บังคับ |
กำหนดให้รายการอนุญาตสำหรับการอนุมัติตรงกับชุดรูปแบบที่ผ่านการรีวิว |
ตัวอย่าง: กำหนดให้มีอาร์ติแฟกต์การอนุมัติ ปฏิเสธค่าเริ่มต้นที่ผ่อนปรน และอนุญาต เฉพาะสถานะการอนุมัติ exec ที่ผ่านการรีวิวสำหรับเอเจนต์ที่เลือก
โปรไฟล์การรับรองความถูกต้อง
| ฟิลด์นโยบาย | สถานะที่สังเกตได้ | ใช้เมื่อ |
|---|---|---|
auth.profiles.requireMetadata |
ข้อมูลเมตาผู้ให้บริการและโหมดของ auth.profiles.* |
กำหนดให้โปรไฟล์การรับรองความถูกต้องในการกำหนดค่ามีคีย์ข้อมูลเมตา เช่น provider และ mode |
auth.profiles.allowModes |
auth.profiles.*.mode |
อนุญาตเฉพาะโหมดโปรไฟล์การรับรองความถูกต้องที่รองรับ เช่น api_key, aws-sdk, oauth หรือ token |
ข้อมูลเมตาของเครื่องมือ
| ฟิลด์นโยบาย | สถานะที่สังเกตได้ | ใช้เมื่อ |
|---|---|---|
tools.requireMetadata |
การประกาศ TOOLS.md ที่อยู่ภายใต้การกำกับดูแล |
กำหนดให้เครื่องมือที่อยู่ภายใต้การกำกับดูแลประกาศคีย์ข้อมูลเมตา เช่น risk, sensitivity หรือ owner |
สถานะของเครื่องมือ
| ฟิลด์นโยบาย | สถานะที่สังเกตได้ | ใช้เมื่อ |
|---|---|---|
tools.profiles.allow |
tools.profile และ agents.list[].tools.profile |
อนุญาตเฉพาะรหัสโปรไฟล์เครื่องมือ เช่น minimal, messaging หรือ coding |
tools.fs.requireWorkspaceOnly |
tools.fs.workspaceOnly และการแทนที่ tools.fs รายเอเจนต์ |
ตั้งเป็น true เพื่อกำหนดให้สถานะเครื่องมือระบบไฟล์จำกัดเฉพาะเวิร์กสเปซ |
tools.exec.allowSecurity |
tools.exec.security และความปลอดภัย exec รายเอเจนต์ |
อนุญาตเฉพาะโหมดความปลอดภัย exec เช่น deny หรือ allowlist |
tools.exec.requireAsk |
tools.exec.ask และโหมดถามสำหรับ exec รายเอเจนต์ |
กำหนดให้ใช้สถานะการอนุมัติ เช่น always |
tools.exec.allowHosts |
tools.exec.host และการกำหนดเส้นทางโฮสต์ exec รายเอเจนต์ |
อนุญาตเฉพาะโหมดการกำหนดเส้นทางโฮสต์ exec เช่น sandbox |
tools.elevated.allow |
tools.elevated.enabled และสถานะยกระดับรายเอเจนต์ |
ตั้งเป็น false เพื่อกำหนดให้โหมดเครื่องมือยกระดับยังคงปิดใช้งาน |
tools.alsoAllow.expected |
tools.alsoAllow และ tools.alsoAllow รายเอเจนต์ |
กำหนดให้มีรายการ alsoAllow ที่ตรงกันทุกประการ และรายงานสิทธิ์เครื่องมือเพิ่มเติมที่ขาดหายหรือไม่คาดคิด |
tools.denyTools |
tools.deny และ agents.list[].tools.deny |
กำหนดให้รายการปฏิเสธเครื่องมือที่กำหนดค่าไว้มีรหัสหรือกลุ่มเครื่องมือ เช่น group:runtime และ group:fs |
เรียกใช้การตรวจสอบ
เรียกใช้เฉพาะการตรวจสอบนโยบายระหว่างการเขียน:
policy check เรียกใช้เฉพาะชุดการตรวจสอบนโยบาย และส่งออกหลักฐาน ข้อค้นพบ
และแฮชการรับรอง ข้อค้นพบเดียวกันยังปรากฏใน
openclaw doctor --lint เมื่อเปิดใช้งาน Plugin นโยบาย
เปรียบเทียบไฟล์นโยบายของผู้ดำเนินการกับค่าฐานที่เขียนไว้:
policy compare ตรวจสอบไวยากรณ์ของไฟล์นโยบายเทียบกับไวยากรณ์ของไฟล์นโยบาย โดย
ไม่ตรวจสอบสถานะรันไทม์ หลักฐาน ข้อมูลประจำตัว หรือข้อมูลลับ คำสั่งนี้ใช้
ข้อมูลเมตาของกฎชุดเดียวกับที่กำกับดูแลโอเวอร์เลย์ตามขอบเขต: รายการอนุญาตต้องเท่าเดิมหรือ
แคบลง รายการปฏิเสธต้องเท่าเดิมหรือกว้างขึ้น ค่าบูลีนที่จำเป็นต้องคง
ค่าเดิม สตริงที่มีลำดับสามารถเปลี่ยนไปยังด้านที่เข้มงวดกว่าของ
ลำดับที่กำหนดค่าไว้เท่านั้น และรายการแบบตรงกันทุกประการต้องตรงกัน ค่าฐานอาจเป็น
นโยบายที่องค์กรเขียนขึ้น ส่วนนโยบายที่ตรวจสอบอาจเพิ่มค่าที่เข้มงวดขึ้นหรือ
กฎเพิ่มเติมได้ กฎระดับบนสุดที่ตรวจสอบสามารถทำให้กฎค่าฐานตามขอบเขตเป็นไปตามข้อกำหนดได้ เมื่อ
มีข้อจำกัดเท่ากันหรือมากกว่า ชื่อขอบเขตระหว่างไฟล์ไม่จำเป็นต้องตรงกัน
การเปรียบเทียบใช้ตัวเลือก (agentIds/channelIds) และฟิลด์เป็นคีย์
สำหรับโพรบการกำหนดเส้นทาง รหัสโพรบทุกตัวในค่าฐานต้องคงอยู่พร้อมเส้นทาง
และเอเจนต์ที่คาดไว้เดิม นโยบายที่ตรวจสอบอาจเพิ่มโพรบหรือทำให้ matchedBy แคบลง แต่
การนำโพรบออก การเปลี่ยนเส้นทางหรือเอเจนต์ของโพรบ หรือการขยายชนิดการจับคู่ที่ยอมรับ
ถือว่าอ่อนแอกว่า
ผลการเปรียบเทียบที่ผ่าน (--json):
เอาต์พุต policy check --json ที่ผ่านจะมีแฮชที่คงที่ซึ่งผู้ดำเนินการหรือ
ผู้ควบคุมสามารถบันทึกได้:
กำหนดค่านโยบาย
การกำหนดค่านโยบายอยู่ภายใต้ plugins.entries.policy.config
| การตั้งค่า | วัตถุประสงค์ |
|---|---|
enabled |
เปิดใช้การตรวจสอบนโยบายแม้ก่อนที่ policy.jsonc จะมีอยู่ |
workspaceRepairs |
อนุญาตให้ doctor --fix แก้ไขการตั้งค่าเวิร์กสเปซที่นโยบายจัดการ |
expectedHash |
การล็อกด้วยแฮชแบบไม่บังคับสำหรับอาร์ติแฟกต์นโยบายที่ได้รับอนุมัติ |
expectedAttestationHash |
การล็อกด้วยแฮชแบบไม่บังคับสำหรับการตรวจสอบนโยบายที่ผ่านและยอมรับล่าสุด |
path |
ตำแหน่งของอาร์ติแฟกต์นโยบายแบบสัมพัทธ์กับเวิร์กสเปซ |
ตั้ง plugins.entries.policy.config.enabled เป็น false เพื่อปิดใช้งานการตรวจสอบ
นโยบายสำหรับเวิร์กสเปซ โดยยังคงติดตั้ง Plugin ไว้
ยอมรับสถานะนโยบาย
ตัวอย่างเอาต์พุต JSON:
attestation.policy.hash ระบุอาร์ติแฟกต์กฎที่เขียนขึ้น evidence
บันทึกสถานะ OpenClaw ที่ตรวจพบซึ่งการตรวจสอบใช้ และ
workspace.hash ระบุเพย์โหลดหลักฐานนั้น findingsHash ระบุ
ชุดผลการตรวจสอบที่แน่นอน checkedAt บันทึกเวลาที่ดำเนินการตรวจสอบ
attestationHash ระบุข้ออ้างที่คงที่ (แฮชนโยบาย แฮชหลักฐาน
แฮชผลการตรวจสอบ และสถานะสะอาด/ไม่สะอาด) และจงใจไม่รวม checkedAt
เพื่อให้สถานะนโยบายเดียวกันสร้างแฮชการรับรองเดียวกันเสมอ เมื่อรวมกัน
ค่าทั้งสี่นี้จะเป็นทูเพิลการตรวจสอบสำหรับการตรวจสอบนโยบายหนึ่งครั้ง
หาก Gateway หรือซูเปอร์ไวเซอร์ใช้นโยบายเพื่อบล็อก อนุมัติ หรือใส่หมายเหตุให้
การดำเนินการขณะรัน ควรบันทึกแฮชการรับรองจากการตรวจสอบที่สะอาดครั้งล่าสุด
checkedAt ยังคงอยู่ในเอาต์พุต JSON สำหรับบันทึกการตรวจสอบ แต่ไม่ได้เป็นส่วนหนึ่งของ
แฮชที่คงที่
วงจรชีวิตสำหรับการยอมรับสถานะนโยบาย:
- เขียนหรือรีวิว
policy.jsonc - เรียกใช้
openclaw policy check --json - หากสะอาด ให้บันทึก
attestation.policy.hashเป็นexpectedHash - บันทึก
attestation.attestationHashเป็นexpectedAttestationHash - เรียกใช้
openclaw doctor --lintซ้ำใน CI หรือเกตการเผยแพร่
หากกฎนโยบายเปลี่ยนโดยตั้งใจ ให้อัปเดตแฮชที่ยอมรับทั้งสองค่าจาก
การตรวจสอบที่สะอาด หากเปลี่ยนเฉพาะการตั้งค่าเวิร์กสเปซ (นโยบายยังคงเดิม)
โดยทั่วไปจะเปลี่ยนเฉพาะ expectedAttestationHash
การเปิดใช้หรืออัปเกรดกฎ agents.workspace จะเพิ่มหลักฐาน agentWorkspace
ลงในแฮชเวิร์กสเปซและแฮชการรับรอง ให้รีวิวหลักฐานใหม่และ
รีเฟรชแฮชการรับรองที่ยอมรับหลังจากเปิดใช้ การเปิดใช้หรืออัปเกรด
กฎสถานะความปลอดภัยของเครื่องมือจะเพิ่มหลักฐาน toolPosture ในลักษณะเดียวกัน
openclaw policy watch เรียกใช้การตรวจสอบซ้ำและรายงานเมื่อหลักฐานปัจจุบัน
ไม่ตรงกับ expectedAttestationHash อีกต่อไป:
ใช้ --once ใน CI หรือสคริปต์ที่ต้องการประเมินการเบี่ยงเบนเพียงครั้งเดียว หากไม่มี
--once ระบบจะสำรวจทุกสองวินาทีโดยค่าเริ่มต้น ใช้ --interval-ms เพื่อเปลี่ยน
ช่วงเวลา
ผลการตรวจสอบ
| รหัสการตรวจสอบ | ข้อค้นพบ |
|---|---|
policy/policy-jsonc-missing |
เปิดใช้นโยบายแล้ว แต่ไม่มี policy.jsonc |
policy/policy-jsonc-invalid |
ไม่สามารถแยกวิเคราะห์นโยบายได้ หรือมีรายการกฎที่มีรูปแบบไม่ถูกต้อง |
policy/policy-hash-mismatch |
นโยบายไม่ตรงกับ expectedHash ที่กำหนดค่าไว้ |
policy/attestation-hash-mismatch |
หลักฐานนโยบายปัจจุบันไม่ตรงกับการรับรองที่ยอมรับอีกต่อไป |
policy/policy-conformance-invalid |
ไฟล์นโยบายพื้นฐานหรือไฟล์นโยบายที่ตรวจสอบมีไวยากรณ์การเปรียบเทียบที่ไม่ถูกต้อง |
policy/policy-conformance-missing |
ไฟล์นโยบายที่ตรวจสอบไม่มีกฎที่ไฟล์นโยบายพื้นฐานกำหนดให้ต้องมี |
policy/policy-conformance-weaker |
ไฟล์นโยบายที่ตรวจสอบมีค่าที่อ่อนกว่าค่าในไฟล์นโยบายพื้นฐาน |
policy/channels-denied-provider |
ช่องทางที่เปิดใช้งานตรงกับกฎปฏิเสธช่องทาง |
policy/mcp-denied-server |
เซิร์ฟเวอร์ MCP ที่กำหนดค่าไว้ถูกนโยบายปฏิเสธ |
policy/mcp-unapproved-server |
เซิร์ฟเวอร์ MCP ที่กำหนดค่าไว้อยู่นอกรายการอนุญาต |
policy/models-denied-provider |
ผู้ให้บริการโมเดลหรือการอ้างอิงโมเดลที่กำหนดค่าไว้ใช้ผู้ให้บริการที่ถูกปฏิเสธ |
policy/models-unapproved-provider |
ผู้ให้บริการโมเดลหรือการอ้างอิงโมเดลที่กำหนดค่าไว้อยู่นอกรายการอนุญาต |
policy/network-private-access-enabled |
เปิดใช้งานช่องทางหลีกเลี่ยง SSRF สำหรับเครือข่ายส่วนตัว ทั้งที่นโยบายปฏิเสธ |
policy/routing-bindings-required |
นโยบายกำหนดให้ต้องมีการผูกเส้นทางช่องทาง แต่ยังไม่ได้กำหนดค่าไว้ |
policy/routing-binding-channel-unconfigured |
การผูกเส้นทางระบุชื่อช่องทางที่ไม่มีอยู่ใน channels.* |
policy/routing-agent-mismatch |
เส้นทางที่เขียนไว้ได้รับการแก้ไขไปยังเอเจนต์อื่น |
policy/routing-match-kind-mismatch |
เส้นทางที่เขียนไว้ตรงกันด้วยระดับความจำเพาะของการผูกที่ไม่คาดคิด |
policy/ingress-dm-policy-unapproved |
นโยบาย DM ของช่องทางอยู่นอกรายการอนุญาตของนโยบาย |
policy/ingress-dm-scope-unapproved |
session.dmScope ไม่ตรงกับขอบเขตการแยก DM ที่นโยบายกำหนด |
policy/ingress-open-groups-denied |
นโยบายกลุ่มของช่องทางเป็น open ทั้งที่นโยบายปฏิเสธการรับข้อมูลเข้าจากกลุ่มแบบเปิด |
policy/ingress-group-mention-required |
รายการช่องทางหรือกลุ่มปิดใช้งานเกตการกล่าวถึง ทั้งที่นโยบายกำหนดให้ต้องใช้ |
policy/gateway-non-loopback-bind |
รูปแบบการผูกของ Gateway อนุญาตให้เปิดเผยนอก loopback ทั้งที่นโยบายปฏิเสธ |
policy/gateway-auth-disabled |
ปิดใช้งานการยืนยันตัวตนของ Gateway ทั้งที่นโยบายกำหนดให้ต้องใช้การยืนยันตัวตน |
policy/gateway-rate-limit-missing |
ไม่ได้ระบุรูปแบบการจำกัดอัตราการยืนยันตัวตนของ Gateway อย่างชัดเจน ทั้งที่นโยบายกำหนดให้ต้องระบุ |
policy/gateway-control-ui-insecure |
เปิดใช้งานตัวเลือกการเปิดเผย Gateway Control UI ที่ไม่ปลอดภัย |
policy/gateway-tailscale-funnel |
เปิดใช้งานการเปิดเผย Gateway ผ่าน Tailscale Funnel ทั้งที่นโยบายปฏิเสธ |
policy/gateway-remote-enabled |
โหมดระยะไกลของ Gateway ทำงานอยู่ ทั้งที่นโยบายปฏิเสธ |
policy/gateway-http-endpoint-enabled |
เปิดใช้งานปลายทาง HTTP API ของ Gateway ทั้งที่นโยบายปฏิเสธ |
policy/gateway-http-url-fetch-unrestricted |
อินพุตดึงข้อมูล URL ผ่าน HTTP ของ Gateway ไม่มีรายการอนุญาต URL ที่จำเป็น |
policy/gateway-node-command-denied |
คำสั่ง Node ที่นโยบายปฏิเสธไม่ได้ถูกปฏิเสธโดยการกำหนดค่า OpenClaw |
policy/agents-workspace-access-denied |
โหมดแซนด์บ็อกซ์ของเอเจนต์หรือการเข้าถึงพื้นที่ทำงานอยู่นอกรายการอนุญาตของนโยบาย |
policy/agents-tool-not-denied |
การกำหนดค่าเอเจนต์หรือค่าเริ่มต้นไม่ได้ปฏิเสธเครื่องมือที่นโยบายกำหนดให้ต้องปฏิเสธ |
policy/tools-profile-unapproved |
โปรไฟล์เครื่องมือแบบส่วนกลางหรือรายเอเจนต์ที่กำหนดค่าไว้อยู่นอกรายการอนุญาต |
policy/tools-fs-workspace-only-required |
เครื่องมือระบบไฟล์ไม่ได้กำหนดค่ารูปแบบพาธให้จำกัดเฉพาะพื้นที่ทำงาน |
policy/tools-exec-security-unapproved |
โหมดความปลอดภัยของการดำเนินการอยู่นอกรายการอนุญาตของนโยบาย |
policy/tools-exec-ask-unapproved |
โหมดการถามก่อนดำเนินการอยู่นอกรายการอนุญาตของนโยบาย |
policy/tools-exec-host-unapproved |
การกำหนดเส้นทางโฮสต์สำหรับการดำเนินการอยู่นอกรายการอนุญาตของนโยบาย |
policy/tools-elevated-enabled |
เปิดใช้งานโหมดเครื่องมือแบบยกระดับ ทั้งที่นโยบายปฏิเสธ |
policy/tools-also-allow-missing |
รายการ alsoAllow ที่กำหนดค่าไว้ไม่มีรายการที่นโยบายกำหนดให้ต้องมี |
policy/tools-also-allow-unexpected |
รายการ alsoAllow ที่กำหนดค่าไว้มีรายการที่นโยบายไม่ได้คาดหมาย |
policy/tools-required-deny-missing |
รายการปฏิเสธเครื่องมือแบบส่วนกลางหรือรายเอเจนต์ไม่มีเครื่องมือที่กำหนดให้ต้องปฏิเสธ |
policy/sandbox-mode-unapproved |
โหมดแซนด์บ็อกซ์อยู่นอกรายการอนุญาตของนโยบาย |
policy/sandbox-backend-unapproved |
แบ็กเอนด์แซนด์บ็อกซ์อยู่นอกรายการอนุญาตของนโยบาย |
policy/sandbox-container-posture-unobservable |
เปิดใช้งานกฎรูปแบบคอนเทนเนอร์กับแบ็กเอนด์ที่ไม่สามารถตรวจสังเกตกฎนั้นได้ |
policy/sandbox-container-host-network-denied |
แซนด์บ็อกซ์หรือเบราว์เซอร์ที่ใช้คอนเทนเนอร์ใช้โหมดเครือข่ายของโฮสต์ |
policy/sandbox-container-namespace-join-denied |
แซนด์บ็อกซ์หรือเบราว์เซอร์ที่ใช้คอนเทนเนอร์เข้าร่วมเนมสเปซของคอนเทนเนอร์อื่น |
policy/sandbox-container-mount-mode-required |
เมานต์ของแซนด์บ็อกซ์หรือเบราว์เซอร์ที่ใช้คอนเทนเนอร์ไม่ได้เป็นแบบอ่านอย่างเดียว |
policy/sandbox-container-runtime-socket-mount |
เมานต์ของแซนด์บ็อกซ์หรือเบราว์เซอร์ที่ใช้คอนเทนเนอร์เปิดเผยซ็อกเก็ตรันไทม์ของคอนเทนเนอร์ |
policy/sandbox-container-unconfined-profile |
โปรไฟล์แซนด์บ็อกซ์คอนเทนเนอร์ไม่มีข้อจำกัด ทั้งที่นโยบายปฏิเสธ |
policy/sandbox-browser-cdp-source-range-missing |
ไม่มีช่วงแหล่งที่มา CDP ของเบราว์เซอร์แซนด์บ็อกซ์ ทั้งที่นโยบายกำหนดให้ต้องมี |
policy/data-handling-redaction-disabled |
ปิดใช้งานการปกปิดข้อมูลสำคัญในบันทึก ทั้งที่นโยบายกำหนดให้ต้องใช้ |
policy/data-handling-telemetry-content-capture |
เปิดใช้งานการเก็บเนื้อหาเทเลเมทรี ทั้งที่นโยบายปฏิเสธ |
policy/data-handling-session-retention-not-enforced |
ไม่มีการบังคับใช้การบำรุงรักษาระยะเวลาเก็บเซสชัน ทั้งที่นโยบายกำหนดให้ต้องใช้ |
policy/data-handling-session-transcript-memory-enabled |
เปิดใช้งานการจัดทำดัชนีหน่วยความจำจากทรานสคริปต์เซสชัน ทั้งที่นโยบายปฏิเสธ |
policy/secrets-unmanaged-provider |
SecretRef ในการกำหนดค่าอ้างอิงผู้ให้บริการที่ไม่ได้ประกาศไว้ภายใต้ secrets.providers |
policy/secrets-denied-provider-source |
ผู้ให้บริการข้อมูลลับหรือ SecretRef ในการกำหนดค่าใช้แหล่งที่มาที่นโยบายปฏิเสธ |
policy/secrets-insecure-provider |
ผู้ให้บริการข้อมูลลับเลือกใช้รูปแบบที่ไม่ปลอดภัย ทั้งที่นโยบายปฏิเสธ |
policy/auth-profile-invalid-metadata |
โปรไฟล์การยืนยันตัวตนในการกำหนดค่าไม่มีข้อมูลเมตาของผู้ให้บริการหรือโหมดที่ถูกต้อง |
policy/auth-profile-unapproved-mode |
โหมดโปรไฟล์การยืนยันตัวตนในการกำหนดค่าอยู่นอกรายการอนุญาตของนโยบาย |
policy/exec-approvals-missing |
นโยบายกำหนดให้ต้องมี exec-approvals.json แต่ไม่มีอาร์ติแฟกต์ |
policy/exec-approvals-invalid |
ไม่สามารถแยกวิเคราะห์อาร์ติแฟกต์การอนุมัติการดำเนินการที่กำหนดค่าไว้ได้ |
policy/exec-approvals-default-security-unapproved |
ค่าเริ่มต้นของการอนุมัติการดำเนินการใช้โหมดความปลอดภัยที่อยู่นอกรายการอนุญาตของนโยบาย |
policy/exec-approvals-agent-security-unapproved |
โหมดความปลอดภัยที่มีผลของการอนุมัติการดำเนินการรายเอเจนต์อยู่นอกรายการอนุญาต |
policy/exec-approvals-auto-allow-skills-enabled |
เอเจนต์การอนุมัติการดำเนินการอนุญาต CLI ของ Skills โดยอัตโนมัติโดยปริยาย ทั้งที่นโยบายปฏิเสธ |
policy/exec-approvals-allowlist-missing |
รายการอนุญาตของการอนุมัติไม่มีรูปแบบที่นโยบายกำหนดให้ต้องมี |
policy/exec-approvals-allowlist-unexpected |
รายการอนุญาตของการอนุมัติมีรูปแบบที่นโยบายไม่ได้คาดหมาย |
policy/tools-missing-risk-level |
การประกาศเครื่องมือที่อยู่ภายใต้การกำกับไม่มีข้อมูลเมตาความเสี่ยง |
policy/tools-unknown-risk-level |
การประกาศเครื่องมือที่อยู่ภายใต้การกำกับใช้ค่าความเสี่ยงที่ไม่รู้จัก |
policy/tools-missing-sensitivity-token |
การประกาศเครื่องมือที่อยู่ภายใต้การกำกับไม่มีข้อมูลเมตาความอ่อนไหว |
policy/tools-missing-owner |
การประกาศเครื่องมือที่อยู่ภายใต้การกำกับไม่มีข้อมูลเมตาเจ้าของ |
policy/tools-unknown-sensitivity-token |
การประกาศเครื่องมือที่อยู่ภายใต้การกำกับใช้ค่าความอ่อนไหวที่ไม่รู้จัก |
ข้อค้นพบหนึ่งรายการสามารถมีทั้ง target (สิ่งที่ตรวจพบในพื้นที่ทำงานซึ่ง
ไม่สอดคล้อง) และ requirement (กฎที่เขียนไว้ซึ่งทำให้เกิดข้อค้นพบนี้)
ปัจจุบันทั้งสองเป็นสตริงที่อยู่ oc:// แต่ชื่อฟิลด์อธิบายบทบาทในนโยบาย
แทนที่จะอธิบายรูปแบบที่อยู่
ตัวอย่างข้อค้นพบ:
การซ่อมแซม
doctor --lint และ policy check เป็นแบบอ่านอย่างเดียว
doctor --fix จะแก้ไขการตั้งค่าเวิร์กสเปซที่จัดการโดยนโยบายเฉพาะเมื่อ
เปิดใช้ workspaceRepairs อย่างชัดเจนเท่านั้น มิฉะนั้น การตรวจสอบจะรายงานสิ่งที่
จะซ่อมแซมและปล่อยให้การตั้งค่าไม่เปลี่ยนแปลง
ในเวอร์ชันนี้ การซ่อมแซมสามารถปิดใช้ช่องทางที่ channels.denyRules ปฏิเสธ และ
ใช้การซ่อมแซมเพื่อจำกัดขอบเขตโดยอัตโนมัติตามรายการด้านล่าง เปิดใช้ workspaceRepairs
หลังจากตรวจสอบไฟล์นโยบายแล้วเท่านั้น เนื่องจากกฎที่ถูกต้องสามารถเปลี่ยนแปลง
การกำหนดค่าเวิร์กสเปซได้:
- ตั้งค่า
tools.elevated.enabled=falseเมื่อนโยบายส่วนกลางห้ามใช้เครื่องมือที่มีสิทธิ์ระดับสูง - เพิ่ม ID เครื่องมือที่จำเป็นต้องปฏิเสธแต่ยังขาดอยู่ไปยัง
tools.denyหรือagents.list[].tools.denyเมื่อนโยบายกำหนดให้ปฏิเสธเครื่องมือเหล่านั้น - ตั้งค่าตัวเลือก
gateway.controlUi.*ที่ไม่ปลอดภัยเป็นfalse - ตั้งค่า
gateway.mode=localเมื่อนโยบายปฏิเสธโหมด Gateway ระยะไกล - ตั้งค่าพาธ
gateway.http.endpoints.*.enabledที่รายงานเป็นfalseเมื่อนโยบาย ปฏิเสธปลายทาง HTTP API ของ Gateway - ตั้งค่าพาธขาเข้า
groupPolicyของช่องทางที่รายงานเป็นallowlistเมื่อนโยบาย ปฏิเสธการรับข้อมูลขาเข้าจากกลุ่มแบบเปิด - ตั้งค่าพาธขาเข้า
requireMentionของช่องทางที่รายงานเป็นtrueเมื่อนโยบาย กำหนดให้ต้องกล่าวถึงในกลุ่ม - ตั้งค่า
logging.redactSensitive=toolsเมื่อนโยบายกำหนดให้ปกปิดข้อมูลละเอียดอ่อน ในบันทึก - ตั้งค่า
diagnostics.otel.captureContent=falseหรือdiagnostics.otel.captureContent.enabled=falseสำหรับการตั้งค่าการบันทึกเทเลเมทรีในรูปแบบออบเจ็กต์ เมื่อนโยบายปฏิเสธการบันทึกเนื้อหาเทเลเมทรี
การซ่อมแซมเครื่องมือที่มีสิทธิ์ระดับสูงแบบกำหนดขอบเขตจะตรวจหาเท่านั้น นอกจากนี้ ระบบจะข้ามการซ่อมแซมการจัดการข้อมูลแบบกำหนดขอบเขตเมื่อผลการตรวจพบรายงานการกำหนดค่า การบันทึกหรือเทเลเมทรีที่ใช้ร่วมกัน เนื่องจากการเปลี่ยนการตั้งค่าที่ใช้ร่วมกัน จะส่งผลกระทบมากกว่าเป้าหมายนโยบายที่กำหนดขอบเขตไว้
ระบบจะข้ามการซ่อมแซมรายการที่จำเป็นต้องปฏิเสธแบบกำหนดขอบเขต เมื่อผลการตรวจพบรายงาน
tools.deny ระดับรากที่สืบทอดมา เนื่องจากการเพิ่มเครื่องมือที่จำเป็นไปยังการกำหนดค่าระดับรากจะส่งผลกระทบ
มากกว่าเป้าหมายนโยบายที่กำหนดขอบเขตไว้ การซ่อมแซมรายการที่จำเป็นต้องปฏิเสธเฉพาะเอเจนต์สามารถอัปเดต
พาธ agents.list[].tools.deny ที่รายงานได้
ระบบจะข้ามการซ่อมแซมขาเข้าของช่องทางแบบกำหนดขอบเขต เมื่อผลการตรวจพบรายงาน
channels.defaults.* ที่สืบทอดมา เนื่องจากการเปลี่ยนค่าเริ่มต้นของช่องทางที่ใช้ร่วมกันจะส่งผลกระทบ
มากกว่าเป้าหมายนโยบายที่กำหนดขอบเขตไว้ ผลการตรวจพบรายการอนุญาตสำหรับการดึง URL ผ่าน HTTP ของ Gateway
ยังคงต้องดำเนินการด้วยตนเอง เนื่องจากการซ่อมแซมอัตโนมัติไม่สามารถเลือกค่า URL ปลายทาง
ที่ถูกต้องสำหรับรายการอนุญาตได้
ผลการตรวจพบเกี่ยวกับการผูก Gateway และคำสั่ง Node ยังคงต้องได้รับการตรวจสอบ เมื่อ
สามารถแมป policy/gateway-non-loopback-bind หรือ policy/gateway-node-command-denied
ไปยังพาธการกำหนดค่าได้ doctor --fix จะรายงานการเปลี่ยนแปลง
gateway.bind หรือ gateway.nodes.denyCommands ที่เสนอเป็นคำแนะนำตัวอย่าง
ที่ถูกข้าม ระบบจะไม่ใช้การเปลี่ยนแปลงดังกล่าว และผลการตรวจพบจะไม่นับว่า
ซ่อมแซมแล้วจนกว่าผู้ปฏิบัติงานจะตรวจสอบและอัปเดตการกำหนดค่าหรือนโยบาย
รหัสออก
| คำสั่ง | 0 |
1 |
2 |
|---|---|---|---|
policy check |
ไม่มีผลการตรวจพบที่ถึงเกณฑ์ | มีผลการตรวจพบอย่างน้อยหนึ่งรายการที่ถึงเกณฑ์ | อาร์กิวเมนต์หรือรันไทม์ล้มเหลว |
policy compare |
ไฟล์นโยบายเข้มงวดเท่ากับหรือมากกว่าค่าฐาน | ไฟล์นโยบายไม่ถูกต้อง สูญหาย หรือเข้มงวดน้อยกว่ากฎค่าฐาน | อาร์กิวเมนต์หรือรันไทม์ล้มเหลว |
policy watch |
ไม่มีผลการตรวจพบและแฮชที่ยอมรับเป็นปัจจุบัน | มีผลการตรวจพบหรือการรับรองที่ยอมรับล้าสมัย | อาร์กิวเมนต์หรือรันไทม์ล้มเหลว |