This page was machine-translated. Spotted a mistake?Help improve it.
Skip to content

Користувачі, ролі та дозволи

SnapOtter постачається з трьома вбудованими ролями, 17 деталізованими дозволами та підтримкою власних ролей із необов'язковим контролем доступу на рівні окремих інструментів. Ця сторінка охоплює повну модель авторизації, обмеження області дії ключів API, керування командами та журналювання аудиту.

Користувачі

Створення користувачів

Адміністратори можуть створювати користувачів через панель адміністратора або кінцеву точку POST /api/auth/register. Кожен користувач має ім'я користувача, роль, призначення до команди та необов'язкову адресу електронної пошти.

Типовий адміністратор

Під час першого запуску SnapOtter створює типовий обліковий запис адміністратора. Облікові дані беруться зі змінних середовища:

ЗміннаТипове значенняОпис
DEFAULT_USERNAMEadminІм'я користувача для початкового облікового запису адміністратора
DEFAULT_PASSWORDadminПароль для початкового облікового запису адміністратора

Типовий адміністратор зобов'язаний змінити свій пароль під час першого входу.

Провайдери автентифікації

Користувачі можуть автентифікуватися кількома способами:

  • Локально - ім'я користувача та пароль, що зберігаються в базі даних SnapOtter
  • OIDC - будь-який провайдер OpenID Connect (див. OIDC / SSO)
  • SAML - постачальники ідентичності SAML 2.0 (див. SAML SSO)
  • SCIM - автоматизоване провізіювання від постачальника ідентичності (див. Провізіювання SCIM)

Вимкнення автентифікації

Задайте AUTH_ENABLED=false, щоб повністю вимкнути автентифікацію. У цьому режимі для всіх запитів використовується синтетичний анонімний користувач із роллю admin. Вхід не потрібен.

WARNING

Вимкнення автентифікації надає повний доступ адміністратора будь-кому, хто може дістатися екземпляра. Використовуйте це лише в довірених середовищах.

Вбудовані ролі

SnapOtter містить три вбудовані ролі. Їх не можна змінити чи видалити.

Admin

Усі 17 дозволів. Повний контроль над екземпляром.

tools:use files:own files:all apikeys:own apikeys:all pipelines:own pipelines:all settings:read settings:write users:manage teams:manage features:manage system:health audit:read compliance:manage webhooks:manage security:manage

Editor

7 дозволів. Може використовувати всі інструменти та керувати всіма файлами й конвеєрами, але не має доступу до адміністративних функцій.

tools:use files:own files:all apikeys:own pipelines:own pipelines:all settings:read

User

5 дозволів. Може використовувати інструменти та керувати власними ресурсами.

tools:use files:own apikeys:own pipelines:own settings:read

Довідник дозволів

ДозвілОпис
tools:useВикористовувати будь-який інструмент обробки
files:ownПереглядати власні файли та керувати ними
files:allПереглядати файли всіх користувачів та керувати ними
apikeys:ownСтворювати власні ключі API та керувати ними
apikeys:allПереглядати ключі API всіх користувачів
pipelines:ownСтворювати власні конвеєри та керувати ними
pipelines:allПереглядати конвеєри всіх користувачів та керувати ними
settings:readПереглядати налаштування екземпляра
settings:writeЗмінювати налаштування екземпляра
users:manageСтворювати, оновлювати та видаляти облікові записи користувачів
teams:manageСтворювати, оновлювати та видаляти команди
features:manageВстановлювати комплекти AI-функцій та керувати ними
system:healthДоступ до кінцевих точок стану та готовності
audit:readПереглядати журнал аудиту та перелічувати ролі
compliance:manageКерувати життєвим циклом GDPR та функціями відповідності
webhooks:manageНалаштовувати вихідні вебхуки
security:manageКерувати налаштуваннями безпеки (список дозволених IP, примусове застосування SSO)

Власні ролі

Адміністратори з дозволом security:manage можуть створювати власні ролі через панель адміністратора або API ролей. Перелічення ролей потребує audit:read.

Створення власної ролі

bash
curl -X POST http://localhost:1349/api/v1/roles \
  -H "Authorization: Bearer si_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "reviewer",
    "description": "Can use tools and view all files",
    "permissions": ["tools:use", "files:own", "files:all", "settings:read"]
  }'

Назви ролей мають бути 2-30 символів, малими літерами, буквено-цифровими, з дефісами й підкресленнями.

Дозволи, зарезервовані для адміністратора

Три дозволи зарезервовані для вбудованих ролей і не можуть бути призначені власним ролям:

  • compliance:manage
  • webhooks:manage
  • security:manage

API ролей відхиляє будь-який запит, що містить ці дозволи. Лише вбудована роль admin має до них доступ.

Дозволи на рівні інструментів

Власні ролі можуть за бажанням обмежувати, до яких інструментів мають доступ користувачі. Доступні два режими:

РежимПоведінкаВимога до ліцензії
categoryОбмеження за модальністю (image, video, audio, document, file)Немає (безкоштовно)
toolОбмеження за ID окремого інструментаПотребує корпоративної функції per_tool_permissions

Коли задано режим tool, але корпоративна функція недоступна, SnapOtter коректно деградує та дозволяє доступ до всіх інструментів.

json
{
  "name": "image-only",
  "permissions": ["tools:use", "files:own"],
  "toolPermissions": {
    "mode": "category",
    "allowed": ["image"]
  }
}

Видалення власної ролі

Коли власну роль видаляють, усіх призначених до неї користувачів автоматично переназначають на роль user.

Команди

Команди групують користувачів для керування сховищем і збереженням. Команда Default створюється під час першого запуску.

ПолеТипОпис
namestringУнікальна назва команди (1-50 символів)
storageQuotanumberОбмеження сховища для команди в байтах (працює без корпоративної ліцензії)
retentionHoursnumberАвтовидалення результатів після стількох годин (потребує team_retention_overrides, корпоративна)
legalHoldbooleanЗапобігати автоматичному видаленню файлів учасників команди (потребує legal_hold, корпоративна)

INFO

Команду Default не можна видалити. Команди, у яких досі є учасники, видалити не можна. Спершу переназначте учасників.

Ключі API

Користувачі можуть генерувати ключі API для програмного доступу. Кожен ключ використовує префікс si_ і показується лише один раз під час створення.

Дозволи з обмеженою областю дії

Ключі API можуть за бажанням нести масив permissions. Коли його задано, ефективні дозволи для запиту - це перетин дозволів ролі користувача та дозволів з обмеженою областю дії ключа. Це означає, що ключ API ніколи не може вийти за межі власних дозволів користувача.

bash
curl -X POST http://localhost:1349/api/v1/api-keys \
  -H "Authorization: Bearer si_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "CI pipeline key",
    "permissions": ["tools:use", "files:own"],
    "expiresAt": "2027-01-01T00:00:00Z"
  }'

Термін дії

Ключі приймають необов'язкову позначку часу expiresAt. Ключі з простроченим терміном дії відхиляються під час автентифікації.

Журнал аудиту

SnapOtter записує події, важливі для безпеки, у структурований журнал аудиту, що зберігається в таблиці бази даних audit_log.

Перегляд журналу аудиту

GET /api/v1/audit-log?page=1&limit=50&action=LOGIN_FAILED&from=2026-01-01T00:00:00Z&to=2026-12-31T23:59:59Z

Потребує дозволу audit:read. Підтримує пагінацію (page, limit) та фільтри (action, ip, from, to).

Аудит операцій з інструментами

WARNING

Події TOOL_EXECUTED не журналюються за замовчуванням. Вони вмикаються за вибором через один із двох шляхів:

  1. Задайте адміністративне налаштування auditToolOperations у true.
  2. Майте активну ліцензію з функцією audit_export (доступна як у планах team, так і enterprise).

Без одного з цих варіантів окремі виконання інструментів не записуються в журнал аудиту.

Експорт

GET /api/v1/enterprise/audit/export?format=csv&from=2026-01-01T00:00:00Z

Потребує дозволу audit:read та корпоративної функції audit_export (доступна як у планах team, так і enterprise). Підтримує формати CSV та JSON, фільтровані за action, actorId, targetType, targetId, from та to.

Підписування, стійке до підробки

Коли ввімкнено, кожен запис журналу аудиту підписується за допомогою HMAC, похідного від DATA_ENCRYPTION_KEY. Це потребує:

  1. Задання DATA_ENCRYPTION_KEY у вашому середовищі.
  2. Увімкнення адміністративного налаштування tamperResistantAudit.
  3. Корпоративної ліцензії з функцією tamper_resistant_audit.

Збереження

Задайте AUDIT_RETENTION_DAYS, щоб автоматично очищати старі записи. Типове значення - 0, що означає, що записи зберігаються безстроково.

Довідник подій

ПодіяКатегорія
LOGIN_SUCCESS, LOGIN_FAILEDАвтентифікація
OIDC_LOGIN_SUCCESS, OIDC_LOGIN_FAILEDАвтентифікація
SAML_LOGIN_SUCCESS, SAML_LOGIN_FAILEDАвтентифікація
LOGOUTАвтентифікація
USER_CREATED, USER_UPDATED, USER_DELETEDКерування користувачами
PASSWORD_CHANGED, PASSWORD_RESETКерування користувачами
MFA_ENROLLED, MFA_DISABLED, MFA_VERIFIED, MFA_VERIFY_FAILEDMFA
MFA_CHALLENGE_ISSUED, MFA_RECOVERY_USED, MFA_RESETMFA
ROLE_CREATED, ROLE_UPDATED, ROLE_DELETEDРолі
API_KEY_CREATED, API_KEY_DELETEDКлючі API
SETTINGS_UPDATED, IP_ALLOWLIST_UPDATEDНалаштування
FILE_UPLOADED, FILE_DELETEDФайли
TOOL_EXECUTEDІнструменти (за вибором)
SCIM_USER_PROVISIONED, SCIM_USER_UPDATED, SCIM_USER_DEPROVISIONEDSCIM
SCIM_GROUP_SYNCEDSCIM
LEGAL_HOLD_APPLIED, LEGAL_HOLD_RELEASEDВідповідність
GDPR_EXPORT_INITIATED, GDPR_USER_PURGED, GDPR_TEAM_PURGEDВідповідність
CONFIG_EXPORTED, CONFIG_IMPORTEDКонфігурація

Керування сеансами

Сеанси базуються на кукі та керуються SESSION_DURATION_HOURS (типово: 168 годин / 7 днів).

Зміна ролі анулює сеанси

Коли адміністратор змінює роль користувача, усі активні сеанси цього користувача видаляються. Користувач має увійти знову, щоб отримати свої нові дозволи.

Запобіжники безпеки

  • Захист останнього адміністратора: останнього адміністратора не можна понизити до нижчої ролі. API повертає помилку, якщо ви спробуєте.
  • Запобігання самовидаленню: адміністратори не можуть видалити власний обліковий запис через API.