AI-агенты и автоматизация Спроектировать внедрение

Права доступа, аудит и безопасность AI-агента

AI-агент — не просто «умный бот», а автономная система с правами и последствиями. Без правильной архитектуры безопасности он может принять решение, которое нарушит регуляторику, утечёт данные или нанесёт репутационный ущерб.

Что такое права доступа и аудит в контексте AI-агента?

Права доступа — набор политик, определяющих, какие действия агент может выполнять от имени пользователя или системы (например: «читать почту», «создавать задачи», «оплачивать счёты»).
Аудит — система логирования всех действий агента: входные данные, вызовы инструментов, решения, ошибки и результаты. Аудит обеспечивает прозрачность, отслеживаемость и возможность восстановления после сбоя.

Важно: права и аудит — это не «дополнение», а часть архитектуры агента. Без них агент не может быть внедрён в production-среды корпоративного бизнеса.

Архитектурный контур: как связаны права, аудит и безопасность

flowchart TD
    A[Пользователь / Система] -->|Запрос| B[Router / Auth Gateway]
    B --> C{Права?}
    C -->|Да| D[Agent Core]
    C -->|Нет| E[Reject + Log]
    D --> F[Tool Executor]
    F --> G[Audit Logger]
    G --> H[Log Storage]
    D --> I[Fallback / Human Review]
    I --> G
    H --> J[Compliance / Review UI]

Пример: права доступа в агенте для бухгалтерии

Агент обрабатывает счета. Его права:

  • read:invoices — читать входящие счета
  • approve:invoices — подтверждать оплату (с лимитом ≤ 100 000 ₽)
  • create:payment_order — создавать платёжку в СБП
  • нет delete:invoices — удаление запрещено
  • нет approve:invoices:amount:gt:100k — для сумм >100 000 требуется Human-in-the-loop

Права задаются в agent_manifest.json и проверяются на уровне runtime policy engine перед вызовом инструментов.

Псевдокод: проверка прав перед вызовом инструмента

function executeTool(agent, toolName, params) {
  // 1. Получить текущие права агента
  const agentRights = getAgentRights(agent.id);

  // 2. Проверить, есть ли право на инструмент и параметры
  if (!canUseTool(agentRights, toolName, params)) {
    auditLog({
      type: 'RIGHTS_VIOLATION',
      agentId: agent.id,
      tool: toolName,
      params: redact(params),
      reason: 'missing_permission'
    });
    throw new PermissionError(`Tool ${toolName} not allowed`);
  }

  // 3. Выполнить инструмент
  const result = callTool(toolName, params);

  // 4. Залогировать результат
  auditLog({
    type: 'TOOL_EXECUTED',
    agentId: agent.id,
    tool: toolName,
    status: 'success',
    resultHash: hash(result)
  });

  return result;
}

Что логировать в аудите: пример структуры события

ПолеОписаниеПример
event_idУникальный ID события"evt_7f3a2b1c"
agent_idИдентификатор агента"agent_acme_buh"
timestampISO 8601"2025-04-10T14:32:11Z"
actionТип действия"tool_call"
toolИмя инструмента"create_payment_order"
input_hashХеш входных данных (без PII)"sha256:9a8b..."
output_hashХеш результата"sha256:c3d4..."
decisionРешение агента (опционально)"approve_invoice_#4421"
review_statusСтатус проверки человеком"pending" | "approved" | "rejected"

Типичные ошибки и риски

  • Права по умолчанию «всё разрешено» — агент может случайно удалить данные или выполнить платёж без ограничений.
  • Логирование PII-данных в открытом виде — нарушение GDPR/ФЗ-152, штрафы и утечки.
  • Отсутствие аудита решений — невозможно доказать, что агент действовал корректно при споре.
  • Нет fallback-логики при сбое аудита — если логгер недоступен, агент продолжает работу → риск потери следов.
  • Права не привязаны к контексту — агент может использовать «право на создание счёта» в неожиданном сценарии (например, фейковый счёт для себя).

Чеклист безопасности агента

  • [ ] У каждого агента — уникальный набор прав (не «все-всё»)
  • [ ] Права проверяются на уровне runtime (не только в конфиге)
  • [ ] Аудит логирует: действия, решения, ошибки, fallback-статус
  • [ ] PII и конфиденциальные данные хэшируются или удаляются из логов
  • [ ] Агент не может отключить аудит или изменить права
  • [ ] Для критичных действий — Human-in-the-loop с записью решения
  • [ ] Аудит хранится в неизменяемом хранилище (например, S3 + WORM)
  • [ ] Есть UI/API для просмотра аудита и фильтрации по агенту/дате/действию