Plugin guides

Брокер секретов 1Password

Брокер секретов 1Password

Встроенный плагин onepassword предоставляет агентам единый инструмент с управлением политиками для чтения заданного набора полей 1Password. По умолчанию он отключён и не выполняет никаких действий, пока не будет указан plugins.entries.onepassword.config.

Это инструмент агента, а не провайдер SecretRef. Он не внедряет переменные окружения и не разрешает секреты конфигурации OpenClaw.

Модель безопасности

  • Только аутентификация с помощью сервисной учётной записи. Токен хранится в локальном файле учётных данных и никогда не принимается в openclaw.json.
  • Только заданный реестр. Агенты могут перечислять настроенные идентификаторы, но плагин никогда не просматривает содержимое хранилища 1Password.
  • Политика auto, approve или deny для каждого идентификатора.
  • Разрешения имеют срок действия. Кэшированное значение никогда не обходит текущую политику.
  • Каждая попытка доступа записывается в общее состояние SQLite OpenClaw. Строки аудита содержат указанную причину; не включайте в причины конфиденциальные данные. Брокер никогда не копирует полученное значение или сервисный токен в строку аудита.
  • После завершения текущего выполнения инструмента механизм сохранения транскрипта, принадлежащий OpenClaw, заменяет успешно полученное значение get отредактированными метаданными.
  • Во время этого выполнения значение доступно модели. Если модель скопирует его в последующий вызов инструмента или ответ, такая отдельная запись не обрабатывается перехватчиком сохранения этого плагина. Используйте узкие политики и не просите модель повторять значение.
  • При каждом промахе кэша плагин однократно вызывает op. Он не повторяет запросы при ограничении частоты или других сбоях.

Предоставьте сервисной учётной записи доступ на чтение только к хранилищам и элементам, зарегистрированным в конфигурации плагина.

Перед началом работы

Вам потребуются:

  • CLI 1Password (op), установленный на хосте Gateway
  • сервисная учётная запись 1Password с доступом к выбранным элементам
  • отдельный файл токена сервисной учётной записи

Включите встроенный плагин:

bash
openclaw plugins enable onepassword

Создайте каталог и файл токена в каталоге состояния OpenClaw:

bash
mkdir -p ~/.openclaw/credentials/onepasswordchmod 700 ~/.openclaw/credentials/onepasswordprintf '%s' "$OP_SERVICE_ACCOUNT_TOKEN" > \  ~/.openclaw/credentials/onepassword/service-account-tokenchmod 600 ~/.openclaw/credentials/onepassword/service-account-tokenunset OP_SERVICE_ACCOUNT_TOKEN

Если задан OPENCLAW_STATE_DIR, замените ~/.openclaw этим каталогом. Плагин однократно предупреждает, если файл токена доступен группе или другим пользователям для чтения либо записи.

Настройка зарегистрированных секретов

Добавьте конфигурацию плагина в openclaw.json:

jsonc
{  "plugins": {    "entries": {      "onepassword": {        "enabled": true,        "config": {          "vault": "Automation",          "defaultPolicy": "approve",          "cacheTtlSeconds": 300,          "grantTtlHours": 720,          "opTimeoutMs": 15000,          "items": {            "repository-token": {              "item": "Repository automation token",              "field": "credential",              "policy": "approve",              "description": "Token for repository automation",            },            "model-key": {              "item": "Model provider key",              "vault": "Agent credentials",              "policy": "auto",            },          },        },      },    },  },}

Идентификаторы используют строчные буквы, цифры и дефисы, начинаются с буквы или цифры и содержат не более 64 символов. Реестр может содержать до 32 идентификаторов; описания могут содержать до 200 символов. field принимает одну метку или идентификатор поля, не должен содержать запятую и по умолчанию имеет значение credential. Значение vault на уровне элемента переопределяет хранилище по умолчанию. В opBin можно указать абсолютный путь к исполняемому файлу op; в противном случае плагин разрешает op из PATH. Названия элементов не должны начинаться с дефиса.

Использование инструмента агента

Имя инструмента — onepassword.

Выведите зарегистрированные идентификаторы:

json
{ "action": "list" }

Результат содержит только идентификатор, описание, политику и признак активности постоянного разрешения. Он никогда не содержит секретное значение и не обращается к 1Password.

Запросите один секрет:

json
{  "action": "get",  "slug": "repository-token",  "reason": "Authenticate the requested repository operation"}

reason обязателен, не должен быть пустым и ограничен 300 символами. Успешный запрос get возвращает значение, настроенный идентификатор, название элемента и метку поля.

Уровни политик и подтверждения

  • auto: немедленно получить значение и зарегистрировать запрос в журнале аудита.
  • deny: заблокировать запрос и зарегистрировать его в журнале аудита.
  • approve: использовать неистёкшее постоянное разрешение или запросить у человека однократное разрешение, постоянное разрешение либо отказ.

Однократное разрешение допускает только текущий вызов инструмента. Постоянное разрешение записывает в SQLite разрешение для этого агента и идентификатора; другим агентам необходимо получить собственное подтверждение. OpenClaw предлагает постоянное разрешение только тогда, когда вызывающая сторона имеет конкретную идентичность агента. Срок действия разрешения истекает через grantTtlHours, по умолчанию — через 720 часов. Если подтверждение не получено или истекло время ожидания, запрос отклоняется; максимальное время ожидания подтверждения составляет 600 секунд. Плагин хранит до 1 024 постоянных разрешений; при достижении этого предела самое старое разрешение удаляется, и его агент должен подтвердить следующий доступ.

Срок хранения во внутреннем кэше по умолчанию составляет 300 секунд, а его размер ограничен настроенным реестром идентификаторов. Чтобы отключить кэш, задайте для cacheTtlSeconds значение 0. Политика проверяется перед каждым поиском в кэше, а попадания в кэш регистрируются в журнале аудита. Перезагрузка конфигурации во время выполнения вступает в силу на каждой границе проверки политики и выполнения; отключение плагина либо удаление, запрет или переназначение идентификатора аннулирует ожидающие разрешения и кэшированные значения.

Просмотр состояния и истории аудита

Покажите готовность и статистику реестра:

bash
openclaw onepassword status

Команда сообщает, существует ли файл токена, был ли разрешён op и по какому пути, количество зарегистрированных элементов и количество элементов для каждой политики. Она никогда не читает и не выводит токен или секретные значения.

Покажите 50 последних строк аудита:

bash
openclaw onepassword auditopenclaw onepassword audit --limit 100

Строки расположены от новых к старым и содержат метку времени, агента, идентификатор, результат и сокращённую причину. Причина сохраняется в указанном виде; брокер никогда не добавляет полученное значение в журнал аудита.

Поведение CLI 1Password

При каждом промахе кэша выполняется op item get с настроенными элементом, хранилищем и точным селектором поля, выводом JSON, ограниченным временем ожидания и --cache=false. Дочерний процесс получает только это поле, а не весь элемент. В окружении дочернего процесса присутствуют только OP_SERVICE_ACCOUNT_TOKEN и HOME.

Плагин выполняет одну попытку. Ошибки RATE_LIMITED следует обрабатывать ожиданием перед последующим запросом агента; плагин не создаёт автоматический цикл повторных попыток. Другие стабильные коды ошибок позволяют различать отсутствие токенов или исполняемых файлов, отсутствие элементов или полей, сбои аутентификации, превышение времени ожидания и другие сбои op.

Was this useful?
On this page

On this page