汽车Db2

db2 查询问题?

DB2 版本v11.1
我创建了一个用户test1 赋予db2 connect权限和对数据库表test1的select权限,
为什么我用dbeaver 工具 用test1这个账户连接上去,能看到其他表存在,虽然会因为权限无法查看表里面
数据。不知道db2能不能实现我这个test1账户 连上去,看不到其他对象,只能看到我赋予权限的相关对象呢?

参与1

0同行回答

“答”则兼济天下,请您为题主分忧!

ChatGPT 回答

在DB2中,可以通过授权来控制用户对数据库对象的访问权限。在你的情况下,虽然你已经为用户test1授予了对test1表的select权限和对DB2的connect权限,但是你没有控制test1用户对其他表的访问权限。

要实现test1用户只能看到被授权的对象,可以使用DB2的行级别安全性(RLS)功能。该功能允许你基于行级别的谓词来限制用户对表的访问。你可以为test1用户创建一个谓词,该谓词只允许test1用户访问test1表中的行,而不允许访问其他表中的行。

以下是实现步骤:

  1. 创建一个谓词:
CREATE SECURITY POLICY test1_policy
  FILTER PREDICATE (TABSCHEMA = 'schema_name' AND TABNAME = 'test1')
  ENABLE;

其中,schema_name是test1表所在的模式名称。

  1. 将谓词与test1用户关联:
GRANT test1_policy TO USER test1;

这将使test1用户只能访问test1表中的行,而不能访问其他表中的行。

需要注意的是,RLS功能只能限制用户对表中的行的访问,而不能限制用户对表的访问。因此,test1用户仍然可以看到其他表的存在,但是无法访问其中的行。

希望这能帮助你解决问题。

提问者

wangyeye
系统运维工程师jingya
擅长领域: 数据库服务器存储

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2024-03-25
  • 关注会员:1 人
  • 问题浏览:447
  • X社区推广