> ## Documentation Index
> Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Проверки аудита безопасности

`openclaw security audit` выводит структурированные результаты, сгруппированные по `checkId`. Эта
страница представляет собой справочный каталог этих идентификаторов. Общую модель угроз
и рекомендации по усилению защиты см. в разделе [Безопасность](https://docs2.openclaw.ai/ru/gateway/security.md).

Некоторые проверки выполняются только с `openclaw security audit --deep`: сканирование кода
плагинов и Skills (`plugins.code_safety*`, `skills.code_safety*`) и проверки
с активным зондированием Gateway (`gateway.probe_*`). Все остальные проверки в этой таблице выполняются при обычном
`openclaw security audit`.

Уровень серьёзности вида `warn/critical` означает, что один и тот же `checkId` может выводиться
с любым из этих уровней в зависимости от конфигурации (например, от того, доступен ли Gateway
извне). Наиболее значимые значения, которые вы, скорее всего, увидите в реальных развёртываниях
(список не исчерпывающий):

| `checkId` | Серьезность | Почему это важно | Основной ключ/путь исправления | Автоисправление |
| - | - | - | - | - |
| `fs.state_dir.perms_world_writable` | критическая | Другие пользователи или процессы могут изменять всё состояние OpenClaw | права файловой системы для `~/.openclaw` | да |
| `fs.state_dir.perms_group_writable` | предупреждение | Пользователи группы могут изменять всё состояние OpenClaw | права файловой системы для `~/.openclaw` | да |
| `fs.state_dir.perms_readable` | предупреждение | Каталог состояния доступен другим для чтения | права файловой системы для `~/.openclaw` | да |
| `fs.state_dir.symlink` | предупреждение | Целевой каталог состояния становится дополнительной границей доверия | структура файловой системы каталога состояния | нет |
| `fs.config.perms_writable` | критическая | Другие могут изменять политику аутентификации и инструментов, а также конфигурацию | права файловой системы для `~/.openclaw/openclaw.json` | да |
| `fs.config.symlink` | предупреждение | Конфигурационные файлы, являющиеся символическими ссылками, не поддерживаются для записи и создают дополнительную границу доверия | замените обычным конфигурационным файлом или укажите в `OPENCLAW_CONFIG_PATH` реальный файл | нет |
| `fs.config.perms_group_readable` | предупреждение | Пользователи группы могут читать токены и настройки конфигурации | права файловой системы для конфигурационного файла | да |
| `fs.config.perms_world_readable` | критическая | Конфигурация может раскрывать токены и настройки | права файловой системы для конфигурационного файла | да |
| `fs.config_include.perms_writable` | критическая | Другие могут изменять подключаемый конфигурационный файл | права подключаемого файла, указанного в `openclaw.json` | да |
| `fs.config_include.perms_group_readable` | предупреждение | Пользователи группы могут читать подключенные секреты и настройки | права подключаемого файла, указанного в `openclaw.json` | да |
| `fs.config_include.perms_world_readable` | критическая | Подключенные секреты и настройки доступны всем для чтения | права подключаемого файла, указанного в `openclaw.json` | да |
| `fs.auth_profiles.perms_writable` | критическая | Другие могут внедрять или заменять сохраненные учетные данные модели | права для `agents/<agentId>/agent/auth-profiles.json` | да |
| `fs.auth_profiles.perms_readable` | предупреждение | Другие могут читать ключи API и токены OAuth | права для `agents/<agentId>/agent/auth-profiles.json` | да |
| `fs.credentials_dir.perms_writable` | критическая | Другие могут изменять состояние сопряжения каналов и учетных данных | права файловой системы для `~/.openclaw/credentials` | да |
| `fs.credentials_dir.perms_readable` | предупреждение | Другие могут читать состояние учетных данных каналов | права файловой системы для `~/.openclaw/credentials` | да |
| `fs.sessions_store.perms_readable` | предупреждение | Другие могут читать расшифровки сеансов и метаданные | права хранилища сеансов | да |
| `fs.log_file.perms_readable` | предупреждение | Другие могут читать отредактированные, но всё еще конфиденциальные журналы | права файла журнала Gateway | да |
| `fs.synced_dir` | предупреждение | Хранение состояния или конфигурации в iCloud/Dropbox/Drive расширяет доступ к токенам и расшифровкам | переместите конфигурацию и состояние из синхронизируемых папок | нет |
| `gateway.bind_no_auth` | критическая | Привязка к удаленному интерфейсу без общего секрета | `gateway.bind`, `gateway.auth.*` | нет |
| `gateway.loopback_no_auth` | критическая | Доступ через обратный прокси к интерфейсу обратной петли может оказаться неаутентифицированным | `gateway.auth.*`, настройка прокси | нет |
| `gateway.trusted_proxies_missing` | предупреждение | Заголовки обратного прокси присутствуют, но не считаются доверенными | `gateway.trustedProxies` | нет |
| `gateway.http.no_auth` | предупреждение/критическая | HTTP API Gateway доступны при `auth.mode="none"` | `gateway.auth.mode`, `gateway.http.endpoints.*`, `plugins.entries.admin-http-rpc` | нет |
| `gateway.http.session_key_override_enabled` | информация | Клиенты HTTP API могут переопределять `sessionKey` | `gateway.http.allowSessionKeyOverride` | нет |
| `gateway.tools_invoke_http.dangerous_allow` | предупреждение/критическая | Повторно включает опасные инструменты через HTTP API для вызывающих сторон с правами владельца или администратора | `gateway.tools.allow` | нет |
| `gateway.nodes.allow_commands_dangerous` | предупреждение/критическая | Включает команды Node с серьезными последствиями (ввод с рабочего стола/камера/экран/контакты/календарь/SMS) | `gateway.nodes.allowCommands` | нет |
| `gateway.nodes.deny_commands_ineffective` | предупреждение | Записи запрета, похожие на шаблоны, не сопоставляются с текстом оболочки или группами | `gateway.nodes.denyCommands` | нет |
| `gateway.tailscale_funnel` | критическая | Доступ из общедоступного Интернета | `gateway.tailscale.mode` | нет |
| `gateway.tailscale_serve` | информация | Доступ из tailnet включен через Serve | `gateway.tailscale.mode` | нет |
| `gateway.control_ui.allowed_origins_required` | критическая | Control UI не на интерфейсе обратной петли без явного списка разрешенных источников браузера | `gateway.controlUi.allowedOrigins` | нет |
| `gateway.control_ui.allowed_origins_wildcard` | предупреждение/критическая | `allowedOrigins=["*"]` отключает проверку списка разрешенных источников браузера | `gateway.controlUi.allowedOrigins` | нет |
| `gateway.control_ui.host_header_origin_fallback` | предупреждение/критическая | Включает резервное определение источника по заголовку Host (ослабляет защиту от перепривязки DNS) | `gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback` | нет |
| `gateway.control_ui.insecure_auth` | предупреждение | Включен переключатель совместимости с небезопасной аутентификацией | `gateway.controlUi.allowInsecureAuth` | нет |
| `gateway.control_ui.device_auth_disabled` | критическая | Отключает проверку идентичности устройства | `gateway.controlUi.dangerouslyDisableDeviceAuth` | нет |
| `gateway.real_ip_fallback_enabled` | предупреждение/критическая | Доверие к резервному варианту `X-Real-IP` может позволить подмену IP-адреса источника при неверной настройке прокси | `gateway.allowRealIpFallback`, `gateway.trustedProxies` | нет |
| `gateway.token_too_short` | предупреждение | Короткий общий токен легче подобрать перебором | `gateway.auth.token` | нет |
| `gateway.auth_no_rate_limit` | предупреждение | Открытая аутентификация без ограничения частоты запросов повышает риск перебора | `gateway.auth.rateLimit` | нет |
| `gateway.trusted_proxy_auth` | критическая | Идентичность прокси теперь становится границей аутентификации | `gateway.auth.mode="trusted-proxy"` | нет |
| `gateway.trusted_proxy_no_proxies` | критическая | Аутентификация через доверенный прокси без доверенных IP-адресов прокси небезопасна | `gateway.trustedProxies` | нет |
| `gateway.trusted_proxy_no_user_header` | критическая | Аутентификация через доверенный прокси не может безопасно определить идентичность пользователя | `gateway.auth.trustedProxy.userHeader` | нет |
| `gateway.trusted_proxy_no_allowlist` | предупреждение | Аутентификация через доверенный прокси принимает любого пользователя, аутентифицированного вышестоящим сервисом | `gateway.auth.trustedProxy.allowUsers` | нет |
| `gateway.trusted_proxy_allow_loopback` | предупреждение | Аутентификация через доверенный прокси принимает явно разрешенные источники прокси на интерфейсе обратной петли | `gateway.auth.trustedProxy.allowLoopback` | нет |
| `gateway.probe_auth_secretref_unavailable` | предупреждение | Глубокая проверка не смогла разрешить ссылки SecretRef для аутентификации в этом пути команды | источник аутентификации для глубокой проверки / доступность SecretRef | нет |
| `gateway.probe_failed` | предупреждение | Проверка работающего Gateway завершилась неудачно (только `--deep`) | доступность Gateway/аутентификация | нет |
| `discovery.mdns_full_mode` | предупреждение/критическая | Полный режим mDNS публикует метаданные `cliPath`/`sshPort` в локальной сети | `discovery.mdns.mode`, `gateway.bind` | нет |
| `config.insecure_or_dangerous_flags` | предупреждение | Включён один небезопасный/опасный флаг отладки | ключ, указанный в подробностях обнаруженной проблемы | нет |
| `security.audit.suppressions.active` | информация | Для результатов аудита настроены исключения, поэтому они могут быть отфильтрованы | `security.audit.suppressions` | нет |
| `config.secrets.gateway_password_in_config` | предупреждение | Пароль Gateway хранится непосредственно в конфигурации | `gateway.auth.password` | нет |
| `config.secrets.hooks_token_in_config` | предупреждение | Bearer-токен хука хранится непосредственно в конфигурации | `hooks.token` | нет |
| `hooks.token_reuse_gateway_token` | критическая | Токен входящих запросов хука также предоставляет доступ к аутентификации Gateway | `hooks.token`, `gateway.auth.token`, `gateway.auth.password` | нет |
| `hooks.token_too_short` | предупреждение | Упрощён перебор токена входящих запросов хука | `hooks.token` | нет |
| `hooks.default_session_key_unset` | предупреждение | Запуски агента через хук распределяются по создаваемым для каждого запроса сеансам | `hooks.defaultSessionKey` | нет |
| `hooks.allowed_agent_ids_unrestricted` | предупреждение/критическая | Аутентифицированные вызывающие стороны хука могут направлять запросы любому настроенному агенту | `hooks.allowedAgentIds` | нет |
| `hooks.request_session_key_enabled` | предупреждение/критическая | Внешняя вызывающая сторона может выбирать sessionKey | `hooks.allowRequestSessionKey` | нет |
| `hooks.request_session_key_prefixes_missing` | предупреждение/критическая | Формат внешних ключей сеансов не ограничен | `hooks.allowedSessionKeyPrefixes` | нет |
| `hooks.path_root` | критическая | Путь хука — `/`, что повышает риск коллизии или ошибочной маршрутизации входящих запросов | `hooks.path` | нет |
| `hooks.installs_unpinned_npm_specs` | предупреждение | Записи об установке хуков не привязаны к неизменяемым спецификациям npm | метаданные установки хука | нет |
| `hooks.installs_missing_integrity` | предупреждение | В записях об установке хуков отсутствуют метаданные целостности | метаданные установки хука | нет |
| `hooks.installs_version_drift` | предупреждение | Записи об установке хуков расходятся с установленными пакетами | метаданные установки хука | нет |
| `logging.redact_off` | предупреждение | Конфиденциальные значения попадают в журналы/данные о состоянии | `logging.redactSensitive` | да |
| `browser.control_invalid_config` | предупреждение | Конфигурация управления браузером недопустима ещё до запуска | `browser.*` | нет |
| `browser.control_no_auth` | критическая | Управление браузером доступно без аутентификации по токену/паролю | `gateway.auth.*` | нет |
| `browser.remote_cdp_http` | предупреждение | Для удалённого CDP по обычному HTTP отсутствует шифрование транспорта | профиль браузера `cdpUrl` | нет |
| `browser.remote_cdp_private_host` | предупреждение | Удалённый CDP обращается к частному/внутреннему хосту | профиль браузера `cdpUrl`, `browser.ssrfPolicy.*` | нет |
| `sandbox.docker_config_mode_off` | предупреждение | Конфигурация Docker для песочницы существует, но неактивна | `agents.*.sandbox.mode` | нет |
| `sandbox.bind_mount_non_absolute` | предупреждение | Относительные bind-монтирования могут разрешаться непредсказуемо | `agents.*.sandbox.docker.binds[]` | нет |
| `sandbox.dangerous_bind_mount` | критическая | Цели bind-монтирования песочницы указывают на заблокированные системные пути, пути учётных данных или сокета Docker | `agents.*.sandbox.docker.binds[]` | нет |
| `sandbox.dangerous_network_mode` | критическая | Сеть Docker песочницы использует режим объединения пространств имён `host` или `container:*` | `agents.*.sandbox.docker.network` | нет |
| `sandbox.dangerous_seccomp_profile` | критическая | Профиль seccomp песочницы ослабляет изоляцию контейнера | `agents.*.sandbox.docker.securityOpt` | нет |
| `sandbox.dangerous_apparmor_profile` | критическая | Профиль AppArmor песочницы ослабляет изоляцию контейнера | `agents.*.sandbox.docker.securityOpt` | нет |
| `sandbox.browser_cdp_bridge_unrestricted` | предупреждение | Мост браузера песочницы доступен без ограничения диапазона исходных адресов | `sandbox.browser.cdpSourceRange` | нет |
| `sandbox.browser_container.non_loopback_publish` | критическая | Существующий контейнер браузера публикует CDP на интерфейсах, отличных от loopback | конфигурация публикации контейнера браузера в песочнице | нет |
| `sandbox.browser_container.hash_label_missing` | предупреждение | Существующий контейнер браузера создан до введения текущих меток хеша конфигурации | `openclaw sandbox recreate --browser --all` | нет |
| `sandbox.browser_container.hash_epoch_stale` | предупреждение | Существующий контейнер браузера создан до текущей эпохи конфигурации браузера | `openclaw sandbox recreate --browser --all` | нет |
| `sandbox.browser_container.docker_probe_timeout` | предупреждение | Истекло время ожидания проверки меток Docker для контейнера браузера | доступность демона Docker | нет |
| `tools.exec.host_sandbox_no_sandbox_defaults` | предупреждение | `exec host=sandbox` запрещает операцию при отключённой песочнице | `tools.exec.host`, `agents.defaults.sandbox.mode` | нет |
| `tools.exec.host_sandbox_no_sandbox_agents` | предупреждение | `exec host=sandbox` для отдельных агентов запрещает операцию при отключённой песочнице | `agents.list[].tools.exec.host`, `agents.list[].sandbox.mode` | нет |
| `tools.exec.security_full_configured` | предупреждение/критическая | Выполнение команд на хосте работает с `security="full"` | `tools.exec.security`, `agents.list[].tools.exec.security` | нет |
| `tools.exec.agent_skill_mcp_boundary_drift` | предупреждение | Списки разрешённых Skills агента заданы, хотя выполнение команд на хосте может обращаться к клиентам/реестрам MCP | `agents.list[].tools.exec.*`, изоляция песочницы/ОС, учётные данные сервера MCP | нет |
| `tools.exec.fs_tools_disabled_but_exec_enabled` | предупреждение | Политика инструментов файловой системы не переводит выполнение команд оболочки в режим только для чтения | `tools.deny`, `agents.list[].tools.deny`, `agents.*.sandbox.workspaceAccess` | нет |
| `tools.exec.auto_allow_skills_enabled` | предупреждение | Подтверждения выполнения неявно доверяют исполняемым файлам Skills | файл подтверждений хоста | нет |
| `tools.exec.allowlist_interpreter_without_strict_inline_eval` | предупреждение | Списки разрешённых интерпретаторов допускают встроенное вычисление выражений без обязательного повторного подтверждения | `tools.exec.strictInlineEval`, `agents.list[].tools.exec.strictInlineEval`, список разрешённых подтверждений выполнения | нет |
| `tools.exec.safe_bins_interpreter_unprofiled` | предупреждение | Исполняемые файлы интерпретаторов/сред выполнения в `safeBins` без явных профилей расширяют риски выполнения команд | `tools.exec.safeBins`, `tools.exec.safeBinProfiles`, `agents.list[].tools.exec.*` | нет |
| `tools.exec.safe_bins_broad_behavior` | предупреждение | Инструменты с широким спектром поведения в `safeBins` ослабляют модель доверия к фильтру stdin с низким уровнем риска | `tools.exec.safeBins`, `agents.list[].tools.exec.safeBins` | нет |
| `tools.exec.safe_bin_trusted_dirs_risky` | предупреждение | `safeBinTrustedDirs` включает изменяемые или рискованные каталоги | `tools.exec.safeBinTrustedDirs`, `agents.list[].tools.exec.safeBinTrustedDirs` | нет |
| `tools.elevated.allowFrom.<provider>.wildcard` | критическая | `tools.elevated.allowFrom.<provider>` включает `"*"`, разрешая доступ каждому отправителю | `tools.elevated.allowFrom.<provider>` | нет |
| `tools.elevated.allowFrom.<provider>.large` | предупреждение | Расширенный список разрешённых для `<provider>` содержит более 25 записей | `tools.elevated.allowFrom.<provider>` | нет |
| `agents.claude_cli.permission_mode_overridden_by_yolo` | предупреждение | `--permission-mode` Claude CLI игнорируется, поскольку выполнение команд OpenClaw полностью автоматизировано | аргументы `tools.exec.security`, `tools.exec.ask`, `cliBackends.claude-cli` | нет |
| `skills.workspace.symlink_escape` | предупреждение | Рабочая область `skills/**/SKILL.md` разрешается за пределами корня рабочей области (отклонение цепочки символических ссылок) | состояние файловой системы рабочей области `skills/**` | нет |
| `skills.workspace.scan_truncated` | предупреждение | Сканирование Skills рабочей области достигло ограничения на количество посещённых каталогов до завершения | сделать дерево каталогов рабочей области `skills/` более плоским или простым | нет |
| `plugins.extensions_no_allowlist` | предупреждение | Плагины установлены без явного списка разрешённых плагинов | `plugins.allowlist` | нет |
| `plugins.allow_phantom_entries` | предупреждение | `plugins.allow` содержит идентификатор, которому не соответствует ни один установленный плагин | `plugins.allow` | нет |
| `plugins.installs_unpinned_npm_specs` | предупреждение | Записи индекса плагинов не привязаны к неизменяемым спецификациям npm | метаданные установки плагина | нет |
| `plugins.installs_missing_integrity` | предупреждение | В записях индекса плагинов отсутствуют метаданные целостности | метаданные установки плагина | нет |
| `plugins.installs_version_drift` | предупреждение | Записи индекса плагинов расходятся с установленными пакетами | метаданные установки плагина | нет |
| `plugins.code_safety` | предупреждение/критично | Сканирование кода плагина обнаружило подозрительные или опасные шаблоны (только `--deep`) | код плагина / источник установки | нет |
| `plugins.code_safety.entry_path` | предупреждение | Путь точки входа плагина указывает на скрытые расположения или расположения `node_modules` | манифест плагина `entry` | нет |
| `plugins.code_safety.entry_escape` | критично | Точка входа плагина выходит за пределы каталога плагина | манифест плагина `entry` | нет |
| `plugins.code_safety.manifest_parse_error` | предупреждение | Не удалось разобрать манифест плагина во время сканирования безопасности кода | файл манифеста плагина | нет |
| `plugins.code_safety.scan_failed` | предупреждение | Не удалось завершить сканирование кода плагина (только `--deep`) | путь плагина / среда сканирования | нет |
| `plugins.<pluginId>.security_audit_failed` | предупреждение | Сборщик аудита безопасности, принадлежащий плагину, вызвал ошибку | сборщик аудита безопасности этого плагина | нет |
| `skills.code_safety` | предупреждение/критично | Метаданные или код установщика Skills содержат подозрительные или опасные шаблоны (только `--deep`) | источник установки Skills | нет |
| `skills.code_safety.scan_failed` | предупреждение | Не удалось завершить сканирование кода Skills (только `--deep`) | среда сканирования Skills | нет |
| `security.exposure.open_channels_with_exec` | предупреждение/критично | Общие или публичные комнаты могут обращаться к агентам с разрешённым выполнением команд | `channels.*.dmPolicy`, `channels.*.groupPolicy`, `tools.exec.*`, `agents.list[].tools.exec.*` | нет |
| `security.exposure.open_groups_with_elevated` | критично | Открытые личные сообщения/группы в сочетании с инструментами с повышенными привилегиями создают высокоопасные пути внедрения промптов | пути политики личных сообщений верхнего уровня или вложенные, переопределения учётных записей, `channels.*.groupPolicy` | нет |
| `security.exposure.open_groups_with_runtime_or_fs` | критично/предупреждение | Открытые личные сообщения/группы могут обращаться к инструментам командной строки и файлов без защиты песочницы/рабочей области | пути политик личных сообщений/групп, `tools.profile/deny`, `tools.fs.workspaceOnly`, `agents.*.sandbox.mode` | нет |
| `security.exposure.open_groups_with_control_plane_tools` | критично | Открытые личные сообщения/группы могут обращаться к инструментам плоскости управления Gateway/Cron | пути политик личных сообщений/групп, `tools.allow`, `tools.alsoAllow`, `tools.profile`, `gateway`, `cron` | нет |
| `security.trust_model.multi_user_heuristic` | предупреждение | Конфигурация выглядит многопользовательской, тогда как модель доверия Gateway рассчитана на персонального помощника | разделить границы доверия или усилить защиту для совместного использования (`sandbox.mode`, запрет инструментов/ограничение рабочей областью) | нет |
| `tools.profile_minimal_overridden` | предупреждение | Переопределения агентов обходят глобальный минимальный профиль | `agents.list[].tools.profile` | нет |
| `plugins.tools_reachable_permissive_policy` | предупреждение | Инструменты расширений доступны в разрешительных контекстах | `tools.profile` + разрешение/запрет инструментов | нет |
| `models.legacy` | предупреждение | Устаревшие семейства моделей всё ещё настроены | выбор модели | нет |
| `models.weak_tier` | предупреждение | Настроенные модели ниже текущих рекомендуемых уровней | выбор модели | нет |
| `models.small_params` | критично/информация | Малые модели в сочетании с небезопасными поверхностями инструментов повышают риск внедрения | выбор модели + политика песочницы/инструментов | нет |
| `channels.<provider>.dm.open` | критично | Политика личных сообщений `<provider>` имеет значение `"open"`; любой может отправить боту личное сообщение | `channels.<provider>.dmPolicy`, `.allowFrom` | нет |
| `channels.<provider>.dm.open_invalid` | предупреждение | `dmPolicy="open"` без `"*"` в `allowFrom` является несогласованной настройкой | `channels.<provider>.allowFrom` | нет |
| `channels.<provider>.dm.scope_main_multiuser` | предупреждение | Несколько отправителей личных сообщений сейчас используют общий основной сеанс | `session.dmScope` | нет |
| `channels.<provider>.allowFrom.dangerous_name_matching_enabled` | информация | `dangerouslyAllowNameMatching` повторно включает сопоставление отправителей по изменяемым имени, адресу электронной почты или тегу | отключить `dangerouslyAllowNameMatching`, использовать стабильные идентификаторы отправителей | нет |
| `channels.<provider>.account.read_only_resolution` | предупреждение | Не удалось полностью определить учётную запись канала для аудита (отсутствует секрет/Gateway) | убедиться, что указанные секреты доступны, или выполнить проверку по снимку работающего Gateway | нет |
| `channels.<provider>.warning.<n>` | информация/предупреждение/критично | Предупреждение безопасности конкретного провайдера, классифицированное на основе неструктурированного текста плагина | см. сведения о результате проверки | нет |
| `summary.attack_surface` | информация | Сводка состояния аутентификации, каналов, инструментов и открытости | несколько ключей (см. сведения о результате проверки) | нет |

`channels.<provider>.*` и `tools.elevated.allowFrom.<provider>.*` — это идентификаторы проверок,
создаваемые для каждого настроенного канала или провайдера, поэтому в фактическом выводе
`<provider>` является реальным идентификатором канала
(например, `telegram`, `discord`), а не строковым литералом.

## Связанные материалы

* [Безопасность](https://docs2.openclaw.ai/ru/gateway/security.md)
* [Конфигурация](https://docs2.openclaw.ai/ru/gateway/configuration.md)
* [Аутентификация через доверенный прокси](https://docs2.openclaw.ai/ru/gateway/trusted-proxy-auth.md)
