Это плохая идея динамически загружать файлы env? [закрыто]Python

Программы на Python
Ответить
Anonymous
 Это плохая идея динамически загружать файлы env? [закрыто]

Сообщение Anonymous »

Предположим, у вас есть кодовая база, содержащая несколько проектов. У каждого проекта есть своя среда. Эти среды не хранятся в системе контроля версий (они содержат секреты и т. д.).
Каждому проекту при запуске необходимо загружать соответствующую среду. Это можно сделать с помощью файлов dotenv или прямого выполнения оболочки и т. д.
Проблема в том, что это приводит к разногласиям — теперь каждый раз, когда вы запускаете двоичный файл, вам нужно обязательно загрузить и загрузить правильный файл env.< /p>
Таким образом, одним из подходов может быть автоматическое создание библиотек Python/typescript/[вставьте сюда язык] из этих сред. Это
  • обеспечит безопасность типов для переменных env, чтобы вы знали, какие переменные доступны в конкретной среде и их типы.
  • Автоматически загружайте соответствующую среду при импорте, поэтому вам не нужно устанавливать ее при запуске двоичного файла.
Я думаю, что 1) это еще стоит сделать, вот и ищу варианты как это сделать. Мой вопрос сегодня о 2). Это плохая идея?
Я думаю примерно так:

Код: Выделить всё

# generated_env_lib.py

import os

# We can do this here at import time or later
# on instantiation of the class, tbd
with open('/path/to/src/.env', 'rt') as f:
for line in f.readlines():
name, value = line.split('=')
# Determine behavior if `name` is already present -
# overwrite or throw ValueError
os.environ[name] = value

# The following has been auto-generated previously with the contents
# of the env file
class Env:
@property
def x(self) -> int:
return os.environ['X']

# Finally, enforce all the Env properties are found in the
# `os.environ` map and are available to use on load.
Я думаю, это может работать хорошо и быть весьма полезным. Единственная проблема, которую я вижу, заключается в том, что двоичный файл должен иметь доступ к файлу .env, поскольку ему необходимо его прочитать. Поэтому, когда вы упаковываете Docker-контейнер вместе с файлом Python, вам необходимо включить в контейнер файл .env. Аналогично, если вы хотите отправить некоторый код реагирования на свой интерфейс, вам необходимо убедиться, что файл .env находится среди исходных файлов, которые отправляются на интерфейс для обслуживания (и они читаются во время выполнения).< /p>
Я опасаюсь включать файл .env в контейнер, поскольку он может быть не очень безопасным — технически люди не должны иметь доступа к данным в контейнере, который я помещаю, например. google cloud, но я думаю, что оно также не предназначалось для хранения секретов, поэтому, возможно, я не рассматриваю пути атаки.
Это плохая идея? Ждем любых предложений! :)

Подробнее здесь: https://stackoverflow.com/questions/792 ... ynamically
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

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

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»