如何使用Ansible创建PostgreSQL只读角色?

时间:2016-05-20 20:18:45

标签: postgresql ansible ansible-2.x postgresql-9.5

我正在为内部仪表板创建一个PostgreSQL用户,我希望用户对数据库的访问权限默认为只读。

我做了一些研究,创建一个只读用户同样继承了对任何新表,物化视图等的访问权限似乎有点复杂。

所以我认为最简单的事情就是设置:

ALTER USER readuser SET default_transaction_read_only = on;

如何使用Ansible PostgreSQL模块进行设置?

我不确定我是否应该使用postgresql_privspostgresql_user模块。我尝试使用priv属性的不同值进行试验,但无法正常工作。

我知道这不保证是只读的,因为用户可以在运行时更改事务类型。但是,它对我的​​用例来说还不错,因为安全性不是问题,我只想防止无意识的用户意外修改数据。如果有人知道足以改变他们的交易,我宁愿假设他们知道他们正在做什么,并且有合理的理由。

1 个答案:

答案 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仍然可以通过这些访问数据库对象   特权。