Skip to main content

openclaw policy

openclaw policy надається вбудованим Plugin політики. Це корпоративний рівень відповідності поверх наявних налаштувань OpenClaw, а не друга система конфігурації. Ви задаєте вимоги у policy.jsonc; OpenClaw спостерігає за активним робочим простором як джерелом доказів; політика повідомляє про розбіжності через doctor --lint. Політика не контролює виклики інструментів, не переписує поведінку середовища виконання під час запиту й не засвідчує сховища облікових даних окремих агентів, як-от auth-profiles.json. Політика перевіряє налаштовані канали, сервери MCP, постачальників моделей, захищеність мережі від SSRF, вхідний доступ і доступ до каналів, відкритість Gateway і політику команд вузлів, доступ агентів до робочого простору, стан пісочниці, політику обробки даних, стан постачальників секретів і профілів автентифікації, а також метадані керованих інструментів (TOOLS.md). Використовуйте її, коли робочому простору потрібне довготривале твердження, яке можна перевірити, наприклад «Telegram не має бути ввімкнено» або «керовані інструменти мають містити метадані про ризик і власника». Якщо вам потрібна лише локальна поведінка без засвідчення чи виявлення розбіжностей, достатньо звичайної конфігурації.

Швидкий початок

Plugin залишається ввімкненим, навіть якщо policy.jsonc відсутній, тому doctor може повідомити про відсутній артефакт, а не мовчки пропустити перевірки. Створюйте policy.jsonc вручну; він не генерується з поточних налаштувань. Кожен розділ верхнього рівня є простором імен правил: перевірка виконується лише тоді, коли в ньому наявне конкретне правило (непідтримувані розділи або ключі спричиняють помилку policy/policy-jsonc-invalid, а не мовчки ігноруються). Мінімальний приклад, що охоплює всі підтримувані розділи:
Наскрізні примітки, які не є очевидними з наведених нижче таблиць правил:
  • Якщо не вказати gateway.bind, заборонивши прив’язування не до local loopback, це означає, що ви приймаєте стандартне значення середовища виконання; для суворої відповідності встановіть gateway.bind: "loopback".
  • Для агента з доступом лише для читання встановіть для пісочниці mode у значення all або non-main у відповідних стандартних налаштуваннях чи налаштуваннях агента, а workspaceAccess — у none або ro. Відсутній режим пісочниці або значення off не відповідає політиці доступу лише для читання.
  • agents.workspace.denyTools приймає exec, process, write, edit, apply_patch. Групи заборони інструментів конфігурації group:fs (змінення файлів) і group:runtime (оболонка/процеси) забезпечують еквівалентну політику.
  • Перевірки схвалення виконання читають активний артефакт exec-approvals.json, лише коли наявне правило execApprovals; відсутній або недійсний артефакт є неспостережуваним доказом, а не штучно успішною перевіркою.
  • Докази щодо секретів і профілів автентифікації містять лише відомості про стан постачальника/джерела та метадані SecretRef, але ніколи не містять необроблених значень. Політика не читає й не засвідчує сховища облікових даних окремих агентів, як-от auth-profiles.json.
  • Докази щодо обробки даних відображають лише стан на рівні конфігурації (режим редагування конфіденційних даних, перемикач збирання телеметрії, режим обслуговування сеансів, налаштування індексування розшифровок). Вони не перевіряють журнали, експорти телеметрії, розшифровки або файли пам’яті, а успішний результат не доводить відсутності в них персональних даних чи секретів.

Довідник правил політики

Кожне наведене нижче правило є необов’язковим; перевірка виконується лише за наявності правила. Спостережуваний стан — це наявна конфігурація OpenClaw або метадані робочого простору.

Накладання з областю дії

Використовуйте scopes.<scopeName>, коли для певних агентів або каналів потрібна суворіша політика, ніж базова політика верхнього рівня. Назва області дії — лише мітка; зіставлення використовує селектор усередині області. Накладання є додатковими: глобальне правило продовжує виконуватися, а правило з областю дії може додати власний результат перевірки для тих самих доказів. Якщо запис agentIds відсутній у agents.list[], OpenClaw оцінює правило з областю дії за успадкованою глобальною/стандартною політикою для цього ідентифікатора агента виконання, а не пропускає його.
Той самий агент може входити до кількох областей дії, якщо кожна з них керує іншим полем, як у прикладі вище. Повторюване поле з областю дії для того самого агента має бути настільки ж або більш обмежувальним; слабше повторне твердження відхиляється (списки дозволів мають бути підмножинами, списки заборон — надмножинами, а обов’язкові булеві значення є фіксованими). Правила стану контейнерів (sandbox.containers.*) перевіряються лише за доказами, які може надати серверна частина пісочниці зіставленого агента. Якщо серверна частина не може спостерігати ввімкнене для неї правило, політика повідомляє policy/sandbox-container-posture-unobservable, а не зараховує перевірку як успішну; обмежуйте правила контейнерів областю дії для груп агентів, які використовують серверну частину, здатну надати такі докази. ingress.session.requireDmScope верхнього рівня залишається глобальним; session.dmScope не є доказом, який можна віднести до певного каналу, тому його не можна обмежити областю дії через channelIds. Кожна область дії у policy.jsonc має бути дійсною та придатною до застосування.

Канали

Сервери MCP

Постачальники моделей

Мережа

Вхідний доступ і доступ до каналів

Gateway

gateway.nodes.denyCommands — це точне правило надмножини заборон, чутливе до регістру. Використовуйте його, коли політика має підтвердити, що привілейовані команди вузла явно заборонені конфігурацією OpenClaw. Розгортання, яке навмисно дозволяє привілейовану команду вузла, має після перевірки оновити policy.jsonc, а не покладатися лише на gateway.nodes.allowCommands.

Робочий простір агента

Режим захисту пісочниці

Політика трактує відсутній sandbox.mode як його неявне типове значення off, тому sandbox.requireMode повідомляє, що нова або неналаштована пісочниця не входить до списку дозволених значень, як-от ["all"].

Обробка даних

Секрети

Схвалення виконання

Перевірки схвалень виконання читають артефакт середовища виконання 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, розв’язані шляхи чи часові позначки. Приклад: вимагати артефакт схвалень, заборонити надмірно дозвільні типові значення та дозволяти лише перевірений режим схвалення виконання для вибраних агентів.

Профілі автентифікації

Метадані інструментів

Режим інструментів

Запуск перевірок

Під час створення запускайте лише перевірки політики:
policy check запускає лише набір перевірок політики та виводить докази, результати й хеші атестації. Ті самі результати також з’являються в openclaw doctor --lint, коли Plugin політики ввімкнено. Порівняйте файл політики оператора зі створеним базовим варіантом:
policy compare перевіряє синтаксис файла політики відносно синтаксису файла політики; він не перевіряє стан середовища виконання, докази, облікові дані чи секрети. Він використовує ті самі метадані правил, які керують накладеннями з областю дії: списки дозволів мають залишатися однаковими або вужчими, списки заборон — однаковими або ширшими, обов’язкові логічні значення мають зберігати своє значення, упорядковані рядки можуть рухатися лише до суворішого кінця налаштованого порядку, а точні списки мають збігатися. Базовим варіантом може бути політика, створена організацією; перевірювана політика може додавати суворіші значення або додаткові правила. Перевірюване правило верхнього рівня може задовольняти правило базового варіанта з областю дії, якщо воно таке саме або суворіше. Назви областей дії у файлах не обов’язково мають збігатися; порівняння виконується за селектором (agentIds/channelIds) і полем. Успішне порівняння (--json):
Успішний результат policy check --json містить стабільні хеші, які оператор або система нагляду може записати:

Налаштування політики

Конфігурація політики міститься в plugins.entries.policy.config.
Установіть plugins.entries.policy.config.enabled у false, щоб вимкнути перевірки політики для робочої області, залишивши Plugin встановленим.

Прийняття стану політики

Приклад виводу JSON:
attestation.policy.hash ідентифікує створений артефакт правил. evidence записує спостережуваний стан OpenClaw, використаний перевірками, а workspace.hash ідентифікує це корисне навантаження доказів. findingsHash ідентифікує точний набір результатів. checkedAt фіксує час виконання перевірки. attestationHash ідентифікує стабільне твердження (хеш політики, хеш доказів, хеш результатів і успішний/неуспішний стан) та навмисно не включає checkedAt, тому той самий стан політики завжди створює той самий хеш атестації. Разом ці чотири значення утворюють аудиторський кортеж однієї перевірки політики. Якщо Gateway або система нагляду використовує політику для блокування, схвалення чи анотування дії середовища виконання, вона має записувати хеш атестації з останньої успішної перевірки. checkedAt залишається у виводі JSON для журналів аудиту, але не є частиною стабільного хешу. Життєвий цикл прийняття стану політики:
  1. Створіть або перевірте policy.jsonc.
  2. Виконайте openclaw policy check --json.
  3. Якщо перевірка успішна, запишіть attestation.policy.hash як expectedHash.
  4. Запишіть attestation.attestationHash як expectedAttestationHash.
  5. Повторно виконайте openclaw doctor --lint у CI або на контрольних етапах випуску.
Якщо правила політики змінено навмисно, оновіть обидва прийняті хеші за результатами чистої перевірки. Якщо змінено лише налаштування робочого простору (політика залишається незмінною), зазвичай змінюється лише expectedAttestationHash. Увімкнення або оновлення правил agents.workspace додає свідчення agentWorkspace до хешу робочого простору та хешу атестації; після ввімкнення перегляньте нові свідчення й оновіть прийняті хеші атестації. Увімкнення або оновлення правил стану інструментів так само додає свідчення toolPosture. openclaw policy watch повторно запускає перевірку та повідомляє, коли поточні свідчення більше не відповідають expectedAttestationHash:
Використовуйте --once у CI або сценаріях, яким потрібна одноразова оцінка відхилення. Без --once за замовчуванням опитування виконується кожні дві секунди; щоб змінити інтервал, використовуйте --interval-ms.

Виявлені проблеми

Виявлена проблема може містити як target (спостережуваний об’єкт робочого простору, що не відповідає вимогам), так і requirement (задане правило, через яке виникла проблема). Наразі обидва поля є рядками адрес oc://, але назви полів описують роль у політиці, а не формат адреси. Приклади виявлених проблем:

Виправлення

doctor --lint і policy check працюють лише в режимі читання. doctor --fix редагує налаштування робочого простору, керовані політикою, лише коли workspaceRepairs явно ввімкнено; інакше перевірки повідомляють, що саме вони виправили б, і залишають налаштування без змін. У цій версії виправлення може вимкнути канали, заборонені правилами channels.denyRules, і застосувати наведені нижче автоматичні виправлення зі звуженням дозволів. Вмикайте workspaceRepairs лише після перевірки файлу політики, оскільки чинне правило може змінити конфігурацію робочого простору:
  • установити tools.elevated.enabled=false, коли глобальна політика забороняє інструменти з підвищеними привілеями
  • додати відсутні ідентифікатори інструментів, які обов’язково мають бути заборонені, до 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 як пропущену рекомендацію попереднього перегляду. Він не застосовує зміну, а результат перевірки не вважається виправленим, доки оператор не перевірить і не оновить конфігурацію або політику.

Коди завершення

Пов’язані матеріали