zam*_*6ak 6 postgresql security best-practices users postgresql-9.4
我们有一个网络应用程序,可以检测数据库是否不存在并创建它。用户喜欢它,但我的想法是这样的用户拥有太多的权限。
我最好建议更改应用程序的数据库创建屏幕以提供 2 组凭据 - 一组将用于最初创建数据库而不是永久存储(例如“postgres”角色),另一组将被网络使用app 并存储在配置文件中(例如“webapp”)。此外,'webapp' 将需要能够 1) 添加新的和 2) 修改现有的表、过程和函数(Web 应用程序根据需要自动更新架构)
所以我的一些问题是:
实际上,最好的方法是让 Web 应用程序根本无权创建或修改表。它应该只有权做其日常职能所需做的事情,而不是行政管理。
特别是,Web 应用程序不得以超级用户身份运行,并且最好不拥有数据库或表。
如果 Web 应用程序具有用于在升级时更改表等的内置管理功能,则它应该通过一组单独的凭据来执行此操作,并允许您在每次执行升级时提示输入这些凭据。或者让您使用管理员凭据创建文件,运行升级,然后再次删除它。
如果您无法修复 Web 应用程序以使用不同的凭据进行架构更改,那么它也可能是数据库和表的所有者。只是不要让它成为超级用户!
如果您可以修复应用程序,使其使用不同的凭据进行架构更改,则其常规非架构更改用户不应拥有这些表或数据库。它应该仅具有数据库的 CONNECT 和 TEMPORARY 权限、模式的 USAGE 权限以及GRANT
对其编辑的每个表的所需权限。只是不要忘记REVOKE ALL FROM public ON DATABASE mydb;
和REVOKE ALL FROM public ON SCHEMA public;
。
归档时间: |
|
查看次数: |
1606 次 |
最近记录: |