Секреты и ключи¶
Главное правило¶
Секрет должен попадать только в тот компонент, которому он действительно необходим.
— базовая стратегия для паролей, ключей и токенов.
Что относится к секретам¶
В контексте ИИ Студии секретами могут быть:
- пароль пользователя;
- пароль администратора;
- закрытая часть авторизованного ключа Яндекс Облака;
- IAM-токен;
- ключ внешнего программного интерфейса;
- секрет сеанса;
- пароли баз данных;
- мастер-ключ поискового индекса;
- ключи внешнего корпоративного сервиса;
- резервные коды дополнительной проверки входа;
- закрытый TLS-ключ.
Не все они имеют одинаковый срок жизни и область действия.
1. Пароли пользователей¶
Пароль вводится только в предназначенную форму входа или смены пароля.
Не отправляйте пароль в чат даже локальной модели.
Почему:
- он сохранится в истории;
- может попасть в резервную копию;
- может быть случайно опубликован общей ссылкой;
- при облачной модели может уйти во внешний контур;
- он не нужен модели для диагностики входа.
Для обращения в поддержку достаточно:
без самого пароля.
2. Временный административный пароль¶
Если установщик создаёт временный пароль:
- получите его через защищённый канал;
- войдите;
- смените пароль;
- подтвердите повторный вход;
- удалите временный файл, если он создавался установщиком;
- не включайте этот файл в диагностический архив.
Наличие временного пароля в каталоге после завершения первого запуска следует считать дефектом эксплуатационного процесса.
3. Авторизованный ключ Яндекс Облака¶
Авторизованный ключ содержит закрытую криптографическую часть и используется сервером для выпуска временных IAM-токенов.
Важно:
- ключ создаётся для отдельной служебной учётной записи;
- закрытая часть требует безопасного хранения;
- фактические возможности ограничиваются ролями служебной учётной записи;
- файл ключа должен быть доступен только нужному серверному компоненту;
- браузер не должен получать содержимое ключа обратно после загрузки.
Подробнее: Авторизованный ключ.
4. IAM-токен¶
IAM-токен — краткоживущая техническая учётная сущность.
Пользователь в нормальном сценарии не должен работать с ним вручную.
Не делайте¶
- не копируйте токен в чат;
- не сохраняйте в документацию;
- не отправляйте в поддержку;
- не помещайте в скриншот;
- не записывайте полный токен в обычный журнал.
При диагностике достаточно статуса:
или кода ошибки обмена.
5. Закрытый TLS-ключ¶
TLS-сертификат может быть публичным. Его закрытый ключ — нет.
Он должен:
- храниться с ограниченными правами;
- не попадать в Git;
- не попадать в публичный архив документации;
- не отправляться в чат;
- резервироваться только согласно политике ключей организации.
При обращении в поддержку обычно достаточно имени сертификата, срока действия, отпечатка и сообщения об ошибке.
6. Пароли баз данных¶
Студия использует несколько хранилищ. Их пароли — серверные секреты.
Никогда не публикуйте наружу порт базы только ради удобства ручной диагностики.
Предпочтительнее проверять:
- с хоста;
- из внутреннего административного контейнера;
- через штатную проверку состояния.
Если временный внешний доступ всё же необходим для аварийной процедуры, он должен иметь отдельное обоснование, сетевое ограничение и быть закрыт сразу после завершения.
7. Переменные окружения¶
Файл окружения нельзя считать безопасным только потому, что его имя начинается с точки.
Проверьте права:
Рекомендуется:
- ограничить чтение владельцем и необходимой группой;
- не коммитить рабочий
.env; - хранить пример конфигурации без реальных секретов;
- не печатать весь файл при диагностике.
Плохая команда для обращения в поддержку:
Лучше извлечь только безопасные параметры или сформировать очищенный отчёт.
8. Секрет и модель¶
Модель не должна использоваться как хранилище секретов.
Не просите:
Не сохраняйте секрет:
- в память;
- в инструкцию помощника;
- в базу знаний;
- в название проекта;
- в обычный разговор.
9. Очистка журналов¶
Перед отправкой журнала третьему лицу или в поддержку проверьте:
Authorization:;Bearer;Cookie;- пароли в строках подключения;
- поля
private_key; - ключи программных интерфейсов;
- адреса электронной почты, если они не нужны;
- внутренние адреса, если их раскрытие нежелательно;
- содержимое пользовательских запросов.
Было:
Должно стать:
10. Скриншоты¶
Скриншот — такой же канал утечки, как текстовый файл.
Перед публикацией закрывайте:
- токены;
- электронную почту;
- чувствительные идентификаторы;
- внутренние адреса;
- имена приватных каталогов;
- секретные значения полей;
- QR-коды входа;
- резервные коды.
Для публичной документации лучше снимать экран с тестовыми данными, чем размывать рабочие секреты.
11. Ротация¶
Поводы для ротации:
- увольнение сотрудника, имевшего доступ;
- передача сервера другой команде;
- изменение области доступа;
- подозрение на компрометацию;
- истечение внутреннего срока;
- миграция инфраструктуры;
- неясная история старого ключа.
12. Ротация авторизованного ключа¶
Безопасная последовательность:
- создайте новый ключ;
- загрузите его в Студию;
- проверьте IAM;
- проверьте рабочий каталог;
- проверьте Yandex AI, если используется;
- проверьте Billing;
- убедитесь в работе пользователей;
- отзовите старый ключ;
- подтвердите отказ старого ключа;
- удалите временные копии.
Не оставляйте два действующих ключа неопределённо долго.
13. Действия при утечке секрета¶
Если секрет мог быть раскрыт:
- считайте его скомпрометированным;
- ограничьте соответствующий доступ;
- отзовите ключ, токен или пароль;
- создайте новый;
- проверьте журналы использования;
- определите период возможной компрометации;
- проверьте, куда секрет мог попасть дополнительно;
- удалите или отзовите опубликованные материалы;
- зафиксируйте инцидент по внутренней процедуре.
Нельзя считать секрет безопасным только потому, что сообщение с ним позже удалили.
14. Секреты в резервной копии¶
Резервная копия может содержать секреты прямо или косвенно.
Поэтому:
- не храните её в общедоступном каталоге;
- ограничивайте владельца;
- шифруйте по политике организации;
- учитывайте старые ключи внутри исторических копий;
- контролируйте доступ к хранилищу;
- уничтожайте просроченные копии по процедуре.
Ротация рабочего ключа не удаляет его из старой резервной копии автоматически.
15. Секреты и Git¶
Перед коммитом проверяйте:
и используйте средство поиска секретов, если оно принято в организации.
Если секрет однажды попал в историю Git, удаления из последнего файла недостаточно. Секрет нужно отозвать, а историю обработать отдельно.
16. Минимальная проверка сервера¶
Проверьте:
- рабочий
.envне читается всеми пользователями; - каталог
secrets/имеет ограниченные права; - закрытый TLS-ключ защищён;
- авторизованный JSON не раздаётся веб-сервером;
- базы данных не опубликованы наружу без необходимости;
- журналы не содержат полных токенов;
- резервные копии недоступны обычным пользователям;
- диагностические архивы очищаются перед передачей.