Snowflake Reader Account权限疑问:允许创建对象却禁止DML?
Snowflake Reader Account 创建对象却限制DML的原因
Snowflake Reader Account的核心定位是只读访问共享数据集,但它允许创建表、视图这类对象,却严格限制DML操作,背后是两个关键设计逻辑:
支持数据处理需求,但严守只读边界
Reader Account的默认角色READER拥有创建表、视图、存储过程等对象的权限,目的是让用户可以基于共享数据做衍生处理:比如把复杂查询的结果存入自建表,或者用视图封装分析逻辑,不用每次重复查询原始共享数据。但这类对象本质是“只读容器”——你可以通过CREATE TABLE ... AS SELECT这类基于查询结果的方式填充数据,但不能直接用INSERT主动写入,确保不会有任何主动写入动作打破只读环境的规则。保护共享数据的完整性与控制权
限制DML操作是为了彻底保证数据提供方对共享数据的绝对控制权:即使Reader Account在共享库的schema下创建了对象,也不能向其中写入数据,避免污染原始共享数据集。同时,这也防止Reader Account通过自定义对象绕过只读限制,确保整个Reader Account的使用场景始终围绕“读取、分析共享数据”展开,而非修改或生成新数据。
你测试中创建t1表成功但INSERT被拒,正是因为READER角色有CREATE TABLE权限,但没有INSERT权限——这种权限拆分既满足了用户处理共享数据的实际需求,又守住了Reader Account只读的核心设计初衷。
内容的提问来源于stack exchange,提问作者Rajib Deb
相关产品推荐
相关产品推荐

