Условия и источник
Выберите кластер, namespace, объект привязки и период. Источник истории — audit API, текущее состояние RBAC — отдельный снимок. Для разбора получателей и роли нужно доступное тело операции; Metadata его не содержит. Версию API server и политику фиксируйте отдельно от rbac.authorization.k8s.io/v1. Обновление прав для воспроизведения примера здесь не выполняется.
Как отобрать запись
В копии аудита отберите rolebindings/clusterrolebindings и интересующие create/update/patch/delete. Сохраните auditID, identity, objectRef, стадию и результат. Затем получите разрешённый снимок текущих binding и роли читающими запросами, если он нужен для сравнения. Для patch учитывайте форму изменения: тело патча не обязано быть полным объектом с subjects и roleRef.
Разбор примера
create в примере с 201 иллюстрирует добавление binding readers в namespace demo. user.username — инициатор API, requestObject.subjects — получатели, roleRef — ссылка на роль. Это три разные роли данных. Пример содержит лишь часть объекта и не показывает сами rules роли. По имени read-pods нельзя автоматически заключить, какие действия реально разрешены; необходимо прочитать соответствующий объект роли.
Интерпретация и границы
RoleBinding ограничивает область действия своим namespace, а ClusterRoleBinding относится к кластерной области. При существующей привязке roleRef не меняется обычным update: история перехода к другой роли может содержать удаление и создание. Проверьте результат и все затронутые subjects. Текущее отсутствие binding не доказывает отсутствия прежнего доступа, а текущее присутствие не устанавливает автора без исторического события.
Следующая проверка
Свяжите роль с её правилами и последующими изменениями, затем проверьте ожидаемую роль получателя. Отделите назначение от фактического использования доступа: для чтения Secret или exec нужны соответствующие события. Если есть архив состояния, восстановите временную границу полномочий; при отсутствии архива обозначьте неопределённость. Вывод о нарушении должен опираться на согласованный контекст и операцию, а не название роли.
Если записи нет
Проверьте policy, уровень аудита, подресурс/ресурс, omitStages, backend и период. Если тело отсутствует, уточните, было ли оно вообще предусмотрено, и используйте доступные архивы состояния, не придумывая subjects. Сравните историю audit с SIEM. Текущее чтение RBAC не восстановит удалённую запись; зафиксируйте, какие версии и временные участки остаются неподтверждёнными.