Я ищу ссылки или ответ здесь, как правильно настроить разрешения базы данных для защиты приложения Django? Чтобы быть ясным, я смотрю конкретно на материал, касающийся грантов в базе данных, а не на разрешения в самой структуре Django.
Как настроить разрешения базы данных для приложения Django?
Ответ 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
Ответ 4
Какова цель настройки разрешений на уровне БД? Если ваш сервер взломан, злоумышленник сможет что-либо сделать с вашей базой данных (потому что у него есть логин/пропуск), а permissons не помогут. Если ваш сервер защищен, разрешения становятся бесполезными.
Разрешения могут иметь смысл, если ваш сервер БД доступен из внешнего мира, но это не очень хорошая идея.