Рецепт: разбор least-privilege drift
Цель: превратить результат drift — разрыв между тем, что агенты могут делать, и тем, что они по наблюдениям делают, — в решения, на регулярной основе, пока диф не утихнет.
1. Вытяните drift
Заголовок раздела «1. Вытяните 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 | наблюдается, но связь агент↔идентичность не разрешена | проблема идентичности, а (пока) не безопасности |
2. Разберите каждый класс
Заголовок раздела «2. Разберите каждый класс»Unexpected access — прочитайте оси честности ребра, прежде чем действовать:
attribution_tier: firm+coverage_tier: clean— это находка наивысшего качества, какую вы можете получить: конкретная идентичность обратилась к конкретному ресурсу, и собственный аудит хранилища это классифицировал. Решите: если доступ легитимен, объявите грант (политикой или привязкой), чтобы карта отражала намерение; если нет — отзовите лежащий в основе доступ и трактуйте это как инцидент.approximateв атрибуции означает, что доступ произошёл, но кто — это общий credential. Не тратьте расследование на «какой это был агент» — устойчивое исправление это идентичность на каждого агента, а до тех пор ребро честно говорит, чего оно не может доказать.- Ребро, опирающееся только на подсказку
mcp_annotation, не является доказательством — подсказка не доверяется по спецификации. Подтвердите её наблюдаемым источником, прежде чем что-либо решать.
Unused grants — это избыточное провижининг, найденный даром: каждый является кандидатом на отзыв, с оговоркой, что отсутствие наблюдения значимо лишь там, где есть покрытие — проверьте уровень покрытия ресурса, прежде чем радоваться (многоуровневое покрытие).
Reconciliation pending направляется в бэклог идентичностей: подключите или исправьте источник реестра, который должен привязать этот credential, и ребро разрешится на следующем проходе.
3. Решите, зафиксируйте, перепроверьте
Заголовок раздела «3. Решите, зафиксируйте, перепроверьте»Принимайте решение там, где оно управляется: объявляйте гранты как код (Terraform) или через управляемый API, ставьте рискованное направление за одобрение и позвольте ledger зафиксировать, кто что решил. Затем снова вытяните drift: сверенные рёбра выпадают из дифа — остаются только настоящие разрывы. Эта сходимость и есть весь смысл; демо-estate показывает её в миниатюре (quickstart).
В консоли панель Permitted vs observed в Access map — это данный рецепт, отрисованный вживую.
Разбор drift работает как короткий еженедельный цикл плюс канал оповещений для класса с высоким сигналом (firm + clean неожиданные записи). Направляйте такие находки своему дежурному через адресат уведомлений, а не ждите еженедельного прохода.