Коротко: OAuth для AI‑агентів — це делегований доступ користувача з жорсткою ізоляцією, а не передавання сирих токенів у підказки. Продукційні агенти запитують згоду користувача, отримують вузько окреслені токени й виконують дії через брокер облікових даних, до якого модель не має доступу. Ми ротуємо й звужуємо права токенів, прив’язуємо їх до тенантів і інструментів та логуємо кожне використання для аудиту. Такі підходи закривають розрив між хайпом і продакшеном, дозволяючи агентам працювати в реальних системах без витоків секретів і надмірних дозволів.
Головні висновки
- OAuth для AI‑агентів — це делегована авторизація плюс ізоляція: LLM планує; брокер зберігає токени; інструменти виконують на боці сервера.
- Використовуйте Authorization Code з PKCE (або Device Authorization) для згоди користувача, далі звужуйте права через token exchange під кожний інструмент і задачу.
- Ніколи не показуйте токени моделі; передавайте непрозорі ідентифікатори й примушуйте найменші привілеї на межі брокера та інструменту.
- Ротуйте refresh‑токени, прив’язуйте токени до тенанта й аудиторії та блокуйте за замовчуванням із чітким кроком виправлення для користувача.
- Аудіюйте хто, що, коли, scope, ресурс і мету — щоб команди безпеки довіряли виходу в продакшн.
Що таке OAuth для AI‑агентів?
OAuth для AI‑агентів — це делегована авторизація, яка дозволяє агенту діяти від імені користувача без знання чи зберігання його пароля. Користувач надає згоду на конкретні скоупи, сервер авторизації видає токени, а агент використовує їх, щоб викликати інструменти, які працюють із даними користувача.
У продакшені додаємо розділення відповідальностей. Модель вирішує, що робити, але брокер облікових даних зберігає токени та виконує автентикований виклик. Таке розділення не дозволяє моделі бачити облікові дані, зменшує зону ураження й уможливлює централізовані політики та аудити.
Це працює завдяки чотирьом ролям:
- Користувач: надає згоду на визначені скоупи (наприклад, читати календар, надсилати пошту).
- Сервер авторизації: видає authorization codes, access tokens і refresh tokens.
- Середовище агента: планує й оркеструє задачі; ніколи не читає сирі секрети.
- Брокер облікових даних та інструменти: обмінюють або звужують токени та виконують API‑виклики на боці сервера.
На демо команди часто вставляють довгоживучі токени в підказки. У продакшені ми ховаємо облікові дані за брокером, використовуємо короткоживучі access‑токени з оновленням і прив’язуємо токени до потрібної аудиторії та тенанта.
Коли агенту варто використовувати службові облікові записи, а коли — делеговану авторизацію?
Службові облікові записи підходять для задач агента, що не залежать від конкретного користувача й можуть бути безпечно дозволені на рівні застосунку. Делегована авторизація потрібна для задач, які працюють із ресурсами користувача або вимагають явної згоди та трасування до користувача.
Обирайте службові облікові записи, коли
- Дія спрямована на дані, що належать системі (наприклад, нічна синхронізація в сховище даних).
- Можна обмежити доступ облікового запису до вузького набору даних та середовища.
- Немає потреби представляти конкретного кінцевого користувача в цільовій системі.
Обирайте делеговану авторизацію, коли
- Дія читає або змінює ресурси користувача (наприклад, поштову скриньку чи CRM‑пайплайн користувача).
- Цільова система застосовує поквотні, політики або узгодження на рівні користувача.
- Аудиторам потрібен ланцюжок, що пов’язує людину, згоду, скоупи та дії.
Багато команд починають зі спільного службового облікового запису і стикаються з побічними ефектами та перехресним доступом між тенантами. Коли агент торкається простору користувача, делегована авторизація з пер‑користувацькими скоупами та аудитуємністю — безпечний дефолт.
Як спроєктувати OAuth‑потік, яким агент зможе безпечно користуватися?
Найтемніший шлях — дати користувачу чіткий екран згоди та не підпускати модель до облікових даних. Використовуйте Authorization Code з PKCE для вебу й мобільних платформ, а Device Authorization — для голосу, CLI або кіосків.
- Почніть зі згоди: переадресуйте користувача на сторінку згоди провайдера з явними скоупами та чітким формулюванням мети.
- Обміняйте код на сервері: поміняйте authorization code на токени у вашому бекенді; ніколи не передавайте коди через модель.
- Зберігайте токени в брокері: шифруйте на диску, сегментуйте за тенантом і провайдером, тегуйте кожний токен дозволеними аудиторіями, інструментами та політиками.
- Видавайте непрозорі ідентифікатори: поверніть агенту ідентифікатор (наприклад, cred_abc123); модель бачить лише його.
- Звужуйте права під задачу: використовуйте token exchange або дрібні скоупи, щоб видати короткоживучий токен під конкретний інструмент і дію.
- Виконуйте на боці сервера: сервіс інструменту робить API‑виклик і повертає агенту зачищений результат.
- Логуйте рішення: фіксуйте користувача, ідентифікатор, скоупи, ідентифікатори ресурсів і результат для аудиту.
Агенти без інтерфейсу все одно потребують участі людини. Device Authorization дає URL і код, які користувач вводить на довіреному пристрої. Після згоди ваш брокер тримає токени; агент працює з непрозорим ідентифікатором, прив’язаним до цього користувача та інструменту.
OAuth для AI‑агентів у мульти‑тенантних системах
Мульти‑тенантні агенти мають прив’язувати облікові дані до тенантів і користувачів, щоб запобігти міжтенантному доступу. Кожен токен живе в просторі ключів тенанта з окремими ключами шифрування та розділеним сховищем.
- Сегментуйте за тенантом: розділяйте сховище й ключі шифрування для кожного тенанта та провайдера.
- Прив’язуйте до аудиторії: включайте цільову аудиторію API в запити на токени й перевіряйте її на кожному виклику.
- Використовуйте token exchange: міняйте широкий refresh‑токен на короткоживучий, звужений під конкретний інструмент і задачу.
- Тегуйте ідентифікатори: кодуйте тенанта, провайдера та політики в метаданих ідентифікатора; ніколи не виводьте це з довільних підказок.
- Обмежуйте фан‑аут: не використовуйте один токен у кількох інструментах; карбуйте пер‑інструментні токени, щоб зменшити латеральний ризик.
Межі тенантів також впливають на білінг і реагування на інциденти. Якщо токен скомпрометовано, ротація та відкликання мають торкатися лише постраждалого тенанта й користувача. Ізоляція в мульти‑тенанті зменшує зону ураження й пришвидшує відновлення.
Для глибших патернів щодо тенантності та ізоляції див. наш гайд архітектура мульти‑тенантних AI‑агентів, що тримає в продакшені.
Як не допустити, щоб токени опинилися в руках моделі?
Ніколи не вставляйте секрети в підказки або параметри інструментів, які модель може віддзеркалити. Використовуйте брокер облікових даних і робіть токени непрозорими для моделі.
- Непрозорі ідентифікатори: дайте моделі ідентифікатор; токен зберігайте на сервері.
- Серверні інструменти: реалізуйте інструменти в бекенді; приймайте ідентифікатор, виконуйте політики та діставайте токен у брокера.
- Строгі схеми: визначайте схеми інструментів зі структурованими полями для ID ідентифікатора, а не довільними рядками.
- Зачистка на джерелі: прибирайте токени з логів, трейсів і помилок; тестуйте зачищення на адверсаріальних кейсах.
- Без ехо‑шляхів: блокуйте відображення заголовків запитів, сирих відповідей чи тіл помилок, що можуть містити секрети.
Ізоляція — це продакшн‑контроль, а не рекомендація. Непрозорі ідентифікатори плюс серверне виконання значно зменшують шанси успіху ін’єкцій підказок і випадкових витоків.
Як агентам обробляти refresh, ротацію та відкликання?
Агенти мають переживати закінчення строку дії токена без втрати стану чи дублювання роботи. Брокер може оновлювати або ротувати токени посеред виконання, не ламаючи план агента.
- Оновлення під час виклику: перехоплюйте 401/invalid_token і виконуйте refresh лише в брокері; повторіть виклик інструменту з ключами ідемпотентності.
- Планова ротація: ротувати refresh‑токени за розкладом і після ризикових подій; прив’язуйте refresh‑токени до клієнта брокера та тенанта.
- Блокування за замовчуванням: якщо refresh не вдався, зупиняйте ран і показуйте крок ремедіації зі спрямуванням на повторну згоду.
- Швидке відкликання: підключіть відкликання провайдера й адмінські kill‑switch до брокера; чистіть похідні access‑токени та інвалідовуйте ідентифікатори.
Цьому допомагає надійне виконання. Зберігайте проміжний стан, щоб refresh або повторна згода не втрачали прогрес, і використовуйте ідемпотентність у викликах інструментів, щоб уникати дублювання після повторів.
Як запровадити найменші привілеї для дій інструментів?
Найменші привілеї для агентів означають звуження як токенів, так і дій. Токени обмежують, до яких API є доступ; політики дій обмежують, що інструменту дозволено робити з цими API саме зараз.
- Набори скоупів: мапте задачі на мінімально потрібні скоупи; надавайте перевагу read проти write та пер‑об’єктним скоупам, якщо доступні.
- Політики дій: визначайте списки дозволених дієслів (наприклад, create_draft_email vs send_email).
- Контекстні перевірки: вимагайте людського підтвердження для чутливих або незворотних дій чи коли скоуп ширший, ніж дозволяє політика.
- Підвищення прав just‑in‑time: просіть додаткові скоупи лише за потреби; фіксуйте причину в аудиторському сліді.
Оцінка політик має відбуватися в брокері або сервісі інструменту, а не в моделі. Коли політика відмовляє в дії, повертайте структуровану відмову з відсутніми скоупами та шляхом ескалації, а не загальну помилку.
Для ширших патернів примусу політик див. наш гайд AI Agent Access Control з RBAC, політиками та аудитами.
Що аудіювати, не розкриваючи PII?
Аудит має доводити, що правильний користувач надав згоду на правильні скоупи для правильної дії в правильний час. Водночас він не має розкривати чутливий вміст.
- Фіксуйте хто і коли: тенант, користувач, інструмент, ідентифікатор, мітка часу та ініціатор (ID рану агента).
- Фіксуйте що і чому: набір скоупів, дієслово дії, ідентифікатори ресурсів і заявлену мету.
- Мінімізуйте вміст: зберігайте вказівники або хеші замість повних пейлоадів; зачищайте тіла повідомлень.
- Лінкуйте затвердження: прикріплюйте людські апруви або оверрайди політик до рану та дії.
- Захист від підміни: підписуйте записи аудиту або зберігайте їх у журналі лише для допису.
Команди безпеки хочуть трасованість без витоків даних. Зачищайте вміст уже на етапі збору й тримайте сирі пейлоади поза логами та трейсами за замовчуванням. Для практик управління даними, що витримують перевірку, див. статтю керування даними AI‑агентів, обробка PII та аудиторські сліди.
Типові помилки з OAuth в агентних стеках (і як їх виправити)
Більшість інцидентів у продакшені зводяться до кількох запобіжних помилок. Ми виправляємо їх ізоляцією, звуженням прав і чіткими прописаними реакціями.
- Витік токенів через підказки чи логи: ніколи не відкривайте токени моделі; використовуйте непрозорі ідентифікатори та агресивну зачищення.
- Широкі, довгоживучі токени: віддавайте перевагу короткоживучим access‑токенам; ротувати refresh‑токени; використовуйте token exchange для звуження.
- Спільний службовий акаунт між тенантами: створюйте пер‑тенантні облікові дані та сегментовані сховища; прив’язуйте токени до аудиторії та тенанта.
- Пропуск PKCE або device‑потоку: використовуйте Authorization Code з PKCE для браузера/мобайл; Device Authorization — для безінтерфейсних поверхонь.
- Без ідемпотентності під час повторів викликів інструментів: додавайте ключі ідемпотентності, щоб refresh і ретраї не дублювали побічні ефекти.
- Повернення сирих помилок провайдера моделі: конвертуйте помилки в структуровані відмови, що враховують політики; не допускайте ехо заголовків.
- Відсутній шлях до оновлення згоди: забезпечте зрозумілий повторний флоу згоди, коли змінюються скоупи або токени відкликано.
- Логування повних тіл запитів і відповідей: логуйте структурні метадані та референси; тримайте чутливі пейлоади поза логами за замовчуванням.
- Відсутній kill‑switch: додайте пер‑тенантні та глобальні вимикачі, що миттєво інвалідовують ідентифікатори й похідні токени.
- Необмежений фан‑аут одним токеном: карбуйте пер‑інструментні, пер‑дієві токени, щоб обмежити латеральний рух і спростити аудити.
Як Moai Team підходить до цього
Ми будуємо агентні стеки, що розділяють планування й дозволи. Модель вирішує; брокер авторизує; інструменти діють; аудити це доводять. Така ізоляція звужує зону ураження й робить авторизацію оглядовою.
- Брокер облікових даних: зберігаємо токени по тенантах і провайдерах із конвертним шифруванням, ротуємо refresh‑токени й віддаємо агенту лише непрозорі ідентифікатори.
- Виконання зі звуженими правами: надаємо перевагу token exchange та короткоживучим пер‑інструментним токенам, прив’язаним до аудиторії та політик дій.
- Найменші привілеї за дизайном: мапимо задачі на скоупи й дієслова, вимагаємо людського апруву для ризикових дій і логуємо формулювання мети.
- Стійкі, ідемпотентні ран‑и: зберігаємо стан агента між кроками згоди й захищаємо виклики з побічними ефектами ключами ідемпотентності.
- Доказові контролі: фіксуємо хто, що, коли, скоуп, ресурс і апруви в незмінному аудит‑журналі, доступному для перевірки командами безпеки.
Наша ідея проста: закрити розрив між хайпом і продакшеном контрольними механізмами, що тримають. Делегована авторизація працює в продакшені тільки тоді, коли токени не потрапляють у підказки, скоупи відповідають задачам, а аудити розповідають повну історію.
Поширені запитання
Чи потрібен AI‑агентам OAuth, чи достатньо API‑ключів?
Використовуйте OAuth для дій і даних, специфічних для користувача, бо він дає згоду, скоупи й відкликання, прив’язані до користувача. API‑ключі підходять для даних на рівні застосунку, не прив’язаних до користувача, за умови жорсткої ізоляції та скоупінгу. Комбінація поширена: OAuth для простору користувача, ключі — для внутрішніх сервісів. У разі сумніву обирайте делеговану авторизацію для всього, що торкається ресурсів користувача.
Який потік OAuth найкраще підходить для AI‑агентів?
Authorization Code з PKCE — дефолт для браузера й мобільних застосунків, бо знижує ризик перехоплення й тримає секрети на сервері. Device Authorization пасує для голосу, CLI та кіосків, що не можуть обробляти редіректи. Обидва потоки закінчуються на брокері облікових даних, недоступному моделі. Уникайте implicit‑потоків і ніколи не вставляйте коди чи токени в підказки.
Як запобігти витоку токенів через модель?
Тримайте токени повністю поза моделлю та передавайте замість них непрозорі ідентифікатори. Виконуйте інструменти на сервері, використовуючи ідентифікатор для отримання облікових даних із брокера, і зачищайте секрети з логів і повідомлень про помилки. Блокуйте ехо‑шляхи, що віддзеркалюють заголовки або сирі відповіді провайдерів. Тестуйте систему адверсаріальними підказками, щоб переконатися у відсутності шляхів витоку.
Чи можемо звужувати права під інструмент за допомогою обміну токенами?
Так. Використовуйте token exchange, щоб міняти широкий, довгоживучий обліковий дані на короткоживучий access‑токен лише з потрібними інструменту скоупами. Прив’язуйте обміняний токен до цільової аудиторії й тенанта. Це зменшує зону ураження та покращує аудити, бо кожен виклик посилається на мінімальний набір скоупів.
Що саме аудіювати для вимог безпеки та відповідності?
Аудіюйте користувача, тенанта, інструмент, ідентифікатор, скоупи, дієслово дії, ідентифікатори ресурсів, мітку часу та заявлену мету. Лінкуйте до ран‑у всі людські апруви чи оверрайди політик. Тримайте пейлоади поза логами за замовчуванням і зберігайте вказівники чи хеші. Підписані або append‑only записи забезпечують захист від підміни під час рев’ю змін.
Як обробляти зміну згоди та відкликання, не зриваючи запуски?
Блокуйте за замовчуванням, коли токени відкликано або скоупи звузилися, і показуйте структурований крок ремедіації з перенаправленням на повторну згоду. Зберігайте стан агента, щоб він міг відновитися після згоди, і використовуйте ключі ідемпотентності для дій із побічними ефектами, аби уникнути дублікатів. Додайте пер‑тенантні та глобальні kill‑switch, що миттєво інвалідовують ідентифікатори облікових даних. Чіткі операторські ранбуки скорочують час відновлення під час інцидентів.
Потрібна команда, що з першого дня правильно зробить делегований доступ? Поспілкуйтеся з Moai Team про агентів, які безпечно працюють з OAuth і доходять до продакшену. Зв’яжіться з нами.