Django 的受限数据库用户

Pēt*_*une 2 python database security django postgresql

我正在使用 Postgres 数据库运行 Django。除了应用程序级别的安全检查,我正在考虑添加数据库级别的限制。例如,应用程序代码应该只能插入日志表,而不能从日志表中更新或删除。

我会为此手动创建具有适当授权的数据库用户。我还需要一个更强大的用户来运行数据库迁移。

我的问题是,人们会练习这样的事情吗?关于在 Django 中使用受限数据库用户的任何建议和最佳实践?

编辑:澄清一下,没有技术问题,我只是想听听其他人的经验和外卖。Django 特有的一件事是,我至少需要两个数据库用户:用于正常操作和运行迁移。我在哪里存储更多特权用户的凭据?也许manage.py migrate提示输入密码?

至于推理,假设我的应用程序存在 SQL 注入漏洞。使用特权用户,攻击者可以执行诸如删除所有表之类的操作。对于更有限的用户,潜在的损害稍微小一些,然后在仅插入日志表中有一些证据。

leh*_*ins 6

我尝试解决这个问题的方法是:

  • 为同一个数据库但不同的用户设置两个数据库连接:
    1. 非特权数据库用户的“默认”。
    2. 'master' 用于对数据库具有完全访问权限的用户。
  • 根据您的喜好配置路由器:https : //docs.djangoproject.com/en/dev/topics/db/multi-db/
  • 执行迁移: ./manage.py migrate --database=master

话虽如此,如果你有一个漏洞,比如 SQL 注入,即使是一个可以阅读的用户,也已经是一场灾难。如果你有数据库备份设置,你不应该担心丢失/损坏的数据,你应该担心数据泄漏!

另一方面,所提出的问题可能还有其他用例。