共计 5174 个字符,预计需要花费 13 分钟才能阅读完成。
这篇文章主要讲解了“MaxCompute 数据安全方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“MaxCompute 数据安全方法是什么”吧!
MaxCompute
是一个支持多租户的统一大数据处理平台,不同的用户对数据安全需求不尽相同。为了满足不同租户对数据安全的灵活需求,MaxCompute
支持项目空间级别的安全配置,ProjectOwner 可以定制适合自己的外部账号支持和鉴权模型并且在某种程度上保障 Project 的数据安全。
通常情况下,常见的开发模式为__MaxCompute+DataWorks__方式,针对这种场景下数据安全方案如下:
一、禁止数据下载到本地禁止数据流出或下载本地
方式①:
数据保护机制也被称之为开启项目空间数据保护,可以通过
MaxCompute console
开启服务端禁止数据流出:
set projectProtection=true -- 设置 ProjectProtection 规则:数据只能流入,不能流出。-- 默认时,ProjectProtection 不会被设置,值为 false。
方式②:
那么更多开发者通过 DataWorks 进行数据分析,通常会屏显在 IDE 上并且可以下载结果,这种可以通过项目管理 项目配置中打开“在本项目中能下载 select 结果”,具体如下:
那么这种情况下,在 DataWorks 查询结果页面就不可以通过“下载”按钮进行下载数据到本地。
开启数据保护机制后的数据流出方法
在您的 Project 被设置了 ProjectProtection 之后,您可能很快就会遇到这样的需求:user1 向您提出申请,她的确需要将某张表的数据导出您的项目空间。
而且经过您的审查之后,那张表也的确没有泄漏您关心的敏感数据。为了不影响 user1 的正常业务需要,MaxCompute 为您提供了在 ProjectProtection 被设置之后的两种数据导出途径。
方式①:
ProjectOwner 设置 ExceptionPolicy,针对已经开启项目数据保护的进行开例外。具体方式如下(需要通过 MaxCompute console 操作):
SET ProjectProtection=true WITH EXCEPTION policyFile
这种 policy 不同于 Policy 授权(尽管它与 Policy 授权语法完全一样),它只是对项目空间保护机制的例外情况的一种描述,即所有符合 policy 中所描述的访问情形都可以打破 ProjectProtection 规则。policy 详细文档
{ Version : 1 , Statement :
[{ Effect : Allow , Principal : ALIYUN$Alice@aliyun.com , Action :[ odps:Select], Resource : acs:odps:*:projects/alipay/tables/table_test , Condition :{ StringEquals : { odps:TaskType :[ DT , SQL]
}
}
}]
}
ProjectProtection 是一种数据流向的控制,而不是访问控制。只有在用户能访问数据的前提下,控制数据流向才是有意义的。
***
另外,可以通过 show grants [for username] [on type objectType]
查看某用户权限,查看是否加例外成功。
方法②:
设置 TrustedProject,若当前项目空间处于受保护状态,如果将数据流出的目标空间设置为当前空间的 TrustedProject,那么向目标项目空间的数据流向将不会被视为触犯 ProjectProtection 规则。可以通过如下命令方式进行设置(需通过 MaxCompute
console 进行):
list trustedprojects;
-- 查看当前 project 中的所有 TrustedProjects
add trustedproject projectname
-- 在当前 project 中添加一个 TrustedProject
remove trustedproject projectname
-- 在当前 project 中移除一个 TrustedProject
二、IP 白名单控制
MaxCompute 支持 Project 级别的 IP 白名单。
设置 IP 白名单后,只有白名单列表中的 IP(console 或者 SDK 所在的出口 IP)能够访问这个 Project。
设置 IP 白名单后,您需要等待五分钟后才会生效。
切记在设置白名单的时候,加上自己当前机器 IP,以免把自己屏蔽。
setproject odps.security.ip.whitelist=101.132.236.134,100.116.0.0/16,101.132.236.134-101.132.236.144;
白名单中 IP 列表的表示格式有三种。
单纯 IP:例如 101.132.236.134。
子网掩码:100.116.0.0/16。
网段:101.132.236.134-101.132.236.144。
具体详细教程可以参考,
IP 白名单控制
。
更精细化的管理
当然 MaxCompute Policy 机制也可以实现控制某个用户 / 或者角色的用户从具体 IP 地址来访问具体资源(表、UDF、资源)等。
Policy 样例:
{
Version : 1 ,
Statement :
[{
Effect : Allow ,
Principal : ALIYUN$alice@aliyun.com ,
Action :[odps:CreateTable , odps:CreateInstance , odps:List],
Resource : acs:odps:*:projects/prj1 ,
Condition :{
DateLessThan : {
acs:CurrentTime : 2013-11-11T23:59:59Z
},
IpAddress : {
acs:SourceIp : 10.32.180.0/23
}
}
},
{
Effect : Deny ,
Principal : ALIYUN$alice@aliyun.com ,
Action : odps:Drop ,
Resource : acs:odps:*:projects/prj1/tables/*
}]
}
授权用户 alice@aliyun.com 只能在 2013-11-11T23:59:59Z 这个时间点之前、只能从“10.32.180.0/23”这个 IP 段提交请求,
只允许在项目空间 prj1 中执行 CreateInstance, CreateTable 和
List 操作,禁止删除 prj1 下的任何 table。具体可以参考 Policy 文档。
三、数据保护伞(数据脱敏)
数据保护伞为 DataWorks 的一个数据安全模块,具体可以通过点击进入进行了解,其包括数据脱敏、安全审计等。
https://help.aliyun.com/document_detail/86320.html
可以针对敏感数据在 DataWorks 屏显进行加 ** 显示,如下图所示:
注意:数据保护伞是 DataWorks 的一个模块,如果使用了数据保护伞且进行了数据脱敏,但是通过 console 进行 tunnel download 还是未脱敏状态。
四、细粒度的权限管控
1、列级别 LabelSecurity 访问控制
项目空间中的 LabelSecurity 安全机制默认是关闭的,ProjectOwner 可以自行开启。
【应用场景】
场景说明:user_profile 是某项目空间中的一张含有敏感数据的表,它包含有 100 列,其中有 5 列包含敏感数据:id_card,
credit_card, mobile, user_addr, birthday.
当前的 DAC 机制中已经授权了所有用户对该表的 Select 操作。ProjectOwner 希望除了 Admin 之外,所有用户都不允许访问那 5 列敏感数据。
ProjectOwner 操作步骤如下:
set LabelSecurity=true;
-- 开启 LabelSecurity 机制
set label 2 to table user_profile(mobile, user_addr, birthday);
-- 将指定列的敏感等级设置为 2
set label 3 to table user_profile(id_card, credit_card);
-- 将指定列的敏感等级设置为 3
Alice 是项目空间中的一员,由于业务需要,她要申请访问 user_profile 的 mobile 列的数据,需要访问 1 周时间。项目空间管理员操作步骤如下:
GRANT LABEL 2 ON TABLE user_profile TO USER alice WITH EXP 7;
更多关于列级别安全控制文档:
https://help.aliyun.com/document_detail/34604.html
2、Role Policy 管理自定义 Role
很多用户会因为 DataWorks 内置的数据开发、运维、管理员等角色不能满足其个性化需求,会基于 ACL 创建符合自己业务逻辑的角色如数据分析师、ETL 开发等,基于这些 role 如何进行复杂的授权,如批量授予 ods_开头的表权限,但限制条件的,以及 Deny 类型的角色,这个时候就需要结合 Role
policy 来精细化管理。
一次操作对一组对象进行授权,如所有的函数、所有以”taobao”开头的表。
带限制条件的授权,如授权只会在指定的时段内才会生效、当请求者从指定的 IP 地址发起请求时授权才会生效、或者只允许用户使用 SQL(而不允许其它类型的 Task)来访问某张表。
方式①:
Policy 操作代码如下所示:
get policy -- 读取项目空间的 Policy
put policy policyFile -- 设置(覆盖)项目空间的 Policy
get policy on role roleName -- 读取项目空间中某个角色的 Policy
put policy policyFile on role roleName -- 设置(覆盖)项目空间中某个角色的 Policy
更多关于 Policy 的介绍以及操作详见文档:
http://www.aiwanba.net/plugin/odps-doc/prddoc/odps_security/odps_sec_authorization_dac.html
方式②:
通过 DataWorks- 项目管理 -MaxCompute 配置 - 自定义用户角色中进行。
创建步骤:
【新增角色】点击新建角色,填写角色名称,勾选需要加入该角色的账号(子账号用户)。
【角色授权】包括两种一个是表一个是项目。以表为例:
选择需要授权的表,并赋予相应的操作权限,如下所示针对具体表赋予具体权限。
说明:上述两种方式最大的区别就是,role policy 可以进行批量表授权,如以 taobao_开头的。但是 DataWorks 大的方式需要逐个表来进行筛选并配置权限。
四、JDBC 2.4(数据安全加固)
MaxCompute JDBC 2.4 针对数据安全加固做了一定的挑战,具体 JDBC 地址:
https://github.com/aliyun/aliyun-odps-jdbc/releases
在 JDBC 中使用数据安全加固方案具体步骤:
下载 JDBC 2.4(建议)
配置 jdbc url,通常如下制定 Tunnel endpoint 地址,如 jdbc:odps:http://service.cn.maxcompute.aliyun-inc.com/api?tunnelEndpoint=http://dt.cn-shanghai.maxcompute.aliyun-inc.com
。
具体 region 对应的 MaxCompute Endpoint 和 Tunnel Endpoint 不做分析
开启项目保护 SET ProjectProtection=true,不需要加 exception 例外,具体可以想见项目保护机制章节。
打开控制返回数据条数:setproject READ_TABLE_MAX_ROW=1000;
基于 JDBC 的工具进行查询,数据返回条数会控制在 1000 条以内。
说明:如果使用的版本小于 JDBC 2.4,并且开启了项目保护那么通过 JDBC 方式会直接报错(无权限)。
感谢各位的阅读,以上就是“MaxCompute 数据安全方法是什么”的内容了,经过本文的学习后,相信大家对 MaxCompute 数据安全方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!