【问题标题】:Privileges required in a Db2 Java stored procedureDb2 Java 存储过程中所需的特权
【发布时间】:2018-01-29 17:55:02
【问题描述】:

我正在 Db2 中创建一个 Java 存储过程。 我知道调用该过程的任何人都需要被授予对该过程的“执行”权限。 但是,从 Java 代码插入/更新/删除/选择表需要哪些权限?

在文档中我发现:“如果包或例程包含静态 SQL 语句,则包所有者的权限用于这些语句。如果包或例程包含动态 SQL 语句,则用于权限的授权 ID检查取决于发出动态查询语句的包的 DYNAMICRULES BIND 选项的设置,以及在例程上下文中使用包时是否发出这些语句" (https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.db2.luw.admin.sec.doc/doc/c0005478.html) 在另一个地方我发现:“JDBC 和 CLI 共享相同的包。”和“创建数据库时,CLI 包会自动绑定到数据库”。 我找到了这些软件包,例如 SYSSTAT 和 SYSSSH200。包所有者是“SYSIBM”,DYNAMICRULES 是“R”。 那么这是否意味着我必须向 SYSIBM 授予插入/更新/删除权限?

(我现在专门研究 LUW,但后来程序还需要在 Z 上的 Db2 上运行。)

感谢您提供的任何见解!

【问题讨论】:

    标签: java stored-procedures permissions db2


    【解决方案1】:

    您需要向调用存储过程的授权 ID 授予 CRUD 权限。没有为外部存储过程创建包,因此您引用的讨论不适用。

    【讨论】:

    • 没有为 Java 例程中的 JDBC 语句创建包,但由于它在 1 台机器上丢失,我看到实际使用了包 SYSSTAT。那么您的回答是否意味着引用的例行权限检查不适用于这些 JDBC/CLI 包?是否有任何文档可以进一步解释这个 Java 存储过程安全主题?
    • 仍然没有找到更多/更具体的文档,但我所有的尝试都证实了@mustaccio 的答案,所以我接受了。我在问题中引用的文档似乎不适用,或者仅在特殊情况下适用 - 我仍然不确定......
    猜你喜欢
    • 2019-08-01
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    相关资源
    最近更新 更多