openclaw policy
openclaw policy предоставляется встроенным плагином Policy. Это корпоративный
уровень проверки соответствия поверх существующих настроек OpenClaw, а не вторая система
конфигурации. Требования задаются в policy.jsonc; OpenClaw использует активное
рабочее пространство как свидетельство; Policy сообщает об отклонениях через doctor --lint. Policy
не контролирует вызовы инструментов и не изменяет поведение среды выполнения во время обработки запроса, а также
не подтверждает соответствие хранилищ учетных данных отдельных агентов, таких как auth-profiles.json.
Policy проверяет настроенные каналы, серверы MCP, поставщиков моделей, защиту сети от SSRF,
доступ к входящим подключениям и каналам, доступность Gateway и состояние команд узлов,
доступ агентов к рабочему пространству, состояние песочницы, состояние обработки данных, состояние
поставщиков секретов и профилей аутентификации, а также метаданные управляемых инструментов (TOOLS.md). Используйте его,
когда рабочему пространству требуется устойчивое, проверяемое требование, например «Telegram не должен
быть включен» или «управляемые инструменты должны содержать метаданные риска и владельца». Если
нужно только локальное поведение без подтверждения соответствия или обнаружения отклонений, достаточно обычной
конфигурации.
Быстрый старт
policy.jsonc отсутствует, чтобы doctor мог
сообщить об отсутствующем артефакте, а не молча пропустить проверки.
Создайте policy.jsonc вручную; он не генерируется из текущих настроек. Каждый
раздел верхнего уровня представляет пространство имен правил: проверка выполняется только при наличии конкретного правила
в этом разделе (неподдерживаемые разделы или ключи приводят к ошибке
policy/policy-jsonc-invalid, а не игнорируются без уведомления). Минимальный
пример, охватывающий все поддерживаемые разделы:
- Если запретить привязку к адресам, отличным от loopback, но не указать
gateway.bind, будет принят стандартный вариант среды выполнения; для строгого соответствия задайте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, но никогда не исходные значения. Policy не считывает и не подтверждает соответствие
хранилищ учетных данных отдельных агентов, таких как
auth-profiles.json. - Свидетельства об обработке данных отражают только состояние на уровне конфигурации (режим редактирования, переключатель захвата телеметрии, режим обслуживания сеансов, настройка индексирования расшифровок). Они не проверяют журналы, экспортированные данные телеметрии, расшифровки или файлы памяти, и успешный результат не доказывает отсутствие в них персональных данных или секретов.
Справочник правил Policy
Каждое приведенное ниже правило необязательно; проверка выполняется только при наличии правила. Наблюдаемое состояние — это существующая конфигурация OpenClaw или метаданные рабочего пространства.Области с наложением правил
Используйтеscopes.<scopeName>, когда отдельным агентам или каналам нужна более строгая политика,
чем базовая политика верхнего уровня. Имя области — лишь метка; сопоставление выполняется по
селектору внутри области. Наложения дополняют друг друга: глобальное правило продолжает действовать,
а правило области может добавить собственное обнаруженное несоответствие для тех же свидетельств.
Если запись
agentIds отсутствует в agents.list[], OpenClaw проверяет
правило области по унаследованному глобальному состоянию или состоянию по умолчанию для агента среды выполнения
с указанным идентификатором, а не пропускает его.
sandbox.containers.*) проверяются только по
свидетельствам, которые может предоставить серверная часть песочницы соответствующего агента. Если серверная часть не может
наблюдать включенное для нее правило, Policy сообщает
policy/sandbox-container-posture-unobservable, а не считает проверку успешной; ограничивайте
правила контейнеров областями групп агентов, использующих серверную часть, которая может предоставить эти сведения.
Параметр верхнего уровня ingress.session.requireDmScope остается глобальным; session.dmScope
не является свидетельством, которое можно отнести к каналу, поэтому его нельзя ограничить областью по channelIds.
Каждая область в policy.jsonc должна быть допустимой и обеспечивать выполнение правил.
Каналы
Серверы MCP
Поставщики моделей
Сеть
Входящий доступ и доступ к каналам
Gateway
gateway.nodes.denyCommands — точное, чувствительное к регистру правило, требующее, чтобы множество запретов было надмножеством.
Используйте его, когда политика должна доказывать, что привилегированные команды Node явно
запрещены конфигурацией OpenClaw. Если развертывание намеренно разрешает привилегированную
команду Node, после проверки следует обновить 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, когда включён плагин Policy.
Сравните файл политики оператора с подготовленной базовой политикой:
policy compare проверяет синтаксис файла политики относительно синтаксиса файла политики; эта команда
не проверяет состояние среды выполнения, свидетельства, учётные данные или секреты. Она использует те же
метаданные правил, которые регулируют наложения с областями действия: списки разрешений должны оставаться такими же
или становиться уже, списки запретов — такими же или шире, обязательные логические значения должны сохранять
своё значение, упорядоченные строки могут перемещаться только к более строгому концу
заданного порядка, а точные списки должны совпадать. В качестве базовой политики можно использовать
политику, подготовленную организацией; проверяемая политика может добавлять более строгие значения или
дополнительные правила. Проверяемое правило верхнего уровня может удовлетворять базовому правилу с областью действия, если
оно является таким же или более строгим. Имена областей действия в файлах могут
не совпадать; сравнение выполняется по селектору (agentIds/channelIds) и полю.
Успешное сравнение (--json):
policy check --json содержит стабильные хеши, которые оператор или
система надзора может сохранить:
Настройка политики
Конфигурация политики находится вplugins.entries.policy.config.
Установите для
plugins.entries.policy.config.enabled значение false, чтобы отключить проверки
политик для рабочей области, оставив плагин установленным.
Принятие состояния политики
Пример вывода 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, чтобы изменить
интервал.
Результаты проверок
Обнаруженная проблема может включать как
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 и команд узлов по-прежнему требуют проверки. Когда
policy/gateway-non-loopback-bind или policy/gateway-node-command-denied
можно сопоставить с путём конфигурации, doctor --fix сообщает о предлагаемом
изменении gateway.bind или gateway.nodes.denyCommands как о пропущенной предварительной
рекомендации. Изменение не применяется, а результат проверки не считается
исправленным, пока оператор не проверит и не обновит конфигурацию или политику.