在我们的Web应用程序中,我们希望使用DB2行级访问控制来控制谁可以查看内容。每个表都包含一个名为userId
的列,其中包含用户ID。我们希望登录用户只能看到带有ID的行usereId
列。我已经看过使用DB2 session_id
或user
的db2权限示例,例如以DB2给出的Banking示例:
CREATE PERMISSION EXAMPLEBANKING.IN_TELLER_ROW_ACCESS
ON EXAMPLEBANKING.CUSTOMER FOR ROWS WHERE BRANCH in (
SELECT HOME_BRANCH FROM EXAMPLEBANKING.INTERNAL_INFO WHERE EMP_ID = SESSION_USER
)
ENFORCED FOR ALL ACCESS
ENABLE;
我们的表动态更新,因此我们不知道添加或删除了哪一行,因此我们不知道表中的所有用户ID是什么。
在任何给定时间,不同的用户都会登录到Web查看从表中检索的信息,上面的权限声明只以SESSION_USER
为输入,我可以将其更改为类似Java函数的参数哪个人可以将任意id传递给权限?如果没有,那么我如何在任意时间处理不同的登录用户?或者我只是在新用户登录时动态更改SESSION_USER
(使用“db2 set”??)?如果是这样,这是这种用例的最佳实践吗?
提前致谢。
答案 0 :(得分:0)
由于所讨论的用户ID是应用程序提供的,而不是源自数据库,因此使用等于DB2授权ID的SESSION_USER
将不合适。相反,您可以将CLIENT_USERID
变量用作described here。
如果在应用程序中使用连接池,这可能会变得有点棘手,因为每次从池中获取连接并重置之后必须设置该变量,然后再将其返回到池中。
答案 1 :(得分:0)
查看Trusted Contexts,这就是它们存在的原因。链接的文章相当陈旧(您现在可以使用PHP,ruby等可信上下文)。