我正在为内部仪表板创建一个PostgreSQL用户,我希望用户对数据库的访问权限默认为只读。
我做了一些研究,创建一个只读用户同样继承了对任何新表,物化视图等的访问权限似乎有点复杂。
所以我认为最简单的事情就是设置:
ALTER USER readuser SET default_transaction_read_only = on;
如何使用Ansible PostgreSQL模块进行设置?
我不确定我是否应该使用postgresql_privs
或postgresql_user
模块。我尝试使用priv
属性的不同值进行试验,但无法正常工作。
我知道这不保证是只读的,因为用户可以在运行时更改事务类型。但是,它对我的用例来说还不错,因为安全性不是问题,我只想防止无意识的用户意外修改数据。如果有人知道足以改变他们的交易,我宁愿假设他们知道他们正在做什么,并且有合理的理由。
答案 0 :(得分:0)
我不确定我是否应该使用postgresql_privs或 postgresql_user模块。我尝试过尝试不同的价值观 对于priv属性,但无法正常工作。
你有没有试图撤销私人资格?:
return all(dict2.get(key, val) == val for key, val in dict1.iteritems())
注意:
要仅撤消特定对象的GRANT OPTION,请将状态设置为 present和grant_option为no(参见示例http://docs.ansible.com/ansible/postgresql_privs_module.html)。
请注意,从角色R撤消权限时,此角色可能仍然存在 通过授予R所属的任何角色的权限进行访问 包括PUBLIC。
请注意,从角色R撤消权限时,您可以执行此操作 用户通过登录指定。如果R已被授予相同的权限 另外一个用户,R仍然可以通过这些访问数据库对象 特权。