【问题标题】:How to revoke user access to database metadata tables in DB2如何撤销用户对 DB2 中数据库元数据表的访问权限
【发布时间】:2020-07-06 17:03:43
【问题描述】:

我正在尝试撤销对使用 Sysibm 模式获取数据库元数据信息的用户(无论是 testUser 还是 db2instance 用户)的访问权限。如果我运行以下查询

SELECT NAME, COLTYPE, LENGTH FROM SYSIBM.SYSCOLUMNS WHERE TBNAME = 'tableName';

我得到了我在查询中传递的表的信息。可以做些什么来限制对用户的访问?

我跑了

REVOKE ALL ON TABLE SYSIBM.SYSCOLUMNS FROM user;

并收到以下错误:

com.ibm.db2.jcc.am.SqlSyntaxErrorException: An attempt to revoke a privilege, security label, exemption, or role from "USER" was denied because "USER" does not hold this privilege, security label, exemption, or role.. SQLCODE=-556, SQLSTATE=42504

即使使用 db2instance 用户,我也会收到相同的错误消息。但是,select 语句给了我正确的结果。

我相信 Sysibm 是存储所有数据库相关信息的地方。我想限制对它的访问,以便用户无法获取有关我的数据库的元数据。

【问题讨论】:

  • 您想通过对用户隐藏目录信息来达到什么目的?默默无闻的安全性几乎没有什么好处。
  • 我正在验证我的应用程序处理这种情况的能力。

标签: database db2


【解决方案1】:

来自https://www.ibm.com/support/knowledgecenter/SSEPGG_11.1.0/com.ibm.db2.luw.admin.sec.doc/doc/c0054269.html

在非限制性数据库中,特殊组 PUBLIC 被授予以下权限:

在所有 SYSCAT 和 SYSIBM 表上选择

(除其他外。完整列表请参见手册页)

所以你需要撤销PUBLIC的访问权限

您可能还想阅读从上述页面链接的文章。 A practical guide to restrictive databases

【讨论】:

  • OP 应该意识到撤销目录 SELECT 权限可能会影响数据库驱动程序(ODBC 和 JDBC)、GUI 客户端和许多 ORM 框架正常运行的能力。
【解决方案2】:

从 10.5.5 开始,您可以在系统目录表上 CREATE PERMISSION。这使您能够为特定用户“隐藏”一些对象,但您需要自己编写逻辑代码。

例如,可能是这样的:如果用户具有任何表权限或在数据库上具有DATAACCESSACCESSCTRL,则用户可以查看表定义...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 2013-04-20
    • 2021-07-07
    • 2012-07-30
    相关资源
    最近更新 更多