【问题标题】:DB2 how to get user privilege information when privilege is granted to its groupDB2如何在授予其组权限时获取用户权限信息
【发布时间】:2016-11-22 04:11:56
【问题描述】:

我将架构“test”的架构 CREATEIN 权限授予用户组“test-group”,然后添加用户“test-user” >' 进入 Windows 操作系统中的这个 'test-group'。

我想知道可以使用什么 DB2 函数或 SQL 语句来检索用户“test-user”的权限信息。我知道 DB2 中没有定义用户组关系,但必须有一些方法可以查找这种关系数据。

例如,我可以在用户'test-user'登录数据库后在模式'test'中成功创建表,这意味着DB2引擎可以获取'test-user' CREATEIN 权限继承自 'test-group'。

我尝试通过 SQL 语句检查 syscat.schemaauth 视图 select * from syscat.schemaauth 但找不到用户 'test-user' 权限定义 只有组 'test-group' 权限定义:

GRANTOR      GRANTORTYPE  GRANTEE GRANTEETYPE  SCHEMANAME   ALTERINAUTH   CREATEAUTH  DROPINAUTH
...  ....
SYSIBM          S          PUBLIC   G         ADMINISTRATOR N                Y          N
ADMINISTRATOR   U          TEST     G          TEST         N                Y          Y
.. ...

【问题讨论】:

    标签: security db2 privileges


    【解决方案1】:

    您可以使用表函数AUTH_LIST_GROUPS_FOR_AUTHID 来查找“test-user”的组。这将列出用户所属的 ALL 个组,包括不用于数据库的操作系统组。

    SELECT * FROM TABLE (SYSPROC.AUTH_LIST_GROUPS_FOR_AUTHID('TEST-USER')) AS T
    

    还有另一个视图 SYSIBMADM.AUTHORIZATIONIDS,它列出了所有授权 ID,即组、用户和角色:

    SELECT * FROM SYSIBMADM.AUTHORIZATIONIDS
    

    您需要的最后一个视图是SYSIBMADM.PRIVILEGES,它列出了权限。根据您的需要,您可以组合三个视图/表格功能

    • 在用户组中查找数据库已知的组
    • 列出用户的权限并且
    • 列出用户所属所有组的权限

    更新:
    我产生了兴趣并迅速输入并测试了一个查询。这应该直接回答。 “or a.authid='PUBLIC'”需要包含来自 PUBLIC 的权限。

    SELECT distinct p.AUTHID, p.PRIVILEGE, p.OBJECTNAME, p.OBJECTSCHEMA, p.OBJECTTYPE   
    FROM SYSIBMADM.PRIVILEGES P, SYSIBMADM.AUTHORIZATIONIDS A,   
         TABLE (SYSPROC.AUTH_LIST_GROUPS_FOR_AUTHID('userID')) as U  
    WHERE p.privilege='CREATEIN' and a.authidtype='G' and a.authid=p.authid
    AND (u.group=a.authid or a.authid='PUBLIC')
    

    【讨论】:

    • 酷,谢谢 Henrik。根据您的建议,我得到了我需要的东西。感谢您在这方面的帮助。
    • 是的,亨里克。很高兴您的更新回答了我的另一个问题,即“如何获取默认组公共问题”。 :-)
    • 我实际上使用附加的 SELECT 语句创建了一个博客条目。见这里blog.4loeser.net/2016/11/db2-security-implicit-privileges.html
    • 嵌套组呢?当用户在子组中并且父组具有特权时,这会处理这种情况吗?
    • 试一试并报告。 :)
    猜你喜欢
    • 2019-10-03
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    相关资源
    最近更新 更多