Каждое ребро в карте доступа несёт два независимых факта: разрешён ли доступ (permitted) и был ли он наблюдаем (observed). Разница между этими двумя слоями — это ключевое отличие, которое превращает статический граф в находку.
Два слоя на одном ребре
Карта не хранит отдельный «граф политик» и «граф телеметрии». Каждое ребро — это единственное отношение (источник к ресурсу, типизированное как чтение или чтение-запись), которое несёт оба флага:
- Разрешённый — грант или политика разрешают этот доступ. Источник сигнала — объявленная политика.
- Наблюдаемый — доступ был фактически замечен, получен из телеметрии и нативного аудита (OpenTelemetry от кооперативных агентов, PostgreSQL pgAudit, облачные журналы аудита, бэкстоп на уровне ядра eBPF).
Один нюанс, важный для честности: не разрешённый означает «не известно как разрешённый», а не «запрещённый». Карта записывает то, что может доказать из объявленных грантов; отсутствие гранта — это пробел для исследования, а не вердикт применения.
Различие: где ценность
Дрейф наименьших привилегий — это просто набор рёбер, где два флага не совпадают. Он делится на две операционно различные находки:
- Неожиданный доступ — наблюдаемый, но не разрешённый. Агент обратился к ресурсу, который не покрыт грантом. Это релевантная для безопасности половина, представленная как главная находка.
- Неиспользуемые гранты — разрешённые, но никогда не наблюдаемые. Грант, который никто не задействовал. Это ваш конкретный список очистки по принципу наименьших привилегий, а не расплывчатое напоминание «проверьте ваш IAM».
Рёбра, где оба флага совпадают — разрешённые и использованные, или ни то ни другое — это скучное, ожидаемое устойчивое состояние. Различие — это маленький, действенный срез между ними.
Честность внутри различия
Наивное различие порождает ложные находки, поэтому сверка намеренно консервативна.
Ожидание сверки
Аудит привязывает доступ к учётным данным или роли; грант написан для
идентичности; кооперативный сигнал указывает агента или сессию. Когда карта доступа ещё не может
надёжно связать действующего агента с идентичностью, для которой написан его грант, она
не может доказать, что доступ разрешён — но не должна и выносить его в заголовок как
нарушение. Такие рёбра помечаются reconciliation_pending: честная
неопределённость, а не выдуманная находка. Они разрешаются чисто, когда идентификация по агенту
связывает учётные данные с агентом.
Гранты на ресурсы, за которыми никто не наблюдает
Некоторые гранты существуют на видах ресурсов, у которых нет сборщика на стороне наблюдения — никто не отслеживает, кто фактически использовал каталог LDAP или назначение приложения IdP. Для них «никогда не наблюдалось» — это ожидаемое устойчивое состояние, а не свидетельство избыточного предоставления. Они исключены из основного списка неиспользуемых грантов, а не раздувают его шумом.
Покрытие и атрибуция по-прежнему привязаны к ребру
Различие наследует многоуровневую точность базовых
рёбер. На opaque хранилище (Redis, SQLite, D1) нет пассивного сигнала чтения/записи
вообще, поэтому отсутствие наблюдаемого ребра — не доказательство того, что доступа
не было — это тишина. Аналогично, общий сервисный аккаунт сводит атрибуцию к
approximate. Различие никогда не представляет находку низкой уверенности как надёжную.
Когда различие вычисляется по частичному окну (очень большое окружение, превышающее границу страницы), результат явно помечается как частичный, а не представляется как авторитетный.
Детективный, а не на пути
Создание этого различия — это внеполосная, детективная деятельность. Плоскость управления работает на вашей собственной инфраструктуре (и может быть изолирована от сети); она наблюдает через логи, OpenTelemetry и нативный аудит и не находится на пути запросов между агентом и его ресурсами. Сбой сборщика никогда не прерывает продакшен-трафик.
Из этого следуют два вывода. Во-первых, различие — это отчёт, а не шлюз: оно показывает то, что уже произошло. Там, где продукт действует на основе находки, он делает это в режиме запрета по умолчанию и по запросу — никогда как универсальный исполнитель. Во-вторых, чтение различия само по себе является привилегированным, ограниченным по тенанту и полностью аудируемым действием: акт инспекции кто-может-обратиться-к-чему релевантен для разведки, и чтение записывается в журнал только для добавления перед возвратом любого ребра.
Вот почему различие безопасно запускать на чувствительных окружениях: карта хранит отношение — источник, ресурс, чтение/запись, источник сигнала, уверенность, временные метки — никогда полезные нагрузки, тела SQL, секреты или персональные данные, проходящие через ребро. То, что не хранится, не может утечь.
Связанные материалы
- Карта доступа чтение/запись — граф, по которому работает это различие.
- Точность — как выводятся уровни покрытия и атрибуции.
- Управление и согласование — действия на основе находки.
- Обзор карты доступа — наложение разрешённого и наблюдаемого на реальном захвате.