Skip to content

Безопасность

Runne Engine спроектирован вокруг default deny для защищённых побочных эффектов, принципа наименьших привилегий с ослаблением (attenuation) возможностей и fail-closed применения. Эта страница кратко описывает модель; полный контракт лежит в репозитории рантайма в docs/05-security/.

Гранты возможностей и одобрения

  • Capability — именованная способность (fs:read, fs:write, process:exec, network:outbound, …). Capability Grant — неизменяемый, версионируемый грант с точным действием, нормализованным ресурсом, ограничениями, скоупом, сроком действия и лимитом делегирования.
  • Операция разрешена только когда активный грант полностью покрывает субъект, действие, ресурс, скоуп и текущую эпоху политики/отзыва. Неизвестное действие/ресурс/ограничение/версия → deny.
  • Дочерний субъект (делегированный TaskRun, плагин, MCP-сервер, адаптер) может держать только ослабленные (attenuated) гранты — никогда не шире, чем у его эмитента.
  • Approval — это решение человека, а не грант. После одобрения capability engine переоценивает текущую политику, и результат всё равно может быть deny. Гранты, порождённые одобрением, привязаны к операции и короткоживущие.

Sandbox и изоляция процессов

  • Sandbox-хелпер (runne-sandbox-helper) и платформенные sandbox-бэкенды ограничивают возможности агента по файловой системе, процессам и сети.
  • Профили sandbox варьируются от read-only и workspace-coding до plugin-host и mcp-local. trusted-admin остаётся короткоживущим, требует сильной аутентификации и причины и несёт обязательный аудит.
  • Плагины и MCP-серверы работают в отдельных процессах (ADR-0007); каждый запрос проходит через capability engine со свежей привязкой вызова (invocation binding) и одноразовым разрешением (permit).
  • Если sandbox, политика или слой аудита недоступны или неизвестны, применение fails closed — операция отклоняется.

Credential-сервис и macOS Keychain

  • runne-credential-service и runne-credential-service-core работают с учётными данными провайдеров (openai, deepseek). CLI задаёт credential только из не-TTY stdin — никогда через argv, переменные окружения или пути к файлам.
  • На macOS credential-сервис хранит элементы в Data Protection Keychain за ACL — runne-macos-keychain-acl применяет контракт access-group (758F9Z45SR.com.runne.credential-service) с kSecUseDataProtectionKeychain=true, kSecAttrAccessibleWhenUnlockedThisDeviceOnly=true и kSecAttrSynchronizable=false.
  • runne-secure-store хранит секреты в состоянии покоя (at rest); доменные события и checkpoint-ы несут только SecretRef, никогда само значение секрета.

Сопряжение (pairing) и платформенная идентичность

  • runne-pairing-crypto предоставляет криптографию сопряжения для аутентификации хостов и клиентов.
  • Платформенная идентичность устанавливается через нативные примитивы — runne-macos-xpc (транспорт XPC-сервиса), runne-macos-process-identity, runne-sqlite-handle-identity, runne-sqlite-native-identity и runne-windows-native-handle привязывают идентичность к OS-уровневым handle.

Что определяет репозиторий

docs/05-security/ содержит целевой контракт безопасности (все ready): модель безопасности, модель угроз, границы доверия, модель возможностей, движок разрешений, модель одобрений, sandbox-профили, политику файловой системы/процессов/сети, управление секретами, доверие MCP, доверие плагинов, требования аудита и тестирование безопасности. Обязательный путь побочного эффекта:

intent → capability decision/grant → budget reservation → gateway
       → sandbox/process enforcement → side-effect evidence → audit

Сбой аудита накладывает вето на защищённый эффект — никакого защищённого эффекта без durable-доказательства аудита.

Связанное