首页 > 解决方案 > 如何将程序的使用权限授予广泛的角色组?

问题描述

我有一个名为的表proc_logs,旨在用于记录/排除存储过程的故障。我想创建一个存储过程,插入到这个表中并添加一个时间戳。我希望我帐户中任何其他数据库中的任何存储过程都有权访问call此过程。

对此的第一次尝试是:

grant USAGE on procedure WRITELOG(string,string) to PUBLIC

但是我认为这仅适用于同一数据库中的 PUBLIC 模式。这个“跨数据库”过程被认为是一个糟糕的主意吗?如何将该 proc 的使用权限授予在我的帐户中执行的任何其他 proc?我是否需要创建一个“记录器”角色并将该角色授予我的所有职能角色,或者程序是否使用特殊角色?还要记住,任何拥有该 proc 使用权的人也需要能够从中进行选择。

标签: stored-proceduressnowflake-cloud-data-platformroles

解决方案


除了使用 Usage Privilege 那么为什么不使用 CREATE PROCEDURE WITH EXECUTE OWNERS RIGHT ,使用此语句将使用 Owner's right 执行过程;即使调用者无权将数据插入到表 proc_logs 中,该过程也会以 Ownwer 的权限执行,并且调用者能够将数据插入到该表中。在使用 Execute Procedure With Owner 权限或 Caller 权限时阅读此材料。 https://docs.snowflake.com/en/sql-reference/stored-procedures-rights.html


推荐阅读