我怎样才能将过程的使用权授予广泛的角色组?

How can I grant usage on a procedure to a wide group of roles?

我有一个名为 proc_logs 的 table,旨在用于 logging/troubleshooting 存储过程。我想创建一个存储过程,插入此 table 并添加时间戳。我希望我帐户中任何其他数据库中的任何存储过程都有权 call 此过程。

第一次尝试是:

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

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

除了使用 Usage Privilege 那么为什么不使用 CREATE PROCEDURE WITH EXECUTE OWNERS RIGHT 呢,有了这个语句,程序就会以 Owner's right 执行;即使 Caller 没有将数据插入 table proc_logs 的权限,该过程也会以 Ownwer 的权利执行,并且 Caller 将能够将数据插入此 table。 阅读此 material 何时使用具有所有者权限或调用者权限的执行过程。 https://docs.snowflake.com/en/sql-reference/stored-procedures-rights.html