我正在为java中的数据库开发安全产品。此产品的一个功能是根据数据库特权和活动创建安全建议。
为了做到这一点,我需要从db2中提取特权数据。 到目前为止,我已经阅读了很多关于db2安全性的文档,但我还没有找到针对以下问题的解决方案:
Db2 udb security, part 4文章解释了如何仅提取权限,但here说明了:
实例级别权限级别(SYSADM,SYSCTRL,SYSMAINT和SYSMON)和组成员身份在DB2 UDB之外定义,因此不会反映在系统目录表中。
据我了解,当局对用户的权限有影响,因此对于全面了解数据库的权利至关重要。
此外,本文还介绍了如何获取关联用户的权限,但没有解释如何获取所有用户\组的所有权限。与此答案类似:How to check DB2 SYSADM or SYSCTRL authorization for a user
所以我的问题是如何在单个查询中提取所有实体的权限?
答案 0 :(得分:1)
在DB2 for LUW中有一个table function AUTH_LIST_AUTHORITIES_FOR_AUTHID()
:
select * from table (AUTH_LIST_AUTHORITIES_FOR_AUTHID('JOHN','U'))
自DB2 9.7开始提供。
您仍然需要访问操作系统来枚举用户和组。