LINUX.ORG.RU

скрытие пароля к mariadb в python скрипте

 ,


0

1

Пока у меня данные для подключения к БД берутся из текстового файла settings.py и в самом скрипте использую такой блок кода:

try:
    conn = pymysql.connect(
        user=str(settings.user),
        password=str(settings.password),
        host=str(settings.host),
        port=settings.port,
        database=str(settings.database)
    )
except Exception as e:  # print error message when Exception occurs
    print(f"Error connecting to MariaDB Platform: {e}")
    sys.exit(1)

# cat settings.py 
user = "uzer"
password = "passwd"
host = "hostname"
port = 3306
database = "db"

Я думал вместо settings.py использовать переменные окружения в .env файле, но проблема в том что на этом linux box есть только юзер root и нет возможности создать другого юзера. Получается в любом случае несекьюрно, в любой момент можно просмотреть содержимое переменных через вывод команды env. Может есть еще какие-то варианты сделать это секьюрно в python или на уровне ОС?

но проблема в том что на этом linux box есть только юзер root и нет возможности создать другого юзера

Это как?

Получается в любом случае несекьюрно

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

adn ★★★★
()

А что user надо непременно их whoami брать? Нельзя сделать переменную окружения DATABASE_USER?

Aswed ★★★★★
()
Ответ на: комментарий от Aswed

ну так тогда в любой момент можно все переменные для доступа к БД через env просмотреть:

# env | less
# env | grep DATABASE_USER
# env | grep DATABASE_PASSWORD
zorinquen
() автор топика
Ответ на: комментарий от zorinquen

Делаешь лаунчер который выстваляет переменные окружения конкретно для твоего приложения. Или используешь готовый. Гугли всякие vault и secret environment variable.

Aswed ★★★★★
()
Ответ на: комментарий от Aswed

спасибки! интересная вроде штука этот HashiCorp Vault

zorinquen
() автор топика

Если не секрет, где такой сервер нашел, что твм только root и все процессы только от него работают?

IIIypuk ★★★★
()

Тебе в любом случае нужно будет где-то хранить пароль в открытом виде на твоём linuxbox. С доступом к руту это всегда будет не секурно.

Тут лучше смотреть на ограничения на стороне mariadb и зафаерволить его, ну и доступ выдавать на конкретный ip, типа:

GRANT ALL ON wpdb.* to ‘wpuser’@‘208.117.84.50’

а пароль вообще убрать за ненадобностью.

Понятно, что ip могут подменить и т.п., но альтернативы не лучше. Безопасность подключения всегда лимитирована безопасностью подключающегося.

Ivan_qrt ★★★★★
()

А вот PostgreSQL от рута запускаться отказывается.

pr849
()
Ответ на: комментарий от IIIypuk

это не сервер, это tvbox x86 mini, с установленным CoreELEC OS на microSD карту.

zorinquen
() автор топика

С такими вводными пожалуй никак. Можно было бы попробовать через selinux ограничить доступ к файлу с секретной информацией, но т.к. это неполноценный linux, то и selinux там нет. Да и судя по коду строка с кренделями все время в памяти лежит, так что ее можно вынуть из /dev/mem Попробуй зашифровать кренделя и расшифровывать где-то перед вызовом драйвера бд, так атакующему хотя бы в сорцах придётся поковыряться

cobold ★★★★★
()
Ответ на: комментарий от realbarmaley

в смысле создать юзера с паролем вручную редактировав эти файлы? а толку? ведь root сможет просмотреть содержимое его домашнего каталога, где будут храниться DATABASE_USER и DATABASE_PASSWORD.

zorinquen
() автор топика
Ответ на: комментарий от zorinquen

Если вы не доверяете провайдеру/администратору, то можете тогда вообще пароль не ставить на сервере…

realbarmaley ★★
()
Ответ на: комментарий от zorinquen

Все равно советую запускать mariadb и ваше прилоюение не от root, потому что если что то случится, можно будет просто домашнюю директорию и /tmp стереть для дезинфекции.

realbarmaley ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.