Модель безопасности
Olivares AI — это продукт безопасности, который работает внутри собственной инфраструктуры клиента и строит карту того, до чего может дотянуться каждый AI-агент. Это делает его одновременно крайне чувствительным и крайне ценным для атакующего: дефект в этом продукте — это компрометация среды (estate) клиента. Поэтому планка здесь самая высокая, и позиция спроектирована так, чтобы проходить корпоративный пентест и аудит с самого начала, а не упрочняться позже.
Эта страница объясняет позицию (posture) — решения по безопасности, заложенные в дизайн, и почему они именно такие. Она сознательно не пересказывает формальную модель угроз: анализ STRIDE по компонентам и поток данных по границам доверия живут на странице модели угроз. Читайте ту страницу про что может пойти не так и где; читайте эту — про почему архитектура построена так, чтобы это было трудно.
Read-first: низкий асимметричный риск
Заголовок раздела «Read-first: низкий асимметричный риск»Ядро наблюдает; оно не встаёт в разрыв. Карта доступа реконструируется из сигналов, которые среда уже испускает — OpenTelemetry, аудит баз данных, облачные аудит-трейлы и (как некооперативный резервный механизм) eBPF — и коллектор никогда не находится в пути данных агента.
Это решение по безопасности раньше, чем продуктовое. Inline-принуждатель, стоящий перед каждым действием агента, — это единая точка отказа: если он зависнет или упадёт, он может уронить продакшн вместе с собой, и он становится высокоценной целью именно потому, что он в пути. Наблюдатель в режиме read-first несёт противоположный, асимметричный профиль риска. Если коллектор откажет, он перестаёт видеть — он не останавливает агента и не ломает продакшн. Наихудший отказ наблюдателя — это пробел в видимости, а не простой (outage).
То же свойство нейтрализует очевидное уклонение. Коллектор работает как отдельная, привилегированная служба вне контроля агента, так что агент, который отключает собственную телеметрию, не заставляет замолчать коллектор — а резервный механизм eBPF всё равно фиксирует действие на уровне ядра. Известный агент, который внезапно затихает, сам по себе трактуется как сигнал, а не игнорируется.
Минимальные данные: что не хранится, то не утечёт
Заголовок раздела «Минимальные данные: что не хранится, то не утечёт»Граф хранит отношения, а не содержимое. Ребро фиксирует, что агент затронул ресурс, в каком режиме (read / write / readwrite), из какого источника сигнала, с какой уверенностью и когда. Оно не хранит выполненный SQL, тело запроса, секрет или PII внутри них. Где значение нужно только для дедупликации, продукт хранит односторонний хеш, а не само значение.
Руководящий принцип прямолинеен: что не хранится, то не утечёт. Самый чувствительный актив в системе — карта доступа — также является тем, что сознательно построено из наименее чувствительных данных.
Поля, наиболее вероятно несущие секреты или PII (вход инструмента, полная команда), маскируются (redacted) до того, как сохраняются. Маскирование не оставлено на добропорядочность обработчика: движок принуждает его на пути записи, заменяя помеченное чувствительным значение хешем до того, как оно вообще записано, как резервный механизм даже если обработчик забудет. Коллектор читает identity — роль базы данных, имя приложения, IAM-принципал — а не значения учётных данных или полезные нагрузки. Это не сниффер данных.
Непрозрачные, отзываемые токены вместо JWT
Заголовок раздела «Непрозрачные, отзываемые токены вместо JWT»Аутентификация использует непрозрачные bearer-токены, а не JWT. Токен — это случайный дескриптор; вся authority живёт на стороне сервера, привязанная к записи, которой управляет движок. Это выбор позиции. Самодостаточный JWT — это постоянный, проверяемый офлайн носитель утверждений, который неудобно отзывать до истечения срока; непрозрачный токен отзывается немедленно аннулированием его серверной записи, не несёт встроенных утверждений для утечки или недоверия и держит привязку к арендатору (tenant) под контролем движка, а не в подписи, которую держит клиент. Сессионные и API-токены — разные виды, и арендатор разрешается из собственной привязки токена — запрос, чей заголовок арендатора противоречит его токену, отклоняется, а не согласуется.
Никаких учётных данных по умолчанию, одноразовый токен настройки
Заголовок раздела «Никаких учётных данных по умолчанию, одноразовый токен настройки»Самый распространённый провал self-hosted продукта — это учётные данные по умолчанию (default credential). Olivares AI поставляется без них. При первом запуске движок печатает одноразовый токен настройки (setup token) в стандартный вывод; администратор использует его для создания первого пользователя, после чего он израсходован. Нет встроенного аккаунта, нет общего пароля и нечего забыть сменить. (Демо-сид существует только для оценки; он несёт публичный пароль и отказывается привязываться к чему-либо, кроме loopback, так что он никогда не может стать плацдармом в продакшне.)
Авторизация deny-by-default, ABAC-шов, который только ограничивает
Заголовок раздела «Авторизация deny-by-default, ABAC-шов, который только ограничивает»Авторизация — deny-by-default. Ролевой контроль доступа (RBAC) не предоставляет ничего, что ему не сказано явно предоставить. Поверх RBAC лежит шов политики на основе атрибутов (ABAC) — оператор может запустить встроенный чистый Go-движок политик, внешнюю службу политик по HTTP или ничего, всё за одним интерфейсом — и критический инвариант в том, что уровень ABAC может только сужать доступ, но никогда не расширять. Политика может отнять разрешение; она никогда не может предоставить разрешение, которое RBAC уже не разрешил. Этот порядок означает, что неверно настроенная или чрезмерно разрешающая политика не может стать путём эскалации привилегий: худшее, что может сделать плохая политика, — это заблокировать людей, а не впустить их.
Просмотр графа — привилегированное, ограниченное арендатором, аудируемое действие
Заголовок раздела «Просмотр графа — привилегированное, ограниченное арендатором, аудируемое действие»Поскольку карта доступа — это мощный инструмент разведки, дизайн трактует её чтение как привилегированное действие, а не возможность по умолчанию. Оно предоставляется с роли уровня редактора (editor) и выше и никогда недоступно низшей роли наблюдателя (viewer). Каждое чтение ограничено арендатором — один клиент никогда не может видеть среду другого — и каждое чтение записывается в журнал аудита: кто смотрел на карту доступа какого агента и когда. Защита здесь намеренно многослойна: привилегия, изоляция арендаторов и самоаудит вместе, так что даже легитимный доступ к самому чувствительному представлению оставляет подотчётный след.
Здесь же проведена линия ответственного использования продукта. Olivares AI оформлен оборонительно — он помогает защитникам видеть и управлять собственной средой. Это не фреймворк командования и управления (command-and-control), и он не сканирует чужие учётные данные. Эта линия удерживается явной в модели угроз.
Аудит append-only, hash-chained, подписанный — а реальный контроль это внешний экспорт
Заголовок раздела «Аудит append-only, hash-chained, подписанный — а реальный контроль это внешний экспорт»Журнал аудита — только для добавления (append-only) и сцеплен по хешу (hash-chained): каждая запись несёт хеш предыдущей, так что любое тихое изменение ломает цепочку и обнаруживается. Поверх цепочки движок производит подписанные Ed25519 контрольные точки, так что хвост нельзя переписать без ключа подписи.
Продукт честен о пределе журнала на устройстве (on-box): атакующий с полным контролем над директорией данных и ключом на устройстве в принципе мог бы заново подписать поддельную цепочку. Подпись на каждое событие защищает от компрометации только базы данных — инъекция, украденная резервная копия или реплика, обход row-level-security — и от удаления контрольных точек; она сама по себе не защищает от полной компрометации хоста.
Поэтому реальный контроль защиты от подделки — внешний. Журнал экспортируется в
систему WORM/SIEM, которой управляет клиент, в стандартных форматах (cef,
leef, syslog, otlp, otlp_envelope, otlp_log_record, ocsf),
неся порядковый номер, предыдущий хеш, хеш и
подпись и никогда не PII. Как только копия живёт в неизменяемом хранилище вне
продукта, атакующий, скомпрометировавший хост Olivares, не может дотянуться обратно и
переписать то, что SIEM уже держит. Именно эта неизменяемая внешняя копия — а не
цепочка на устройстве сама по себе — это то, что просит корпоративный аудитор, и то,
чего нативная телеметрия не даёт.
TLS по умолчанию, без plaintext-отката, mTLS для удалённых коллекторов
Заголовок раздела «TLS по умолчанию, без plaintext-отката, mTLS для удалённых коллекторов»Транспорт зашифрован по умолчанию и отказывает закрыто (fails closed). TLS включён, и нет тихого отката на plaintext — соединение, которое нельзя защитить, отклоняется, а не понижается. Plaintext-режим существует строго для разработки на localhost и должен быть запрошен явно; он никогда не является значением по умолчанию и никогда не является путём для продакшна.
В распределённой топологии удалённые коллекторы push’ат в центральное ядро (на продакшн-хосте нет входящего слушателя, что держит поверхность открытых портов коллектора на нуле), и этот канал может требовать взаимный TLS (mTLS) с проверенным клиентским сертификатом. Шифрование в покое обеспечивается развёртыванием — полнодисковое, на уровне файловой системы или базы данных — а не прагмой на уровне продукта, со строгими правами доступа к файлам директории данных.
Лицензия — только аттестация; открытое ядро никогда не ограничивается
Заголовок раздела «Лицензия — только аттестация; открытое ядро никогда не ограничивается»Коммерческая лицензия проверяется офлайн подписью Ed25519, и в открытом (AGPL) ядре это аттестация, а не ограничитель функций (feature gate): ничто в открытом продукте никогда не отключается по результату проверки лицензии. Коммерческие надстройки лицензируются на оплаченный срок — право заканчивается вместе со сроком, — но любое следствие этого является локальным офлайн-решением коммерческой сборки; удалённого kill switch не существует, и проверка лицензии не обращается к нам. А вот загрузка того, что вы оплатили, обращается: подписка — это учётные данные, с которыми получают коммерческие надстройки, их обновления и исправления; это модель SUSE/Novell, описанная в разделе самостоятельное размещение. Это особенно важно для air-gapped случая: продукт должен продолжать выполнять свою работу по безопасности — наблюдать, записывать, аудировать — независимо от состояния лицензии, потому что контроль безопасности, который тихо деградирует при проблеме с лицензией, сам является уязвимостью. Отзыв обрабатывается через истечение подписки, а не через выведение из строя работающего движка.
Self-hosted: клиент решает, что выходит за его периметр
Заголовок раздела «Self-hosted: клиент решает, что выходит за его периметр»Самое сильное структурное свойство дизайна в том, что обязательной телеметрии нет,
а исходящий трафик управляющей плоскости по умолчанию отсутствует. За периметр клиента
выходит только то, что сам клиент настроил для передачи наружу: обращения к API его
моделей, подключённые им выходы SIEM/webhook и внешний поставщик эмбеддингов, если клиент
его настроил. Olivares AI работает на собственных хостах клиента;
плоскость данных (коллекторы) всегда работает на инфраструктуре клиента; и нет
телеметрии-домой (telemetry-home) — ничто не отправляется в Olivares AI как побочный
эффект работы. К поставщику обращаются только тогда, когда клиент сам что-то у него
запрашивает — olivares upgrade или загрузка коммерческих надстроек и их обновлений по
подписке, — и вендор не видит карту доступа клиента.
Это прямой, защитимый ответ на требования GDPR и резидентности данных: каждый переход через периметр подготовлен клиентом, поэтому именно клиент определяет и подтверждает резидентность, а не получает гарантию от поставщика. И это делает топологию air-gapped первоклассным развёртыванием — всё локально, нулевой исходящий трафик (zero egress), офлайн-лицензия — а не запоздалой мыслью, для сред, которые должны работать вообще без исходящей сети. См. руководства по self-hosting и установке в air-gap.
Почему эти решения держатся вместе
Заголовок раздела «Почему эти решения держатся вместе»Ни один из этих выборов не стоит в одиночку. Read-first держит продукт вне радиуса поражения тех самых систем, за которыми он наблюдает. Минимальные данные сжимают то, что компрометация продукта вообще могла бы раскрыть. Непрозрачные токены, отсутствие учётных данных по умолчанию, deny-by-default RBAC и ABAC-шов, который только ограничивает, означают, что authority мала, отзываема и невозможна для случайного расширения. Сцепленный по хешу, подписанный, экспортируемый вовне журнал делает собственную честность продукта проверяемой, а не просто обещанной. А self-hosting означает отсутствие обязательной телеметрии и исходящего трафика управляющей плоскости по умолчанию. За периметр клиента выходит только то, что сам клиент настроил для передачи наружу: API его моделей, подключённые им выходы SIEM/webhook и внешний поставщик эмбеддингов, если клиент его настроил. Позиция — это аргумент безопасности; модель угроз — это там, где каждое из этих решений проверяется против конкретной угрозы.