Snowflake cloud data platform 创建数据库从最近从s3存储桶复制的数据重写我的数据

Snowflake cloud data platform 创建数据库从最近从s3存储桶复制的数据重写我的数据,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,创建或替换数据库“订单” 我没有对此数据库设置任何权限。我公司的另一个人运行了上面的SQL并替换了数据。我如何使用Snowflake中的权限防止将来发生这种情况 TL;DR:Snowflake中的全局权限允许用户/角色运行这样的语句。要删除它,需要设计基于角色的访问系统,并从现有用户中撤消管理级别的权限 在最低限度上,严格限制允许以用户身份运行语句的用户。从要阻止执行数据库级操作的用户集中撤消这些权限: 从用户other_user1撤销accountadmin; 从用户other_user1撤销

创建或替换数据库“订单”

我没有对此数据库设置任何权限。我公司的另一个人运行了上面的SQL并替换了数据。我如何使用Snowflake中的权限防止将来发生这种情况

TL;DR:Snowflake中的全局权限允许用户/角色运行这样的语句。要删除它,需要设计基于角色的访问系统,并从现有用户中撤消管理级别的权限

在最低限度上,严格限制允许以用户身份运行语句的用户。从要阻止执行
数据库
级操作的用户集中撤消这些权限:

从用户other_user1撤销accountadmin;
从用户other_user1撤销securityadmin;
从用户other_user1撤销系统管理员;
从用户other_user2撤销accountadmin;
从用户other_user2撤销securityadmin;
从用户other_user2撤销系统管理员;
(…对所有需要限制的用户重复…)
然后,定义所需的访问级别。还可以根据每个角色在组织中的功能来决定哪些用户名属于它们

以下是一个非常通用和基本的示例,仅用于说明目的,它将所有“订单”数据库用户分为两个访问级别。具体需求将根据组织的独特情况而有所不同

创建角色顺序\u读取\u和\u写入;
创建角色订单(只读);
--Snowflake建议您创建角色层次结构,以便允许任何
--SYSADMIN允许用户管理这些新创建的角色,而不是
--要求ACCOUNTADMIN级别的用户在将来这样做
向角色系统管理员授予角色读取和写入命令;
将角色命令\u只读\u授予角色系统管理员;
上面创建的两个角色
orders\u read\u和
orders\u read\u only
可以被适当地授予特权,以控制它们对“orders”数据库下的架构和表的访问级别。继续这个例子:

--允许这两个角色访问“Orders”DB下的架构和表
--这不允许他们执行任何DB级别的操作
--例如替换/覆盖它
将数据库“Orders”的使用权授予角色Orders\u read\u和\u write;
将数据库“Orders”上的用法授予角色Orders\u read\u;
--允许对数据库下的架构进行适当的读写访问
--请注意在授予的权限中使用ALL和USAGE的区别
--对于此处的每个角色:
将所有模式上的“订单”。“SCHEMA-NAME”授予角色订单\u read\u和\u write;
授予对模式“订单”的使用权。“SCHEMA-NAME”仅用于角色订单;
授予选择权
在架构“Orders”中的所有表上。“SCHEMA-NAME”
仅读取角色命令;
最后,将角色授予各自的用户名

将角色命令\u read\u和\u write授予其他用户\u USER\u 1;
仅将角色订单授予其他用户2;
(…)
任何缺少的角色将不再能够执行诸如
创建或替换数据库“Orders”之类的语句

在上面的示例中,这两个角色只接收对
订单
数据库的
使用
级别访问,这不允许他们再运行此类语句

如果您需要向某个角色授予此权限,您可以
将其明确授予选择的角色,该角色下有受信任的用户:

将创建数据库授予角色名称;
我强烈建议大家多看几遍雪花的部分,以便熟悉这个术语。这使您更容易在组织中实施和管理有效的访问控制

注意:引入访问控制是一项影响广泛的变革,需要组织内部的沟通和协调才能真正有效。删除自由总是很困难的,因为这可能会根植于已经在使用的脚本和程序中。

TL;DR:Snowflake中的全局权限允许用户/角色运行这样的语句。要删除它,需要设计基于角色的访问系统,并从现有用户中撤消管理级别的权限

在最低限度上,严格限制允许以用户身份运行语句的用户。从要阻止执行
数据库
级操作的用户集中撤消这些权限:

从用户other_user1撤销accountadmin;
从用户other_user1撤销securityadmin;
从用户other_user1撤销系统管理员;
从用户other_user2撤销accountadmin;
从用户other_user2撤销securityadmin;
从用户other_user2撤销系统管理员;
(…对所有需要限制的用户重复…)
然后,定义所需的访问级别。还可以根据每个角色在组织中的功能来决定哪些用户名属于它们

以下是一个非常通用和基本的示例,仅用于说明目的,它将所有“订单”数据库用户分为两个访问级别。具体需求将根据组织的独特情况而有所不同

创建角色顺序\u读取\u和\u写入;
创建角色订单(只读);
--Snowflake建议您创建角色层次结构,以便允许任何
--SYSADMIN允许用户管理这些新创建的角色,而不是
--要求ACCOUNTADMIN级别的用户在将来这样做
向角色系统管理员授予角色读取和写入命令;
将角色命令\u只读\u授予角色系统管理员;
上面创建的两个角色
orders\u read\u和
orders\u read\u only
可以被适当地授予特权,以控制它们对“orders”数据库下的架构和表的访问级别。继续这个例子:

--允许这两个角色访问“Orders”DB下的架构和表
--这不允许他们执行任何DB级别的操作
--例如更换/覆盖