Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Snowflake cloud data platform 为什么Snowflake中的未来授权默认需要AccountAdmin?_Snowflake Cloud Data Platform - Fatal编程技术网

Snowflake cloud data platform 为什么Snowflake中的未来授权默认需要AccountAdmin?

Snowflake cloud data platform 为什么Snowflake中的未来授权默认需要AccountAdmin?,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我设置了以下场景: 演示数据库由sysadmin角色拥有。Demo_架构已创建,并由Demo_开发者角色所有。Demo_模式中的所有对象都由Demo_开发者角色拥有并创建 AccountAdmin创建了一个名为Demo_Analyst的新角色,其目的是将其设置为Demo_架构表的只读用户。Demo_Developer成功执行了以下授权(假设它是Demo_架构中所有表的所有者): 但是,Demo_开发者或事件系统管理员(属于Demo_开发者角色)都不能执行以下操作: use role sysadm

我设置了以下场景:

演示数据库由sysadmin角色拥有。Demo_架构已创建,并由Demo_开发者角色所有。Demo_模式中的所有对象都由Demo_开发者角色拥有并创建

AccountAdmin创建了一个名为Demo_Analyst的新角色,其目的是将其设置为Demo_架构表的只读用户。Demo_Developer成功执行了以下授权(假设它是Demo_架构中所有表的所有者):

但是,Demo_开发者或事件系统管理员(属于Demo_开发者角色)都不能执行以下操作:

use role sysadmin;
grant select on FUTURE tables in schema Demo_DB.Demo_Schema to role Demo_Analyst;
但是,上述操作将使用AccountAdmin角色执行。起初我觉得这很奇怪,但后来我推断可能我们不知道哪些所有者将创建哪些未来表,所以我们需要一个AccountAdmin来授予未来。对吗

我做了更多的测试,并将Demo_模式中一个表的所有权更改为Demo_开发人员不参与的完全不同的角色。然后,我再次尝试使用Demo_开发人员在所有表上授予select(上面的第一条语句),这次它并没有授予所有表,而是授予Demo_开发人员所拥有的表

因此,我想知道为什么在未来表上尝试授予的方式不一样,即在未来授予的授予人拥有的未来表上选择授予


所以我的问题是:为什么我需要AccountAdmin在未来的表上授予select权限,但我可以使用所有者角色(Demo_Developer)在所有当前表上授予select权限?

您在使用说明中看到了吗


管理授予全局权限是在数据库级别授予或撤消未来对象的权限所必需的。默认情况下,只有SECURITYADMIN和ACCOUNTADMIN角色具有管理授予权限

我以为我是在架构级别而不是数据库级别创建未来的授权。更仔细地看一下管理授权:管理授权:授予授予对任何对象授予或撤销权限的能力,就好像调用角色是对象的所有者一样。因此,为什么SECURITYADMIN和ACCOUNTADMIN可以授予任何期货合约是有道理的。但由于Demo_Developer拥有模式和对象,而且我正在对模式(而不是数据库)进行未来的授权,所以我认为我能够做到这一点。
use role sysadmin;
grant select on FUTURE tables in schema Demo_DB.Demo_Schema to role Demo_Analyst;