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

方式②:
通过DataWorks-项目管理-MaxCompute配置-自定义用户角色中进行。

创建步骤:

  • 【新增角色】点击新建角色,填写角色名称,勾选需要加入该角色的账号(子账号用户)。

  • 【角色授权】包括两种一个是表一个是项目。以表为例:

  • 选择需要授权的表,并赋予相应的操作权限,如下所示针对具体表赋予具体权限。

说明:上述两种方式最大的区别就是,role policy可以进行批量表授权,如以taobao_开头的。但是DataWorks大的方式需要逐个表来进行筛选并配置权限。

四、JDBC 2.4(数据安全加固)

MaxCompute JDBC 2.4针对数据安全加固做了一定的挑战,具体JDBC地址:https://github.com/aliyun/aliyun-odps-jdbc/releases

在JDBC中使用数据安全加固方案具体步骤:

  1. 下载JDBC 2.4(建议)
  2. 配置jdbc url,通常如下制定Tunnel endpoint地址,如 jdbc:odps:http://service.cn.maxcompute.aliyun-inc.com/api?tunnelEndpoint=http://dt.cn-shanghai.maxcompute.aliyun-inc.com。
  3. 具体region对应的MaxCompute Endpoint和Tunnel Endpoint可以参考文档:https://help.aliyun.com/document_detail/34951.html
  4. 开启项目保护SET ProjectProtection=true,不需要加exception例外,具体可以想见项目保护机制章节。
  5. 打开控制返回数据条数:setproject READ_TABLE_MAX_ROW=1000;
  6. 基于JDBC的工具进行查询,数据返回条数会控制在1000条以内。

说明:如果使用的版本小于JDBC 2.4,并且开启了项目保护那么通过JDBC方式会直接报错(无权限)。

原文链接
本文为云栖社区原创内容,未经允许不得转载。

开箱即用的安全方案:MaxCompute数据安全方案介绍相关推荐

  1. Apache Ranger、业务背景、现状与需求、大数据安全组件介绍与对别、系统架构及实践、ranger admin、UserSync、plugin、权限模型、权限实现等

    26.2.1业务背景 26.2.1.1现状&&需求 26.2.2大数据安全组件介绍与对比 26.2.2.2 Apache Sentry 26.2.2.3 Apache Ranger 2 ...

  2. 前端优化方案-JavaScript 优化方案 收藏 此文于2010-06-04被推荐到CSDN首页

    前端优化方案-JavaScript 优化方案 收藏 此文于2010-06-04被推荐到CSDN首页 如何被推荐? Author: 李丽媛 Date: 2010/6/2 Email: lly219#gm ...

  3. 网络WIFI摄像机方案主控芯片最全介绍

    IPC网络WIFI摄像机方案主控芯片最全介绍: 看到很多朋友在问,什么是网络摄像机的方案,网络WIFI摄像机的主控究竟有什么区别,该用什么方案的网络摄像机来监控好?  鑫联拓展科技公司整理了一些资料给 ...

  4. 计算机网络系统系统设备配置,计算机网络系统技术方案及设备配置方案

    计算机网络系统技术方案及设备配置方案 一 计算机网络系统技术方案及设备配置方案 计算机网络系统技术方案及 (一) 计算机网络系统项目概述 计算机网络系统项目概述 随着计算机技术.通讯技术的飞速发展,计 ...

  5. 智能会议系统(34)---Android语音通话实现方案及相关技术介绍

    Android语音通话实现方案及相关技术介绍 Android语音通话实现方案及相关技术介绍 语音通话 Step1语音采集和输出 Step2编解码方式 Step3网络传输 Step4去噪声消回音 语音通 ...

  6. 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–5 Bert 方案

    目录 1 相关信息 2 引言 3 实现 3.1 数据预处理 3.2 Bert 4 提分点技巧讲解 5 未来展望 1 相关信息 [NLP]讯飞英文学术论文分类挑战赛Top10开源多方案–1 赛后总结与分 ...

  7. ANC主动降噪,FFT方案与FxLMS方案比较

    ANC主动降噪,FFT方案与FxLMS方案比较 ANC方案比较 ANC原理 编程环境 FFT降噪原理 FFT降噪缺陷 FxLMS原理 ANC方案比较 先说我的结论,FFT方案相对简单易懂,适合初学降噪 ...

  8. RGB灯控圣诞灯七彩灯方案开发IC方案控制板供应详细介绍

    主要应用: RGB灯控圣诞灯泛海微IC七彩灯方案开发IC方案控制板供应详细介绍 1.LED彩虹管:每条灯管由多个彩色像素点(RGB)组成,每个单色像素点可产生256个灰度级的变化.应用环境:立交桥.河 ...

  9. Android 高德地图自定义线路规划选择方案之后按照方案进行导航

    Android 高德地图自定义线路规划选择方案之后按照方案进行导航 因为我这边导航需求的问题,导致我这边不能使用高德地图官方的线路规划和导航.所以我这边线路规划和导航界面都是根据高德地图那边给的api ...

最新文章

  1. ContentValues(Java)
  2. 基于小波变换的图像边缘检测(matlab祖传代码注释)
  3. 用 ABAP 读取本地文本文件内容
  4. mysql100个优化技巧_完整篇:100+个MySQL调试和优化技巧(2)
  5. JAVA入门级教学之(第一章总结)
  6. 苹果发布 iOS 和 macOS 更新,修复已遭利用0day
  7. 可视化——matplotlib常用api(一)
  8. Java好还是Python好?一张图告诉你!
  9. 洛谷 P1962 斐波那契数列
  10. SQLite数据库可视化工具【SQLiteStudio】的下载及安装
  11. python怎么把小写改成大写_Python 把金额小写转换成大写
  12. 找到Java中长整型(long)所能表示的最大素数: 9223372036854775783
  13. 双目相机标定(MATLAB TOOLBOX_calib)
  14. 怎么用计算机弹奏忘羡,《忘羡,钢琴谱》魔道祖师 岚之调(五线谱 钢琴曲 指法)-弹吧|蛐蛐钢琴网...
  15. 从码农到工程师:只要做到这6点
  16. SOS1 Ras GEF蛋白高纯度测定
  17. python学习面向对象_Python小白必学的面向对象
  18. EF数据迁移命令总结
  19. 一些程序设计常识(bushi)
  20. 基于Gpio的Linux字符型驱动设计--…

热门文章

  1. 【学习笔记】第四章——文件 II(基本操作、文件保护、文件系统层次结构、磁盘结构、磁盘调度算法)
  2. 计算机主机接线视频教程,电脑主板跳线怎么接?电脑机箱与主板跳线接法图解教程...
  3. vs2010 编译linux,VS2010 Boost编译安装
  4. word手写字体以假乱真_Word小技巧|打印作文草稿纸
  5. 虚拟机linux如何扩大内存吗,如何扩大Vmware虚拟机中Ubuntu系统磁盘空间的方法
  6. 冯长根教授:博士生其实不是学生
  7. 高校寒假时间公布!看完心态稳住…
  8. 强烈推荐,关于5G最深刻的一篇文!
  9. 孩子从全班倒数第一到第二名,这位妈妈只做了这1件事!
  10. 如何用业余时间成为抢手的数据人才?