Подтвердить что ты не робот

Как настроить разрешения базы данных для приложения Django?

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

4b9b3361

Ответ 1

Я обычно:

grant all privileges on my_db.* to [email protected] identified by 'my_user_pass'
grant all privileges on test_my_db.* to [email protected] identified by 'my_user_pass'

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

django минимально нуждается в выборе, вставке, обновлении и удалении для работы. Если вы используете тест или syncdb вообще, вам также нужно будет создавать таблицы и индексы (и, возможно, разрешение файла для загрузки sql-приборов).

Итак, для mysql db, я думаю, оптимальный набор разрешений может быть выбран, вставлять, обновлять, удалять, создавать, индексировать и файл. Если вы хотите получить реальную мелочь, вы можете выборочно предоставить эти разрешения соответствующим образом на уровне таблицы (а не на уровне db).

Лично я нахожу grant all ... легче набирать.

Ответ 2

Из django docs:

https://docs.djangoproject.com/en/dev/topics/install/

"Если вы планируете использовать команду Djangos manage.py syncdb для автоматического создания таблиц базы данных для своих моделей (после первой установки Django и создания проекта), вам необходимо убедиться, что Django имеет разрешение на создание и изменение таблиц в базе данных вы используете, если вы планируете вручную создавать таблицы, вы можете просто предоставить разрешения Django SELECT, INSERT, UPDATE и DELETE. В некоторых базах данных Django будет нуждаться в привилегиях ALTER TABLE во время syncdb, но не будет вызывать инструкции ALTER TABLE в таблице, как только syncdb будет создав его. После создания пользователя базы данных с этими разрешениями вы укажете детали в файле настроек проектов, подробнее см. БАЗЫ ДАННЫХ."

Ответ 3

Я только что проверил начальную настройку с MySQL. Для python manage.py migrate по крайней мере вам понадобятся следующие гранты для простой работы (если вы используете db-подготовку):

  • CREATE, ALTER, INDEX
  • SELECT, UPDATE, INSET, DELETE
И, между прочим, вопросы безопасности. Вы можете уменьшить воздействие атаки, ограничив воздействие вашей системы. В этом случае вы можете ограничить "DROP" - это довольно большой плюс. Если вы оставите какое-то сложное отверстие с возможностью SQL-инъекции - вы, вероятно, уменьшите повреждение. Я буду исследовать в будущем, если он не причинит никакого вреда удалению ключевого слова DELETE, что также ограничило бы потенциальные угрозы. Просто потому, что время от времени мы оставляем ошибки:)

Ответ 4

Какова цель настройки разрешений на уровне БД? Если ваш сервер взломан, злоумышленник сможет что-либо сделать с вашей базой данных (потому что у него есть логин/пропуск), а permissons не помогут. Если ваш сервер защищен, разрешения становятся бесполезными.

Разрешения могут иметь смысл, если ваш сервер БД доступен из внешнего мира, но это не очень хорошая идея.