开箱即用的安全方案: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

方式②:
通过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方式会直接报错(无权限)。


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/520840.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ+haproxy+keeplived 高可用负载均衡+镜像集群模式_集成负载均衡组件 Ha-Proxy_02

服务器IPhostname节点说明端口管控台地址账号密码192.168.0.115mq-01rabbitmq master5672http://192.168.0.115:15672guestguest192.168.0.117mq-02rabbitmq slave5672http://192.168.0.117:15672guestguest192.168.0.118mq-03rabbitmq slave5672http://192.168.0.118:15672gue…

腾讯云连续三年登上KVM开源贡献榜,引领KVM技术标准!

近日在KVM社区最为重要和权威的大会KVM Forum上&#xff0c;2019年全球企业对KVM的贡献排名正式对外公布&#xff0c;腾讯云凭借本年度40个patch的贡献名列全球第七&#xff0c;连续三年成为国内唯一登榜的云计算服务商。 对此腾讯云虚拟化资深研发专家李万鹏介绍&#xff0c;腾…

异构计算:软硬件结合全栈助力AI大爆发

9月20日上午&#xff0c;杭州云栖小镇E1-2会场&#xff0c;备受业界关注的2018年杭州云栖大会异构计算专场召开。 近年来&#xff0c;人工智能持续爆发&#xff0c;对算力提出了更高的要求。异构计算作为大计算时代的解决方案&#xff0c;意在打破传统通用计算的限制&#xff…

弹性计算平台技术:云服务器“安全”“稳定”“弹性”的基石

9月19日上午9点&#xff0c;杭州云栖小镇E1-3会场&#xff0c;2018年杭州云栖大会弹性计算平台技术专场拉开帷幕。 弹性计算系列产品是云时代的基石产品之一&#xff0c;一直备受外界关注。作为弹性计算团队在本届云栖大会的开场大戏&#xff0c;平台技术专场吸引了超过200位与…

RabbitMQ+haproxy+keeplived 高可用负载均衡+镜像集群模式_集成高性能高可用组件 Keepalived_03

服务器IPhostname节点说明端口管控台地址账号密码192.168.0.115mq-01rabbitmq master5672http://192.168.0.115:15672guestguest192.168.0.117mq-02rabbitmq slave5672http://192.168.0.117:15672guestguest192.168.0.118mq-03rabbitmq slave5672http://192.168.0.118:15672gue…

AirPods Pro 到底「Pro」在哪里?

2019 嵌入式智能国际大会即将来袭&#xff01;购票官网&#xff1a;https://dwz.cn/z1jHouwEAirPods Pro一出&#xff0c;又被网友疯狂恶搞。有吐槽AirPods Pro&#xff0c;只是AirPods的复制版本的。有吐槽AirPods Pro&#xff0c;像个吹风机的。有吐槽像植物大战僵尸的。2018…

python pow和**_「Python学习笔记」Python函数高级应用

Python, 函数本身也是一个对象函数既可以赋值&#xff0c;也可以用作其他函数的参数&#xff0c;还可作为其他函数的返回值。使用函数变量Python的函数也是一种值&#xff1a;所有函数都是function对象&#xff0c;这意味着可以把函数本身赋值给变量&#xff0c;就像把整数、浮…

黑科技揭秘:如何通过阿里云超算,使得汽车仿真效率提升25%

在汽车行业&#xff0c;过去有一句俗话&#xff0c;一辆车从设计到下线&#xff0c;“至少要11辆真实碰撞试验”&#xff0c;今天&#xff0c;在现代化的汽车制造业&#xff0c;通过长期发展的设计和仿真软件&#xff0c;几乎所有的环节&#xff0c;都可以做到设计与仿真一体化…

更改应用程序图标_苹果更新 TestFlight 应用图标,增加更多拟真细节

TestFlight 是苹果公司针对开发者分发测试软件的应用&#xff0c;开发者可通过 TestFlight 向最多1万名测试者分发待测试应用。测试者在测试使用软件的同时&#xff0c;还可以向开发者提供使用意见或遇到的问题。最近&#xff0c;标志情报局发现&#xff0c;TestFlight 应用程序…

在一夜暴富之前,我先一夜秃了头

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 朱小五and王小九责编 | 阿秃与天斗&#xff0c;其乐无穷&#xff1b;与地斗&#xff0c;其乐无穷&#xff1b;与发际线斗&#xff0c;虽败犹荣……年轻人&#xff0c;今天的你比昨天更秃了吗&#xff1f;口说无凭&#xff…

负载均衡工具 haproxy 单机安装部署完整流程

负载均衡是系统设计最常见的一种方式&#xff0c;Nginx、HAProxy、LVS、F5用得比较普遍&#xff0c;不过Nginx只能在HTTP层负载&#xff0c;而HAProxy即可以在7层做负载&#xff0c;也可以在4层做负载&#xff0c;LVS配置有点太麻烦。 HAProxy是免费、极速且可靠的用于为TCP和基…

黑科技揭秘:阿里云如何做到从业务宕机到恢复业务运行只用一分半钟时间

2018杭州云栖大会主论坛上&#xff0c;阿里云打造的混合云容灾方案惊喜亮相&#xff0c;并直接在现场进行了全过程的演示&#xff0c;凸显出阿里云技术的强大心智。 整个混合云容灾演示在5分钟内呈现了阿里云秒级RPO&#xff0c;分钟级RTO企业应用容灾的端到端流程&#xff0c;…

恭喜你!在25岁前看到了这篇最最靠谱的深度学习入门指南

戳蓝字“CSDN云计算”关注我们哦&#xff01;人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;在当下的火热程度我就不多说了&#xff0c;但是真正懂这方面的人又有多少呢&#xff1f;本文将带你了解人工智能和机器学习的基本知识。同时&#xff0c;你…

华为智能家居app未能连接上远程云服务_【InForSec通讯】智能家居云平台实体间交互状态安全分析 | Usenix2019...

论文题目&#xff1a;Discovering and Understanding the Security Hazards in the Interactions between IoT Devices&#xff0c; Mobile Apps&#xff0c; and Clouds on Smart Home Platforms论文作者&#xff1a; Wei Zhou&#xff0c; Yan Jia&#xff0c; Yao Yao&#…

黑科技揭秘:百种异常随机注入,专有云为何稳如泰山

关键应用服务中断引发一系列连锁反应&#xff0c;起因仅是一块磁盘被写满&#xff1f;为什么这么巧&#xff0c;两个小概率的问题偏偏一起发生&#xff0c;造成保护失效&#xff1f;为什么我们做了测试演练&#xff0c;然而真正发生问题依然踩坑&#xff1f;”2018杭州云栖大会…

负载均衡工具 haproxy 集群安装部署完整流程

负载均衡是系统设计最常见的一种方式&#xff0c;Nginx、HAProxy、LVS、F5用得比较普遍&#xff0c;不过Nginx只能在HTTP层负载&#xff0c;而HAProxy即可以在7层做负载&#xff0c;也可以在4层做负载&#xff0c;LVS配置有点太麻烦。 HAProxy是免费、极速且可靠的用于为TCP和基…

阿里云 MaxCompute 2018-09 新功能发布

2018年9月大数据计算服务 MaxCompute 又发布新功能啦&#xff01; 【新功能】MaxCompute窗口函数支持WINDOW_CLAUSE 参考文档 适用客户 数据开发人员在进行数据开发过程中&#xff0c;用到调用window函数窗口时&#xff0c;SQL里反复写上OVER语句会显得冗余&#xff0c;MaxC…

要不要赶个时髦,去建设一个「 中台 」?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 奎哥责编 | 阿秃很多技术人总是抱怨 新技术/新框架/新概念 太多了&#xff0c;总是学不完&#xff0c;抱怨实在是学不动了。哈哈&#xff0c;这不&#xff0c;最近「 中台 」这么火热&#xff0c;要不要停止抱怨&#xff0…

strcpy用于调用的参数太少_C和汇编如何互相调用?嵌入式工程师必须掌握

ARM系列文章&#xff0c;请点击以下汇总链接&#xff1a;《从0学arm合集》一、gcc 内联汇编内联汇编即在C中直接使用汇编语句进行编程&#xff0c;使程序可以在C程序中实现C语言不能完成的一些工作&#xff0c;例如&#xff0c;在下面几种情况中必须使用内联汇编或嵌入型汇编。…

在阿里云上试用 Knative

在今年的Google Cloud Next大会上&#xff0c;Google发布了Knative, 这是由Google、Pivotal、Redhat和IBM等云厂商共同推出的Serverless开源工具组件&#xff0c;它与Istio&#xff0c;Kubernetes一起&#xff0c;形成了开源Serverless服务的三驾马车。 本文来自阿里巴巴中间件…