Перейти к основному содержанию

SecretRef для Vault

Встроенный плагин Vault позволяет OpenClaw разрешать exec SecretRef из HashiCorp Vault при запуске и перезагрузке Gateway. OpenClaw хранит ссылки Vault в конфигурации, сохраняет разрешённые значения в снимке секретов в памяти и не записывает разрешённые API-ключи обратно в openclaw.json. Используйте этот вариант, если вы уже используете Vault или хотите хранить ключи поставщиков моделей вне файлов конфигурации OpenClaw. О модели выполнения SecretRef см. Управление секретами.

Перед началом

Вам потребуется:
  • OpenClaw с доступным встроенным плагином vault
  • доступный сервер Vault
  • аутентификация Vault, позволяющая получить клиентский токен с доступом на чтение путей секретов, которые должен разрешать OpenClaw
  • среда, запускающая Gateway, должна содержать VAULT_ADDR и либо VAULT_TOKEN, либо OPENCLAW_VAULT_AUTH_METHOD=token_file вместе с VAULT_TOKEN_FILE, либо настроенный вход через JWT/Kubernetes
Средство разрешения взаимодействует с Vault по HTTP из Node. Для разрешения SecretRef Gateway не требуется CLI Vault. Включите встроенный плагин перед выполнением команд openclaw vault:

Сохранение ключа поставщика в Vault

По умолчанию OpenClaw использует KV v2, смонтированный в secret, как в примерах с сервером разработки Vault. Для рабочего сервера Vault перед созданием идентификаторов SecretRef задайте для OPENCLAW_VAULT_KV_MOUNT фактический путь монтирования KV. При стандартных настройках OpenClaw этот идентификатор SecretRef:
считывает следующее поле Vault:
Один из способов создать его с помощью CLI Vault:
Используйте для OpenClaw клиентский токен с ограниченной областью действия, а не корневой токен. Для стандартной структуры KV v2 минимальная политика для ключей поставщиков моделей выглядит так:

Предоставление Gateway доступа к Vault

Для локального Gateway, работающего без контейнера, экспортируйте настройки Vault в той же оболочке, из которой запускается OpenClaw. Стандартный метод аутентификации считывает клиентский токен Vault из VAULT_TOKEN:
Если Vault Agent записывает токен в целевой файл, используйте аутентификацию через файл токена:
Если сервер Vault подписан частным центром сертификации, установите этот сертификат ЦС в хранилище доверенных сертификатов узла и включите использование системного хранилища в Node:
Либо укажите пакет сертификатов PEM напрямую:
Эти переменные должны присутствовать при запуске OpenClaw. Плагин Vault передаёт их своему процессу разрешения. Для неинтерактивной аутентификации JWT используйте файл JWT рабочей нагрузки и роль Vault типа jwt:
Файл JWT должен содержать проецируемый токен рабочей нагрузки, например токен сервисной учётной записи Kubernetes с аудиторией, принимаемой ролью Vault. Интерактивный вход через OIDC в браузере удобен для людей, но среде выполнения Gateway необходим неинтерактивный вход через JWT или файл токена. Для метода аутентификации Kubernetes в Vault используйте kubernetes. Он предназначен для Gateway, работающих как Pod; стандартная точка монтирования — kubernetes, а стандартный файл JWT находится по обычному пути токена сервисной учётной записи:
Задавайте OPENCLAW_VAULT_AUTH_MOUNT, только если аутентификация Kubernetes смонтирована в Vault не в auth/kubernetes. Задавайте OPENCLAW_VAULT_JWT_FILE, только если токен сервисной учётной записи проецируется по нестандартному пути. Необязательные настройки:
Проверьте, что доступно текущей оболочке:
Если настроено несколько поставщиков секретов на основе Vault, выберите нужный по псевдониму:
openclaw vault status никогда не выводит VAULT_TOKEN; команда сообщает только, заданы ли токен, файл токена и файл JWT.
Если Gateway работает как служба, LaunchAgent, модуль systemd, запланированная задача или контейнер, эта среда выполнения должна получить те же переменные Vault. Установка переменных в интерактивной оболочке подтверждает их наличие только в этой оболочке, но не в уже запущенном Gateway.

Создание и применение плана SecretRef

Создайте план, сопоставляющий API-ключ поставщика моделей OpenRouter с Vault:
Примените и проверьте план:
Используйте --allow-exec, поскольку плагин Vault выполняет разрешение через управляемого OpenClaw поставщика SecretRef типа exec. Если Gateway ещё не запущен, после применения плана запустите его обычным способом вместо выполнения openclaw secrets reload.

Настройка дополнительных ключей поставщиков

Встроенные сокращения:
Несколько ключей поставщиков в одном плане:
Для встроенных поставщиков без сокращений, а также уже настроенных OpenAI-совместимых и пользовательских поставщиков моделей используйте --provider-key:
Каждый --provider-key <provider=id> записывает SecretRef в models.providers.<provider>.apiKey. Для пользовательских поставщиков команда не создаёт настройки поставщика baseUrl, api или models; сначала настройте их. Используйте --target <path=id> для любого известного целевого пути SecretRef:
Целевые пути без префикса применяются к openclaw.json. Используйте auth-profiles:<agentId>:<path> для существующих целей auth-profiles.json. Целевой путь должен быть зарегистрированной целью SecretRef в OpenClaw. Команда настройки не создаёт произвольные именованные секреты в OpenClaw: хранилищем секретов остаётся Vault, а OpenClaw сохраняет SecretRef только в поддерживаемых полях конфигурации.

Формат идентификатора SecretRef

Идентификаторы Vault SecretRef используют следующее соглашение:
Примеры:
Идентификатор SecretRefСтандартное чтение Vault KV v2Возвращаемое поле
providers/openrouter/apiKeysecret/data/providers/openrouterapiKey
providers/openai/apiKeysecret/data/providers/openaiapiKey
teams/agent-prod/openroutersecret/data/teams/agent-prodopenrouter
Возвращаемое поле Vault должно быть строкой. Для KV v1 задайте:
Тогда providers/openrouter/apiKey считывает:

Что хранит OpenClaw

При применении плана настройки Vault сохраняется управляемый плагином поставщик:
Поля учётных данных ссылаются на этого поставщика:
Разрешённое значение существует только в активном снимке секретов среды выполнения.

Контейнеры и управляемые развёртывания

Gateway в контейнерах используют те же плагин и конфигурацию SecretRef. В контейнер необходимо передать:
  • VAULT_ADDR
  • один источник аутентификации:
    • VAULT_TOKEN
    • OPENCLAW_VAULT_AUTH_METHOD=token_file вместе с VAULT_TOKEN_FILE
    • OPENCLAW_VAULT_AUTH_METHOD=jwt вместе с OPENCLAW_VAULT_AUTH_MOUNT, OPENCLAW_VAULT_AUTH_ROLE и OPENCLAW_VAULT_JWT_FILE
    • OPENCLAW_VAULT_AUTH_METHOD=kubernetes вместе с OPENCLAW_VAULT_AUTH_ROLE; при необходимости переопределите OPENCLAW_VAULT_AUTH_MOUNT или OPENCLAW_VAULT_JWT_FILE
  • необязательные VAULT_NAMESPACE, OPENCLAW_VAULT_KV_MOUNT и OPENCLAW_VAULT_KV_VERSION
При использовании Kubernetes отдавайте предпочтение OPENCLAW_VAULT_AUTH_METHOD=kubernetes, если в Vault настроена аутентификация Kubernetes для кластера. Используйте OPENCLAW_VAULT_AUTH_METHOD=jwt, только если Vault настроен так, чтобы считать кластер обычным издателем JWT/OIDC. Оба варианта лучше, чем долгоживущий токен Vault в секрете Kubernetes. Развёртывания с дополнительным контейнером Vault Agent или инжектором могут вместо этого использовать token_file. В мультитенантных конфигурациях Vault задавайте маршрутизацию арендаторов в политике Vault и конфигурации развёртывания. OpenClaw не требует фиксированных точки монтирования, роли или пути: каждая среда Gateway может задавать собственные OPENCLAW_VAULT_KV_MOUNT, OPENCLAW_VAULT_AUTH_ROLE и идентификаторы SecretRef. Если один общий Gateway должен одновременно разрешать данные разных пользователей Vault, используйте вручную настроенных поставщиков exec, оборачивающих разные среды аутентификации, либо разделите арендаторов между средами Gateway с отдельными переменными окружения Vault.

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