Хранение секретов
Храните токен API в согласованном хранилище или передавайте его клиенту на время одного запуска. Значение токена должно быть доступно только среде выполнения клиента.
Согласовать способ с пользователем
- Определите, где будет работать клиент и как долго ему нужен доступ. Проверьте по настройкам проекта, есть ли штатное хранилище секретов или уже подключённый секрет. Для этого достаточно метаданных и имён настроек.
- Предложите подходящий способ из таблицы. Назовите стенд, имя секрета, место хранения и процесс, который сможет его прочитать. Укажите, как заменить или удалить токен.
- Дождитесь согласия пользователя перед созданием, переносом или сохранением секрета. Если защищённого способа пока нет, остановите защищённые вызовы и предложите пользователю настроить его.
| Где работает клиент | Как передать токен |
|---|---|
| Сервис, CI или планировщик | Используйте хранилище секретов платформы. Дайте право чтения только среде запуска клиента и подключите секрет при запуске. Для тестового и рабочего стендов используйте разные записи. |
| Регулярный локальный запуск | Используйте системную связку ключей или менеджер секретов, настроенный пользователем. Клиент получает значение перед запросом. |
| Одноразовая локальная проверка | Попросите пользователя ввести токен со скрытым вводом. Передайте его только процессу клиента, например через временную переменную окружения. Удалите её после запуска. |
Подключить секрет к клиенту
Попросите пользователя самостоятельно внести значение в выбранное хранилище или поле скрытого ввода. В коде укажите только имя секрета или переменной. Клиент читает значение в момент запуска и использует его для авторизации на выбранном стенде.
Исключите значения токенов из переписки, контекста агента, аргументов команд, исходников, файлов проекта, истории команд и журналов. При диагностике показывайте только факт наличия секрета и результат вызова. Проверьте, что HTTP-логирование скрывает заголовок Authorization.
Если токен оказался в переписке, исходниках или журнале, сообщите пользователю, где произошло раскрытие. Попросите отозвать токен, получить новый и заменить значение в согласованном хранилище. После замены проверьте доступ без вывода токена.