如何撤銷登錄角色中的所有組角色?有沒有辦法自動做到這一點?如何撤銷登錄角色中的所有組角色
0
A
回答
4
既然你可以GRANT
/REVOKE
一次身兼數職,一個DO
命令與動態SQL會更簡單/快(基於集合的操作經常要更快一些在RDBMS比循環):
DO
$$
BEGIN
EXECUTE (
SELECT 'REVOKE ' || string_agg(quote_ident(rolname), ', ')
|| ' FROM ' || u.usename
FROM pg_user u
JOIN pg_auth_members m ON (m.member = u.usesysid)
JOIN pg_roles r ON (r.oid = m.roleid)
WHERE u.usename = 'my_user'
GROUP BY u.usename
);
END
$$
的DO
命令以及string_agg()
aggregate function需要PostgreSQL 9.0或更高版本。
quote_ident()
確保非標準標識符不會造成麻煩(包括SQL注入)。
有效執行如下命令:
REVOKE role_a, role_b, "FROM postgres; DELETE * FROM usr; --" FROM my_user;
,如果沒有格蘭特的發現不會做任何事情。
Note the tricky name in double quotes, but properly quoted by quote_ident()
.
BTW:這個撤銷所有格蘭特的 「組角色」 與否。這些都只是PostgreSQL的角色,有些具有LOGIN
權限,有些則不具備(「組角色」)。 user
和group
之間的區別是歷史。
0
認爲需要通過結果撤銷rolname FROM USENAME查詢所有角色
select usename, rolname
from pg_user
join pg_auth_members on (pg_user.usesysid=pg_auth_members.member)
join pg_roles on (pg_roles.oid=pg_auth_members.roleid)
和LOOP;
相關問題
- 1. ASP.NET登錄角色?
- 2. 如何獲取角色中的所有用戶,包括角色中的角色?
- 3. 從繼承角色撤銷SELECT
- 4. 設計:登錄到另一個角色時自動註銷一個角色
- 5. JSP登錄用戶角色
- 6. 登錄時檢查角色
- 7. 登錄Web角色MVC
- 8. Elmah登錄Azure Worker角色?
- 9. 擴展角色/角色組
- 10. 如何創建角色用戶登錄?
- 11. 如何確定登錄用戶角色
- 12. 選擇用戶帳戶未登錄數據庫180天以撤銷角色
- 13. 隱藏角色的「所有記錄」
- 14. 組角色/組與流星角色包
- 15. 確定給定期間的所有人員角色授予/撤銷
- 16. 如何獲取systemuser的所有角色?
- 17. asp.net身份獲取登錄用戶的所有角色
- 18. 如何讓我的程序打印出每個角色爲「角色#1 :(角色),角色#2 :(角色)等」?
- 19. 如何檢索用戶所屬的所有角色(組)?
- 20. Web角色/員工角色/ VM角色?
- 21. 如何組織Ansible角色?
- 22. PHP根據用戶的「角色」登錄
- 23. 登錄 - 不同的用戶角色
- 24. 安裝Jenkins角色策略插件後 - 所有登錄失敗
- 25. Sitecore獲取所有角色
- 26. 如何檢查未登錄的用戶是否有角色?
- 27. SAP Hana撤消用戶的所有特權和角色
- 28. ASP.NET身份 - 如何獲取所有角色以及如何刪除角色?
- 29. 如何獲取dotnetnuke中的所有角色組
- 30. 獲取當前用戶角色下的所有角色
謝謝Erwin的回答。 –