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

Рецепт: разбор least-privilege drift

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

Окно терминала
curl -ks "$BASE/v1/m/accessmap/drift" \
-H "Authorization: Bearer $TOKEN" -H "X-Olivares-Tenant: $TENANT" | python3 -m json.tool

(Или в HCL, для ревью в PR: источник данных Terraform olivares_access_edges с include_drift = trueуправление как кодом.)

В результате три класса, и это разные проблемы:

КлассЗначениеКакой вопрос задать
Unexpected accessнаблюдается, но ни один грант его не покрываетэто недостающий грант или реальное нарушение?
Unused grantвыдан, но никогда не наблюдался в использованиизачем существует это разрешение?
Reconciliation pendingнаблюдается, но связь агент↔идентичность не разрешенапроблема идентичности, а (пока) не безопасности

Unexpected access — прочитайте оси честности ребра, прежде чем действовать:

  • attribution_tier: firm + coverage_tier: clean — это находка наивысшего качества, какую вы можете получить: конкретная идентичность обратилась к конкретному ресурсу, и собственный аудит хранилища это классифицировал. Решите: если доступ легитимен, объявите грант (политикой или привязкой), чтобы карта отражала намерение; если нет — отзовите лежащий в основе доступ и трактуйте это как инцидент.
  • approximate в атрибуции означает, что доступ произошёл, но кто — это общий credential. Не тратьте расследование на «какой это был агент» — устойчивое исправление это идентичность на каждого агента, а до тех пор ребро честно говорит, чего оно не может доказать.
  • Ребро, опирающееся только на подсказку mcp_annotation, не является доказательством — подсказка не доверяется по спецификации. Подтвердите её наблюдаемым источником, прежде чем что-либо решать.

Unused grants — это избыточное провижининг, найденный даром: каждый является кандидатом на отзыв, с оговоркой, что отсутствие наблюдения значимо лишь там, где есть покрытие — проверьте уровень покрытия ресурса, прежде чем радоваться (многоуровневое покрытие).

Reconciliation pending направляется в бэклог идентичностей: подключите или исправьте источник реестра, который должен привязать этот credential, и ребро разрешится на следующем проходе.

Принимайте решение там, где оно управляется: объявляйте гранты как код (Terraform) или через управляемый API, ставьте рискованное направление за одобрение и позвольте ledger зафиксировать, кто что решил. Затем снова вытяните drift: сверенные рёбра выпадают из дифа — остаются только настоящие разрывы. Эта сходимость и есть весь смысл; демо-estate показывает её в миниатюре (quickstart).

В консоли панель Permitted vs observed в Access map — это данный рецепт, отрисованный вживую.

Разбор drift работает как короткий еженедельный цикл плюс канал оповещений для класса с высоким сигналом (firm + clean неожиданные записи). Направляйте такие находки своему дежурному через адресат уведомлений, а не ждите еженедельного прохода.