База знаний

Права доступа и роли: почему агенту нельзя давать все ключи от квартиры

Понятный материал о ролях, доступах и ограничениях для людей, сервисов и ИИ-агентов в рабочих системах.

Опубликовано

Права доступа и роли — это ответ на вопрос «кто что может делать». Когда в систему приходят агенты, боты и интеграции — правильное управление доступом становится критически важным.

Общая картина

Права доступа определяют, кто может читать, писать, удалять и управлять. Роль — набор прав, привязанный к пользователю, агенту или интеграции.

flowchart TD
    A["Админ"] --> B["Полный доступ"]
    C["Редактор"] --> D["Чтение + запись"]
    E["Агент"] --> F["Чтение + запись в ограниченной зоне"]
    G["Читатель"] --> H["Только чтение"]
    I["Интеграция"] --> J["Только нужные операции"]

Принцип минимальных привилегий (least privilege): каждый участник получает только те права, которые нужны для его задачи. Не больше.

Почему агенту нельзя давать все ключи

Агент — это программа, которая выполняет инструкции. Он может ошибиться, неправильно интерпретировать контекст, сработать некорректно на новых данных. Если у него есть доступ ко всему — ошибка может затронуть всё.

Риски при избыточных правах:

  • Случайное удаление — агент удаляет нужные данные, решив, что они не актуальны.
  • Утечка ключа — API-ключ с полным доступом попадает в логи или публичный репозиторий.
  • Каскадная ошибка — агент меняет настройки, которые ломают другие процессы.
  • Несанкционированный доступ — при компрометации агента злоумышленник получает все его права.
⚠️
Правило: агент получает доступ только к тем базам и операциям, которые ему нужны. Всё остальное — закрыто.

Типы ролей

РольЧто можетПример
АдминВсё: создание, удаление, настройка правВладелец проекта
РедакторСоздание и редактирование контентаАвтор блога
Агент / БотЧтение + запись в определённых базахКонтент-агент в Notion
ИнтеграцияТолько нужные операцииWebhook-обработчик
ЧитательТолько просмотрПосетитель сайта

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

Notion

В Notion права управляются на уровне страниц и баз данных. Интеграция (агент или бот) получает доступ только к тем страницам, которые явно расшарены с ней.

API-ключи

API-ключ — это цифровой паспорт агента или интеграции. Он определяет, к каким ресурсам есть доступ. Лучшая практика — отдельный ключ для каждой интеграции с минимальными правами.

База данных

В базах данных (PostgreSQL, Supabase) права настраиваются на уровне таблиц и операций. Агент может иметь право на чтение одних таблиц и запись в другие.

Практические правила

  1. Один ключ — одна интеграция. Не используйте один API-ключ для бота, агента и сайта одновременно.
  2. Минимальные права. Если агенту нужно читать и писать в базу знаний — не давайте ему доступ к настройкам или личным заметкам.
  3. Ротация ключей. Периодически меняйте API-ключи — особенно после увольнения сотрудника, смены подрядчика или подозрения на утечку.
  4. Логирование доступа. Фиксируйте, кто и когда обращался к данным. Это поможет при разборе инцидентов.
  5. Запрет на деструктивные операции. Агент не должен уметь удалять данные, менять права или отзывать ключи.

Как настроить права для агента в Notion

  1. Создайте отдельную интеграцию для каждого агента.
  2. Расшарьте интеграции только нужные страницы и базы.
  3. Не давайте доступ к приватным страницам, настройкам и персональным пространствам.
  4. Проверяйте периодически, какие страницы расшарены.
📌
В Notion права настраиваются на уровне страниц, а не записей в базе. Если вы расшарили базу — агент видит все записи в ней.

Чеклист: права доступа и роли

Каждая интеграция имеет отдельный API-ключ
Агент не имеет доступа к личным и административным страницам
Права соответствуют принципу минимальных привилегий
Деструктивные операции запрещены для агентов
API-ключи хранятся в переменных окружения
Ротация ключей настроена
Доступ логируется
Расшаренные страницы проверяются периодически
Есть план действий при утечке ключа
Новые интеграции проходят проверку прав перед запуском

По теме

Если вы настраиваете права доступа для агентов и интеграций и хотите сделать это грамотно — пишите в Telegram @pimenov.