Авторизованный ключ¶
ИИ Студия использует авторизованный ключ служебной учётной записи как серверные учётные данные для Яндекс Облако.
Это не пароль пользователя и не статический IAM-токен.
Закрытая часть RSA-ключа позволяет Студии подписать JWT, обменять его на IAM-токен и затем обращаться к разрешённым API от имени служебная учётная запись.
Что вы сделаете¶
На этой странице вы:
- создадите ключ в Яндекс Облаке;
- сохраните JSON;
- загрузите его в ИИ Студию;
- проверите, что ключ принят;
- разберётесь, где он хранится;
- научитесь безопасно ротировать его.
1. Что находится в JSON¶
Типичный файл содержит поля следующего вида:
{
"id": "<key-id>",
"service_account_id": "<service-account-id>",
"created_at": "<timestamp>",
"key_algorithm": "RSA_2048",
"public_key": "-----BEGIN PUBLIC KEY----- ...",
"private_key": "-----BEGIN PRIVATE KEY----- ..."
}
Значение private_key является секретом.
Danger
Никогда не вставляйте настоящий JSON ключа в чат, тикет, Git, Wiki, README, скриншот или письмо. Если закрытый ключ попал в чужие руки, считайте ключ скомпрометированным и удалите его в Яндекс Облако.
2. Почему ключ долгоживущий, а IAM-токен — нет¶
У авторизованного ключа нет обычного короткого срока жизни.
Он используется для периодического получения IAM-токенов.
Схема:
Студия не должна заставлять администратора вручную копировать новые IAM-токены каждый несколько часов.
3. Создать ключ через консоль¶
- Откройте нужный каталог Яндекс Облака.
- Перейдите в Identity and Access Management.
- Откройте Сервисные аккаунты.
- Выберите служебная учётная запись ИИ Студии.
- Нажмите Создать новый ключ.
- Выберите Создать авторизованный ключ.
- Выберите RSA-алгоритм.
- Укажите описание, например:
- Нажмите Создать.
- Сохраните закрытую часть/JSON сразу.
Закрытую часть позднее повторно получить нельзя.
4. Создать ключ через CLI¶
Пример:
yc iam key create \
--service-account-name nicesoft-ai-studio \
--output nicesoft-ai-studio-key.json
После выполнения убедитесь, что файл существует:
Не выводите его содержимое в терминал во время демонстрации или записи экрана.
5. Как загрузить ключ в Студию¶
- Войдите как ADMIN.
- Откройте Интеграция с YC.
- Перейдите в Подключение YC.
- Найдите блок Авторизованный ключ.
- Выберите JSON.
- Проверьте, что файл относится к нужному служебная учётная запись.
- Подтвердите загрузку.
- Дождитесь результата проверки.
Студия проверяет ключевой JSON на сервере.
6. Что проверяет NiceSoft Шлюз¶
Точный набор внутренних проверок может развиваться, но текущая реализация как минимум проверяет необходимые поля и ключевой материал, затем использует RSA закрытый ключ для JWT PS256.
В интерфейс возвращается только безопасная информация о ключе, например:
- факт наличия;
- идентификатор ключа;
- ID служебной учётной записи;
- алгоритм;
- дата создания;
- дата импорта;
- связанный home каталог/облако;
- имя служебной учётной записи, если оно определено.
Закрытый ключ обратно в браузер не выдаётся.
7. Где хранится секрет¶
В текущей архитектуре:
- ключ хранится на стороне сервера;
- каталог секрета создаётся с ограниченными правами;
- файл ключа хранится с правами только владельца;
- IAM token кэшируется в памяти шлюз;
- браузер не получает закрытый ключ;
- браузер не получает IAM token;
- Billing сервис получает ключ через внутреннее подключение только для чтения;
- секрет не должен попадать в запрос модели.
Это принципиальное отличие от подхода «положить ключ в браузер и вызывать API напрямую».
8. Ключ не определяет рабочий каталог¶
После загрузки ключа Студия уже знает, кто выполняет запросы.
Но ей ещё нужно знать, где обычным пользователям разрешено работать.
Поэтому отдельно выполняется привязка рабочего каталога.
Не путайте эти понятия.
9. Ключ не заменяет роли¶
Наличие валидного ключа не даёт служебная учётная запись новых прав.
Если учётная запись не имеет роли compute.viewer, viewer, billing.accounts.viewer, ai.languageModels.user или другой необходимой роли, API вернёт отказ.
То есть:
а не:
10. Как ротировать ключ¶
Ротация нужна:
- по внутренней политике;
- при смене администратора;
- при подозрении на компрометацию;
- если файл случайно попал в лог/чат/repository;
- при плановой замене учётные данные.
Безопасная последовательность:
- создайте новый авторизованный ключ для той же служебной учётной записи;
- загрузите новый JSON в Студию;
- проверьте
yc-doctor; - проверьте инфраструктурный запрос;
- проверьте Billing;
- проверьте Yandex AI, если используется;
- только после успешного теста удалите старый ключ в Яндекс Облако.
Так вы избегаете незапланированного простоя.
11. Как удалить ключ из Студии¶
Удаление учётные данные в Студии и удаление ключа в Яндекс Облаке — разные действия.
Для полного отзыва:
- удалите/отключите ключ в Яндекс Облаке;
- удалите сохранённый ключ в ИИ Студии;
- проверьте, что
yc-doctorбольше не получает IAM учётные данные; - убедитесь, что облачные сервисы не выполняют запросы.
Если удалить только локальный файл, ключ продолжит существовать в Yandex IAM.
Если удалить только объект ключа в Яндекс Облако, локальный JSON станет бесполезным, но всё равно останется секретным материалом и должен быть удалён.
12. Что делать при утечке¶
Если закрытый ключ попал:
- в Git;
- в чат;
- в публичный issue;
- в письмо неизвестному получателю;
- в скриншот;
- в support bundle без редактирования;
не пытайтесь «спрятать» старую публикацию и продолжить пользоваться ключом.
Выполните:
- немедленно удалите ключ в Яндекс Облако;
- создайте новый;
- загрузите новый в Студию;
- проверьте аудит и
last_used_at, если доступно; - выясните, какие права были у служебная учётная запись в момент утечки;
- при необходимости временно сократите роли;
- проверьте журналы доступа.
13. Ошибки при загрузке¶
«Некорректный JSON»¶
Проверьте, что вы загрузили именно файл авторизованного ключа, а не:
- API-ключ;
- IAM token;
- SSH закрытый ключ;
- OAuth token;
- произвольный JSON из Terraform state.
«Не найден private_key»¶
Возможно, вы сохранили только публичную информацию о ключе.
Создайте новый ключ — закрытую часть старого получить повторно нельзя.
«Unsupported key algorithm»¶
Используйте поддерживаемый RSA авторизованный ключ, созданный стандартным механизмом Yandex IAM.
Ключ принят, но 403¶
Проблема обычно не в ключе, а в ролях или область доступа.
Перейдите к Права служебной учётной записи.
14. Что нельзя делать с ключом¶
Не следует:
- хранить его в
/tmpбез контроля прав; - добавлять в
.env, если этот.envпопадает в backup для разработчиков; - коммитить в Git;
- копировать на рабочие станции пользователей;
- передавать USER-роли;
- вставлять в запрос;
- использовать один ключ для десятка несвязанных систем;
- пересылать в мессенджер;
- делать screenshot содержимого JSON;
- оставлять старые ключи активными после ротации.
15. Контрольный тест¶
После загрузки выполните:
Проверьте минимум:
Если эти пункты успешны, учётные данные-уровень работает.
Если каталог ещё не привязан, предупреждение о привязке в этот момент допустимо.