Как обеспечить безопасный доступ к закрытым токенам?

Как обеспечить доступ к API с использованием токена для другого пользователя, если файл .env с токеном не будет доступен после клонирования репозитория?
  • 4 апреля 2024 г. 17:49
Ответы на вопрос 5
1. Храните токены в отдельном файле конфигурации, который не будет добавлен в репозиторий версионного контроля. Это позволит избежать случайного раскрытия токенов. Лучше всего хранить такие конфиденциальные данные в переменных среды.

2. Используйте систему управления секретами, такую как Vault или AWS Secrets Manager, для хранения и управления токенами. Эти инструменты обеспечивают безопасное хранение и передачу секретных данных.

3. Реализуйте механизм аутентификации и авторизации для доступа к API с использованием токена для другого пользователя. Это может быть встроенная система управления доступом или сторонний сервис для управления правами доступа.

4. При клонировании репозитория предоставляйте доступ к файлу с токеном только определенным пользователям или приложениям. Можно использовать механизмы шифрования или маскировки для защиты конфиденциальных данных.
В репозитории хранится .env.example , содержащий заглушки ключей и комментарии с инструкциями для их получения. После клонирования он переименовывается и заполняется.
да блин, элементарно же - не пушай в репо. 
есть 100500 способов это сделать.
Это тебе не хогвартс, а просто гит. 

Либо даёшь инструкции для получения токена, либо генеришь отдельный ключ для гита, чтобы ты понимал кто из вне стучится и контролировал процессы, по типу разрешений, кол-ва запросов допустимых и доступа в целом.
1. НИКОГДА не храните секреты (токены, логи-пассы и т.д.) в коде, который сохраняете в Git. Даже для пет-проектов. Даже если вы потом удалите этот токен из файла, он навсегда сохранится в истории гита, потом вы про это забудете, поделитесь кодом с кем-то, и он найдёт этот токен в истории. Вопрос не в том, найдет ли пользователь этот токен или нет, вопрос только в том, когда он найдёт этот токен. Очень-очень-очень многие просто забывают о том, что когда-то коммитили токен в репозиторий, забывают вычистить историю, и этот токен утекает... 

2. Код и секреты - это отдельные сущности, и жить они должны в разных местах. Если хотите поделиться кодом, обязательно опишите в README процесс получения токена, чтобы пользователи смогли хоть как-то этим кодом пользоваться. Это хороший тон в open-source.

3. Если вы будете пользоваться системами CI/CD от Github или Gitlab, то там у репозиториев есть специальные разделы, в которых можно безопасно хранить секреты. Но вы должны быть внимательными, если сделаете кого-нибудь контрибьютером в вашем проекте. Не забудьте проверить все разрешения, которые выдаёте этим людям, потому что они при деплое проекта через эти системы CI/CD смогут вычитать ваши секреты. Если вы один хозяин репозитория, то хранить секреты там вполне безопасно.

4. Если же вам всё-таки по какой-то причине очень надо, чтобы пользователи всё же как-то работали с вашим токеном, то единственное, что мне приходит в голову - это написать приложение типа API Gateway, которое будет имитировать ту апиху, от которой ваш токен. И это ваше приложение будет иметь базу данных пользователей которые смогут в вашем приложении регистрироваться и получать уже ваши токены, вами сгенерированные, для доступа к вашей апихе, а ваша апиха будет внутри себя вытаскивать данные из оригинальной API по оригинальному токену и отдавать эти данные им.
Похожие вопросы