Best Practices Python - Где хранить API KEYS/TOKENS

Я создаю систему, которая использует токены и ключи API для доступа к службам, но где лучше всего их хранить? Я хочу отправить код на GitHub, не отправляя токены.

В настоящее время я поместил их в пустой файл с именем Constants.py и импортировал Constants.py в основной файл Python.

API_KEY_SERVICE = "ABC123ABC"

Основной.ру:

import Constants
service_key = Constants.API_KEY_SENDGRID

Один из вариантов — прочитать эти константы из переменных окружения. Таким образом, у вас не будет никаких секретов в исходном коде.

Andrej Kesely 11.07.2019 20:32

В качестве первого шага вы должны добавить файл в .gitignore, чтобы предотвратить случайные коммиты и нажатия.

Klaus D. 11.07.2019 20:32

Другой использует файл yaml и добавляет .yaml в .gitignore.

Niloct 11.07.2019 20:33
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
10
3
8 439
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

То, что вы пытаетесь, - это правильный способ отделить конфиденциальную информацию от кода. Вы должны включить constants.py в свой .gitignore файл, чтобы не дать git отслеживать этот файл и, таким образом, не отправлять его на github.

Для .gitignore см.: https://git-scm.com/docs/gitignore

Есть несколько вариантов:

  1. Сохраните его локально, как у вас есть, и, как заметил Себастин Санти, добавьте const.py в ваш файл .gitignore.

  2. Сохраните его как переменную среды, если вы используете виртуальную среду conda. Виртуальные среды не сохраняются; требования для его создания находятся в файле requirements.txt. Вы можете найти больше на шагах из конда документация

  3. Используйте Модуль ОС

  4. Если у вас более одного набора переменных среды, вы можете рассмотреть возможность использования отделить.

  5. Если вы используете AWS, вам нужно хранить ключи (которые будут сторонними) в их собственной области с собственным IAM. AWS рекомендует два способа.

Мне нравится, что вы включили AWS в свой ответ, но мне любопытно, почему вы не упомянули AWS Secrets Manager?

BilliD 25.11.2021 21:17

Другие вопросы по теме