3

我正在爲內部儀表板創建一個PostgreSQL用戶,我希望用戶對db的訪問權限默認爲只讀。如何讓用戶Ansible設置PostgreSQL的只讀角色?

我做了一些研究,這似乎是一個有點複雜,創建一個只讀用戶誰也繼承到任何新表的訪問,物化視圖等

所以我覺得最簡單的事情就是設置:

ALTER USER readuser SET default_transaction_read_only = on; 

如何使用Ansible PostgreSQL模塊來設置它?

我不確定我是否應該使用postgresql_privspostgresql_user模塊。我嘗試了priv屬性的不同值,但無法獲取任何內容。

我知道這不能保證只讀,因爲用戶可以在運行時更改事務的類型。但是,這對我的用例來說很好,因爲安全性不是問題,我只是想防止無知的用戶意外修改數據。如果某人有足夠的知識來改變他們的交易,我寧願假設他們知道他們在做什麼並且有合理的理由。

回答

0

我不確定我是否應該使用postgresql_privs或 postgresql_user模塊。我嘗試使用不同的值 作爲priv屬性的實驗,但無法獲得任何工作。

你有沒有試圖撤銷PRIVS?:

# REVOKE INSERT, UPDATE ON ALL TABLES IN SCHEMA public FROM reader 
# "public" is the default schema. This also works for PostgreSQL 8.x. 
- postgresql_privs: > 
    db=library 
    state=absent 
    privs=INSERT,UPDATE 
    objs=ALL_IN_SCHEMA 
    role=reader 

注:

要撤銷針對特定對象只GRANT OPTION,設置狀態 現在和grant_option沒有(見例子http://docs.ansible.com/ansible/postgresql_privs_module.html)。

注意,從卷R撤消特權時,這個角色可能還是 必須通過授予任何角色的權限r訪問的 成員包括公衆。

請注意,當從角色R中撤銷權限時,您可以通過登錄名指定 用戶。如果R已被其他用戶 授予了相同的權限,則R仍然可以通過這些 權限訪問數據庫對象。