Перейти к содержимому
Hogin Hogin
Назад

Guardrails для AI SRE-агентов: как разрешать автоматизацию, не теряя контроль

7 мин чтения

AWS DevOps Agent и Azure SRE Agent — оба в GA с марта 2026 года — умеют находить root cause инцидента быстрее любого дежурного инженера. Но ни один из вендоров не разрешает им напрямую откатывать деплой, рестартовать под или скейлить продакшн: между диагнозом агента и реальным изменением почти везде стоит человек, нажимающий кнопку. Разбираемся, как спроектировать этот approval gate самостоятельно — поверх уже работающего incident-пайплайна, а не в ожидании, что вендор соберёт его за вас.

Содержание

Открыть содержание

Что уже умеют AI SRE-агенты

AWS DevOps Agent вышел в GA 31 марта 2026-го, Azure SRE Agent — 10 марта 2026-го (InfoQ). У обоих одна и та же рабочая модель: агент подписывается на алерты, коррелирует их с последними деплоями, читает логи и трейсы, формулирует вероятный root cause и предлагает конкретное действие — но production-изменения категории «рестарт, откат, скейлинг» всё ещё идут через явное подтверждение человека. PagerDuty параллельно готовит MCP-фабрику, чтобы несколько таких агентов от разных вендоров подключались к одному инцидент-пайплайну через общий протокол, а не через десяток частных интеграций.

Мы уже разбирали в целом, что такое AI SRE-агент и где он ломается — какие данные ему нужны, какие права давать нельзя в принципе. Этот текст — не повтор того разбора, а следующий шаг: как именно встроить approval gate в уже существующий on-call процесс, если агент (свой или вендорский) у вас уже есть или появится в ближайшее время.

Три уровня автономности

Прежде чем проектировать гейт, полезно разложить «автономность» на уровни — потому что именно между вторым и третьим находится вся суть guardrail-архитектуры.

Три уровня автономности: read-only triage, предложенный фикс, auto-remediation

Большая часть заявленной пользы AI SRE 2026 года реализуется уже на первых двух уровнях: диагностика, которая раньше занимала 20–30 минут ручной корреляции логов и графиков, сжимается до секунд. Третий уровень добавляет скорость реакции, но именно он требует настоящей guardrail-инженерии — и именно на границе между «предложил» и «выполнил» нужен approval gate.

Approval gate поверх существующего on-call инструмента

Ключевое архитектурное решение — не встраивать одобрение в код самого агента, а вынести его в тот инструмент, где дежурный и так работает: Slack, PagerDuty, Opsgenie. Тогда approval gate бесплатно наследует то, что в этих системах уже настроено — RBAC, on-call расписание, историю сообщений как готовый аудит-лог.

Approval gate: агент публикует предложение, executor-бот выполняет его отдельно от агента

Из этого вытекают конкретные архитектурные требования:

Что логировать для аудита

Approval gate без аудита — просто более медленная версия auto-remediation с лишним кликом. Ценность всей конструкции — в том, что после инцидента можно точно восстановить цепочку решений:

Граница: что никогда не должно идти без approval

Даже если agent показывает стабильно высокую точность диагнозов, есть категории действий, которые не стоит переводить на auto-remediation вообще, независимо от истории одобрений:

Эти категории объединяет одно: цена ошибочного автоматического действия здесь не «пришлось откатить деплой», а «данные потеряны» или «доступ скомпрометирован» — асимметрия, которую никакой процент точности агента не компенсирует.

Сравнение: без гейта и с гейтом

Без approval gateС approval gate
Кто выполняет изменениесам агентexecutor с отдельной узкой ролью
Доступ агента к продакшенупрямойникакого
Одобрениенеявное (доверие модели)явное действие конкретного человека
Аудит-логлоги агента (могут быть неполными)диагноз + одобряющий + команда + исход
Риск при ошибочном диагнозенемедленное неверное действиеостановлено на этапе предложения
Скорость на верных диагнозахмаксимальнаясекунды на реакцию дежурного

Что нужно, чтобы собрать минимальный approval gate

Понадобится: канал инцидентов в Slack, incoming webhook для публикации предложений от агента, и отдельный сервисный аккаунт в кластере — не тот, под которым работает сам агент.

Сначала — узкая RBAC-роль для executor’а, которая может делать ровно то, что нужно для отката деплоя, и ничего больше:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: sre-agent-executor
  namespace: prod
rules:
  - apiGroups: ["apps"]
    resources: ["deployments", "replicasets"]
    verbs: ["get", "list", "watch", "patch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: sre-agent-executor-binding
  namespace: prod
subjects:
  - kind: ServiceAccount
    name: sre-agent-executor
    namespace: prod
roleRef:
  kind: Role
  name: sre-agent-executor
  apiGroup: rbac.authorization.k8s.io

Дальше — исполнитель, который слушает реакции в Slack и запускает kubectl rollout undo только после подтверждения от известного одобряющего:

# упрощённый обработчик Slack Events API
on_reaction_added() {
  local reaction="$1" user="$2" message_ts="$3"

  [[ "$reaction" == "white_check_mark" ]] || return 0
  is_authorized_approver "$user" || return 0

  local proposal
  proposal=$(fetch_proposal_by_ts "$message_ts")   # структурированное предложение агента
  is_proposal_expired "$proposal" && return 0

  log_audit_entry --approver "$user" --diagnosis "$proposal" --ts "$message_ts"

  kubectl --as=system:serviceaccount:prod:sre-agent-executor \
    -n prod rollout undo deployment "$(jq -r .target <<<"$proposal")"
}

Агенту при этом достаточно read-only доступа к observability-стеку и права постить в Slack-канал — kubeconfig от продакшена он не видит вообще.

Как проверить, что всё работает

Убедитесь, что узкая роль действительно узкая — executor может то, что должен, и не может ничего сверх этого:

kubectl auth can-i patch deployments \
  --as=system:serviceaccount:prod:sre-agent-executor -n prod
# yes

kubectl auth can-i delete secrets \
  --as=system:serviceaccount:prod:sre-agent-executor -n prod
# no

Затем прогоните тестовое предложение целиком: агент (или его заглушка) публикует сообщение в Slack, вы реагируете ✅, и в логе executor’а должна появиться запись с вашим именем, точным текстом диагноза и результатом kubectl rollout undo. Если запись появилась без вашей явной реакции — гейт не работает, и это нужно найти до того, как агент начнёт предлагать реальные фиксы на проде.

Итог

Ценность AI SRE-агента 2026 года — не в том, что он умеет действовать сам, а в том, насколько быстрее он ставит диагноз по сравнению с ручной корреляцией логов и графиков. Auto-remediation можно и стоит расширять постепенно, но безопасно это делать только через explicit approval-gate — отдельный executor с узкой ролью, явное подтверждение конкретного человека и полный аудит-след от диагноза до результата, — а не через растущее доверие к точности модели. Доверие к модели меняется от инцидента к инциденту; узкая RBAC-роль и обязательный клик дежурного — нет.


Поделиться:

Следующая статья
Service mesh без sidecar: Cilium Service Mesh рядом с Istio Ambient