在 Snowflake DWH 中撤销从架构创建表

Posted

技术标签:

【中文标题】在 Snowflake DWH 中撤销从架构创建表【英文标题】:Revoke Create Table From Schema In Snowflake DWH 【发布时间】:2021-07-13 00:45:48 【问题描述】:

用例

创建一个新角色,该角色只能SELECT 访问所有架构中的所有表,但也不能在各自的数据库和架构中创建表。

脚本

USE ROLE ACCOUNTADMIN;
CREATE ROLE DUMMY_ROLE;

GRANT ROLE DUMMY_ROLE TO USER "myself@gmail.com"

GRANT USAGE ON WAREHOUSE COMPUTE_WH TO ROLE DUMMY_ROLE;
GRANT USAGE ON DATABASE PRD_DWH TO ROLE DUMMY_ROLE;
GRANT USAGE ON SCHEMA PRD_DWH.ANALYTICS TO ROLE DUMMY_ROLE;

问题

一旦我创建了上述角色并担任该角色,它仍然允许我创建表,尽管没有授予 CREATE TABLE 特权权限。

USE ROLE DUMMY_ROLE;
CREATE TABLE PRD_DWH.ANALYTICS.DELETEME (ID INTEGER);

即使我明确撤销CREATE TABLE(也允许我在DUMMY_ROLE 中创建表),这也不起作用:

USE ROLE ACCOUNTADMIN;
REVOKE CREATE TABLE ON SCHEMA PRD_DWH.ANALYTICS FROM ROLE DUMMY_ROLE;

我想了解如何防止这种行为。

【问题讨论】:

【参考方案1】:

您对 PUBLIC 角色有任何授权吗?

show grants to role PUBLIC;

您可能知道,PUBLIC 角色是自动授予每个用户并可访问的。因此,您需要确保此角色未获得您尝试测试的权限,并相应地从 PUBLIC 角色撤消。

【讨论】:

以上是关于在 Snowflake DWH 中撤销从架构创建表的主要内容,如果未能解决你的问题,请参考以下文章

Oracle - 故障转移表或查询操作

数据摄取:将动态文件从 S3 加载到 Snowflake

将数据从 Azure DWH 复制到 Azure 中的 Dynamics 365

应该应用啥策略来将此源类型加载到 DWH?

在 Snowflake 中,“加载表”功能是不是需要由执行加载的同一用户/角色创建目标表?

从我们仓库中其他 Snowflake DB 派生的数据中使自定义表保持最新的最佳实践