stored-procedures - 如何将程序的使用权限授予广泛的角色组?
问题描述
我有一个名为的表proc_logs
,旨在用于记录/排除存储过程的故障。我想创建一个存储过程,插入到这个表中并添加一个时间戳。我希望我帐户中任何其他数据库中的任何存储过程都有权访问call
此过程。
对此的第一次尝试是:
grant USAGE on procedure WRITELOG(string,string) to PUBLIC
但是我认为这仅适用于同一数据库中的 PUBLIC 模式。这个“跨数据库”过程被认为是一个糟糕的主意吗?如何将该 proc 的使用权限授予在我的帐户中执行的任何其他 proc?我是否需要创建一个“记录器”角色并将该角色授予我的所有职能角色,或者程序是否使用特殊角色?还要记住,任何拥有该 proc 使用权的人也需要能够从中进行选择。
解决方案
除了使用 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
推荐阅读
- python-3.x - 如何通过以太网在笔记本电脑上通过 python 代码读取和写入 PLC?
- android - 页面之间的 Xamarin 交换
- spring - Spring NamedJDBC 模板的 Mockito 测试
- java - 将 Java 项目导出到 .JAR 时没有声音
- python - 根据客户在特定时期使用 Python 进行的交易来识别客户群
- gke-networking - 从 pod 调用集群外的应用程序
- sas - 使用两个数据集的“集合”,合并或附加数据集?
- class - 关联类唯一性
- apache-spark-sql - 选择不同的查询在数据块中花费的时间太长
- authentication - 如何从私有更新中心的签名 json 对象创建 .crt 以授权 jenkins 更新插件