AiHummer
Русский
Войти
v1.0.x
{ }Swagger

Персональные и общие доступы

v1.0.x · обновлено 2026-07-05

У каждого доступа, который хранит AiHummer — API-ключа, токена, секрета вебхука — есть scope, определяющий, под чьим секретом выполняется вызов инструмента. Scope бывает двух видов: общий (shared) и персональный (personal). Понимание разницы между ними и порядка их резолвинга — ключ к тому, чтобы дать каждому агенту и каждому пользователю ровно тот доступ, который им положен, и не больше.

Два scope

Scope Принадлежит Когда использовать
Общий (shared) Рабочему пространству Действие должно выполняться под одной общей учётной записью независимо от того, кто его инициировал
Персональный (personal) Конкретному пользователю Действие должно быть привязано к авторизации конкретного человека и ограничено ею

Оба вида живут в одном зашифрованном vault (конвертное шифрование, AES-256-GCM, ключ на арендатора под мастер-ключом); разница лишь в том, к кому резолвится секрет, а не в том, как он хранится и защищён.

Резолвинг по действующему пользователю с fallback на пространство

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

нужен доступ ─▶ есть персональный доступ у действующего пользователя?
                 ├─ да  ─▶ использовать персональный доступ
                 └─ нет ─▶ откат на общий доступ (рабочего пространства)

Это одно правило даёт гибкое поведение: задайте только общий доступ — и им пользуются все; разрешите людям добавлять собственные — и они автоматически получают приоритет для этого человека, тогда как остальные продолжают пользоваться общим.

[!NOTE] Персональный всегда побеждает общий для одного и того же пользователя. Доступ пространства — это fallback, а не override: пользователь, подключивший свою учётную запись, действует со своей авторизацией.

Когда использовать общий

Выбирайте общий доступ, когда:

  • Действие представляет организацию, а не отдельного человека (корпоративный почтовый ящик, единая служебная учётка CRM, биллинговый ключ).
  • Нужно одинаковое поведение независимо от того, кто инициировал агента.
  • Выпускать и ротировать один секрет централизованно проще, чем настраивать его на каждого пользователя.

Когда использовать персональный

Выбирайте персональный доступ, когда:

  • Действие должно быть привязано к конкретному человеку и ограничено тем, что ему разрешено.
  • Разные пользователи должны видеть разные данные через одного и того же агента и инструмент.
  • Нужны отзыв и аудит на каждого пользователя, независимо от остальных.

Персональные доступы — это, как правило, личные учётные записи, которые сотрудник подключает сам через Connections. «Из коробки» к ним относятся, например, Gmail, Google Calendar, Google Contacts, Google Drive, Google Tasks, YouTube, Outlook Mail, Outlook Calendar, OneDrive, Microsoft To Do, Todoist, Asana, Jira Cloud, ClickUp, GitLab, Linear, monday.com, Fitbit, Oura Ring, Strava, Spotify и Samsung SmartThings — каждый пользователь действует под своей авторизацией. Общий же доступ — это одна учётная запись рабочего пространства (например, корпоративный почтовый ящик или служебная учётка CRM), которой пользуются все.

Связь с Connections и vault

Connections — самый частый способ появления персонального доступа: пользователь проходит поток OAuth2 authorization-code, выданный токен запечатывается в vault, и с этого момента это и есть тот самый персональный доступ, который резолвер выбирает для этого пользователя. Общий же доступ — это обычно секрет, который оператор сохраняет один раз на уровне рабочего пространства.

Во всех случаях секрет остаётся в зашифрованном vault и никогда не попадает в контекст модели, промпт или логи — scope управляет лишь тем, к какой записи vault резолвится действующий пользователь.

Куда дальше