Перейти к содержимому

Машинный перевод. Авторитетным источником является английская версия; проверка носителем языка ещё не выполнена.

Основные концепции

Разрешённый и наблюдаемый

Различие в основе карты доступа — что агенту предоставлено vs что он фактически делает — выявление неожиданного доступа и неиспользуемых грантов

Обновлено:

Каждое ребро в карте доступа несёт два независимых факта: разрешён ли доступ (permitted) и был ли он наблюдаем (observed). Разница между этими двумя слоями — это ключевое отличие, которое превращает статический граф в находку.

Два слоя на одном ребре

Карта не хранит отдельный «граф политик» и «граф телеметрии». Каждое ребро — это единственное отношение (источник к ресурсу, типизированное как чтение или чтение-запись), которое несёт оба флага:

  • Разрешённый — грант или политика разрешают этот доступ. Источник сигнала — объявленная политика.
  • Наблюдаемый — доступ был фактически замечен, получен из телеметрии и нативного аудита (OpenTelemetry от кооперативных агентов, PostgreSQL pgAudit, облачные журналы аудита, бэкстоп на уровне ядра eBPF).

Один нюанс, важный для честности: не разрешённый означает «не известно как разрешённый», а не «запрещённый». Карта записывает то, что может доказать из объявленных грантов; отсутствие гранта — это пробел для исследования, а не вердикт применения.

Различие: где ценность

Дрейф наименьших привилегий — это просто набор рёбер, где два флага не совпадают. Он делится на две операционно различные находки:

  • Неожиданный доступнаблюдаемый, но не разрешённый. Агент обратился к ресурсу, который не покрыт грантом. Это релевантная для безопасности половина, представленная как главная находка.
  • Неиспользуемые грантыразрешённые, но никогда не наблюдаемые. Грант, который никто не задействовал. Это ваш конкретный список очистки по принципу наименьших привилегий, а не расплывчатое напоминание «проверьте ваш IAM».

Рёбра, где оба флага совпадают — разрешённые и использованные, или ни то ни другое — это скучное, ожидаемое устойчивое состояние. Различие — это маленький, действенный срез между ними.

Честность внутри различия

Наивное различие порождает ложные находки, поэтому сверка намеренно консервативна.

Ожидание сверки

Аудит привязывает доступ к учётным данным или роли; грант написан для идентичности; кооперативный сигнал указывает агента или сессию. Когда карта доступа ещё не может надёжно связать действующего агента с идентичностью, для которой написан его грант, она не может доказать, что доступ разрешён — но не должна и выносить его в заголовок как нарушение. Такие рёбра помечаются reconciliation_pending: честная неопределённость, а не выдуманная находка. Они разрешаются чисто, когда идентификация по агенту связывает учётные данные с агентом.

Гранты на ресурсы, за которыми никто не наблюдает

Некоторые гранты существуют на видах ресурсов, у которых нет сборщика на стороне наблюдения — никто не отслеживает, кто фактически использовал каталог LDAP или назначение приложения IdP. Для них «никогда не наблюдалось» — это ожидаемое устойчивое состояние, а не свидетельство избыточного предоставления. Они исключены из основного списка неиспользуемых грантов, а не раздувают его шумом.

Покрытие и атрибуция по-прежнему привязаны к ребру

Различие наследует многоуровневую точность базовых рёбер. На opaque хранилище (Redis, SQLite, D1) нет пассивного сигнала чтения/записи вообще, поэтому отсутствие наблюдаемого ребра — не доказательство того, что доступа не было — это тишина. Аналогично, общий сервисный аккаунт сводит атрибуцию к approximate. Различие никогда не представляет находку низкой уверенности как надёжную.

Когда различие вычисляется по частичному окну (очень большое окружение, превышающее границу страницы), результат явно помечается как частичный, а не представляется как авторитетный.

Детективный, а не на пути

Создание этого различия — это внеполосная, детективная деятельность. Плоскость управления работает на вашей собственной инфраструктуре (и может быть изолирована от сети); она наблюдает через логи, OpenTelemetry и нативный аудит и не находится на пути запросов между агентом и его ресурсами. Сбой сборщика никогда не прерывает продакшен-трафик.

Из этого следуют два вывода. Во-первых, различие — это отчёт, а не шлюз: оно показывает то, что уже произошло. Там, где продукт действует на основе находки, он делает это в режиме запрета по умолчанию и по запросу — никогда как универсальный исполнитель. Во-вторых, чтение различия само по себе является привилегированным, ограниченным по тенанту и полностью аудируемым действием: акт инспекции кто-может-обратиться-к-чему релевантен для разведки, и чтение записывается в журнал только для добавления перед возвратом любого ребра.

Вот почему различие безопасно запускать на чувствительных окружениях: карта хранит отношение — источник, ресурс, чтение/запись, источник сигнала, уверенность, временные метки — никогда полезные нагрузки, тела SQL, секреты или персональные данные, проходящие через ребро. То, что не хранится, не может утечь.

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

Поиск в документации