【问题标题】:How to grant access to PROCEDURE_DEFINITION in Snowflake from ADMIN role to another role?如何将雪花中 PROCEDURE_DEFINITION 的访问权限从 ADMIN 角色授予另一个角色?
【发布时间】:2022-01-14 20:03:33
【问题描述】:

我使用角色“ADMIN_ROLE”在“ADMIN”架构中创建了一个存储过程“XYZ”,并已将“ADMIN”帐户的“USAGE”权限授予另一个角色“ABC_ROLE”。

使用的语句:

GRANT USAGE 
ON ALL PROCEDURES IN SCHEMA "DATABASE_TEST"."ADMIN" 
TO ROLE "ABC_ROLE";

但是,如果我使用ABC_ROLE,我看不到PROCEDURE_DEFINITION

SELECT PROCEDURE_DEFINITION  
FROM INFORMATION_SCHEMA.procedures 
WHERE procedure_name = 'XYZ' 

返回 NULLDESCRIBE PROCEDURE XYZ() 将正文返回为空白。

我应该提供哪些额外权限才能从“ADMIN_ROLE”授予对“ABC_ROLE”的主体/程序定义的访问权限?

【问题讨论】:

    标签: sql permissions snowflake-cloud-data-platform snowflake-schema


    【解决方案1】:

    如果存储过程作为调用者执行,那么具有使用权限的角色可以看到它的主体。

    测试:

    create or replace procedure test_view(x string)
    returns string 
    language javascript
    execute as caller
    as $$
    return "hi"
    $$;
    
    describe procedure test_view(string);
    
    grant usage on procedure test_view(string) to role public;
    
    use role public;
    
    call test_view('');
    
    describe procedure test_view(string);
    

    但是如果程序以所有者身份执行,那么所有者可以看到它的主体。

    请注意,程序权限只有“使用”和“所有权”:

    【讨论】:

      猜你喜欢
      • 2019-05-16
      • 1970-01-01
      • 2020-10-26
      • 2020-05-28
      • 2018-10-11
      • 1970-01-01
      • 2012-02-03
      • 1970-01-01
      • 2020-04-09
      相关资源
      最近更新 更多