Что нам делать со всеми секретными строками, такими как пароли или приватные ключи, которые есть в нашем коде?
Самый простой и неправильный способ обработки этих важных учетных данных — жестко закодировать их в нашем исходном коде. Когда вы отправляете код в репозиторий, вы делитесь своими секретами со всеми остальными участниками вашевашего проекта и не только. Даже если вы работаете в одиночку, это может вызвать проблемы, поскольку любой, кто увидит ваш код, также получит доступ к вашей секретной информации.
Храните приваные данные в переменных окружения
Самый безопасный способ обращения с вашими приватными ключами/паролями — сохранить их в переменных окружения. В этой статье я покажу, как сохранить важные учетные данные в переменных среды и получить к ним доступ в скрипте Python.
Линукс
Использование файла.bash_profile
учетной записи
Чтобы сохранить пароль или приватный ключь в переменной среды в Linux (и Mac), вам необходимо изменить.bash_profile
файл, который находится в вашем домашнем каталоге. Вам нужно открыть терминал и перейти в домашний каталог.
$ cd ~
Откройте.bash_profile
файл для редактирования, например, выполнив команду:
$ nano .bash_profile
Впишите имена и значения приватных переменных в файл:
export USER="username"
export PASSWORD="password"
Примечание. С обеих сторон знака "=" не должно быть пробелов.
Сохраните файл nano, нажав ctrl + x и Y.
Примените изменения с помощью команды:
$ source .bash_profile
Использование отдельного .env
файла
Вышеупомянутый метод сохраняет секретные учетные данные для всей системы, что может быть не очень хорошей идеей, если у вас есть несколько приложений.
Решение состоит в том, чтобы хранить секреты в отдельном .env
файле.
Файл .env содержит только текст, где в каждой строке указано одно значение переменной среды.
Создайте .env
файл в своем проекте и добавьте свои секретные ключи или пароли:
USER=username
PASSWORD=password
Важно: Обязательно добадобавьте имя файла .env в файл .gitignore.
Теперь вам нужно установить модуль python-dotenv. Python-dotenv — это модуль Python, который позволяет вашему приложению Python считывать .env файл. Этот пакет будет искать .env и, если он его найдет, предоставит приложению содержащиеся в нем переменные.
$ pip install -U python-dotenv
Windows
Чтобы сохранить пароли и секретные ключи в переменных среды в Windows, вам нужно будет открыть Расширенные настройки системы.
Вы можете перейти к Панель управления -> Система и Безопасность -> Система -> Дополнительные параметры системы.
В дополнительных параметрах системы нажмите Переменные среды.
Здесь мы можем добавить новые переменные уровня пользоватля и уровня системы. Добавим переменную среды пользователя, щелкнув кнопку Создать... под пользовательскими переменными.
В новом окне добавьте Имя переменной и Значение переменной и нажмите ОК.
Теперь нажмите ОК в окне Переменные среды , чтобы сохранить изменения.
Доступ к переменным среды
Чтобы получить доступ к этим переменным в нашем скрипте Python, нам нужно импортировать модуль os.
Для считывания переменой, используется метод os.environ.get() с перечей имени ключа, к которому мы хотим получить доступ.
Если вы используете модуль .python-dotenv, дополнительно нужно импортировать модель и загрузить переменные из файла.
load_dotenv()
либо
env_path = Path('.') / '.env'
load_dotenv(dotenv_path=env_path)
И далее считать значение переменных
import os
user_name = os.environ.get('USER')
password = os.environ.get('password')
В случае проекта Django вы должны добавить приведенный выше скрипт вверху wsgi.py и в manage.py файл.
import os
SECRET_KEY = os.getenv("EMAIL")
DATABASE_PASSWORD = os.getenv("DATABASE_PASSWORD