背景及目的
方便和辅助MaxCompute的project owner或安全管理员进行project的日常安全运维,保障数据安全。
MaxCompute有安全模型,DataWorks也有安全模型,当通过DataWorks使用MaxCompute,而DataWorks的安全模型不满足业务安全需求时,合理的将两个安全模型结合使用就尤其重要。
安全模型
MaxCompute安全模型
安全体系
MaxCompute 多租户的数据安全体系,主要包括如下内容:

用户认证。
支持 云账号 和 RAM 账号 两种账号体系,对于RAM账号,仅识别账号体系不识别RAM权限体系,即可将主账号自身的任意 RAM 子账号加入 MaxCompute 的某一个项目中,但 MaxCompute 在对该 RAM 子账号做权限验证时,并不会考虑 RAM 中的权限定义。
用户与授权管理。
在MaxCompute Project中对用户添加(add)、移除(remove)、授权(grant)管理。
还可以通过角色(role)管理授权,MaxCompute project默认有admin role。
而授权方式包含ACL和Policy方式,本文只讲ACL方式,Policy方式待后续升级篇中介绍。
ACL即似于 SQL92 定义的 GRANT/REVOKE 语法,它通过简单的授权语句来完成对已存在的项目空间对象的授权或撤销授权。授权语法如下:

grant actions on object to subject
revoke actions on object from subject
标签安全策略
基于标签的安全(LabelSecurity)是项目空间级别的一种强制访问控制策略(Mandatory Access Control, MAC),它的引入是为了让项目空间管理员能更加灵活地控制用户对列级别敏感数据的访问。
跨项目空间的资源分享。
Package是一种跨项目空间共享数据及资源的机制,主要用于解决跨项目空间的用户授权问题。即可以分享table、Resource、function等资源给其他项目,但是无需对其他项目的用户进行管理。
项目空间的数据保护。
主要解决“不允许用户将数据转移到项目空间之外”的需求。
对象操作赋权、Role 和 label 关系介绍
上个小节中介绍了MaxCompute体系包含多种策略,而各种策略赋权是权限递增关系。以需要获取一个L4等级表的权限来展开说明这个递增关系,主要进行以下步骤操作:

第一步: 如果用户未有过授权记录,且非本项目用户,首先需要添加一个 USER(用户),这个过程,用户还没有任何实际权限。

第二步: 赋权 USER(用户)对象的操作权限,有以下方式赋权。

1) 可以是单独的操作权限;
2) 通过 policy 方式赋权给用户;
3) 将 ACL 和 policy 赋权给 role 再赋权给用户。 如果资源是没有设置 Label 的,则此时用户已经拥有的该资源的权限。
第三步: 对于拥有 Label 的资源,例如:数据表、打包了数据表的 package,则还需要 赋权 Label 权限。有以下四钟 Label 赋权:

1) 针对某个数据表的字段;
2) 针对某个数据表;
3) 针对某个 package;
4) 给某个 USER(用户)一个批量的 Label 权限,不支持 ROLE。
各权限赋权过程及关系图如下:

数据流程保护机制和 Package 关系介绍
ProjectProtection(数据流出保护机制)是 MaxCompute 防止项目内的数据批量流出的安全功能。 开启数据流程保护后,如果相互之间没有建立“TrustedProject Group” ,与其它 project 的数据赋权就必须通过 Package 方式进行,Package 赋权后,对方 package 可以自主赋权 Package 内的资源给组内用户。

部分资源(例如某些常用表、UDF 等),如想放权给其 Package 管理,也可以通过 Package 的方式,将资源打包后赋权给其他 Project。

ProjectProtection(数据流出保护机制)支持做例外处理,部分特殊的业务场景,可以针 对应用的 IP 地址、产品云账号做 Exception 策略,以满足特殊的数据流出需求。

DataWorks安全模型
DataWorks提供多人协同数据开发工作的平台,其安全模型需要考虑几方面:

企业之间数据的安全隔离。
数据开发即ETL过程中的安全问题,如生产任务如何保障不可随意变更;如哪个成员可以进行代码编辑调试,哪个成员可以进行发布生产任务等。
由于底层MaxCompute有自己的安全模型,项目成员做ETL过程肯定会需要MaxCompute的各种资源(table、Resource、function、instance)的相关权限。
针对第一点,DataWorks的用户认证,DataWorks对接RAM,云账号可作为主账号进行开通并创建DataWorks项目,而项目成员必须为该主账号的RAM子账号不能是其他云账号。
另外,同个主账号创建的项目作为一个组织,项目与项目之间的任务可以进行依赖配置;不同主账号创建的项目之间数据(各种任务)隔离。

针对第二点,DataWorks通过业务划分“开发项目”、“生产项目”进行任务开发调试和稳定生产的隔离;通过成员角色控制哪个成员可以进行任务开发调试,哪个成员可以运维生产任务等。

针对第三点,DataWorks在MaxCompute Project创建成功的同时,在MaxCompute Project里对应DataWorks的角色创建role,并给不同role赋权。

MaxCompute和DataWorks权限关系
从前面介绍的MaxCompute和DataWorks两个小节可以知道,通过MaxCompute的安全模型进行权限控制,并不会影响成员在DataWorks任何界面操作。通过DataWorks的用户角色分配,是有可能影响成员的MaxCompute资源权限。下面我们详细介绍这两个产品之间权限如何交叉关联。

项目关系
通过MaxCompute或DataWorks官网产品页进入的控制台创建的项目,

DataWorks 两种选择:

简单模式的项目实际上是创建了关联绑定好的一个MaxCompute project和一个DataWorks项目空间,同时在MaxCompute 的project里创建对应的几个role,具体role权限后续小节会介绍。
标准模式的项目实际上是创建了关联绑定好的一个开发(dev)MaxCompute project、一个生产(prod)MaxCompute project对应一个DataWorks项目空间。同时在MaxCompute 的project里创建对应的几个role,具体role权限后续小节会介绍。
账号认证
云账号在DataWorks项目中只能是主账号即项目owner,在MaxCompute既可以为owner也可以为普通user。当通过DataWorks项目成员管理添加成员时只能是添加当前项目主账号对应的RAM子账号。而MaxCompute可以通过命令行add user xxx;命令添加其他云账号。

成员角色权限关系
如前面小节(DataWorks安全模型)说的DataWorks为了解决项目成员在ETL过程中需要的MaxCompute相关资源权限,绑定了一些MaxCompute role。具体是指DataWorks项目固定有几个成员角色,同时在对应MaxCompute project上创建了对应几个role。另外MaxCompute project本身除了project owner,也还有一个admin role。

具体权限对应如下表:

由上表可知,DataWorks角色对应的MaxCompute权限是固定的,一旦某个user通过DataWorks角色获取MaxCompute相关role权限后,又通过命令行方式获得MaxCompute的其他权限,会使该user在MaxCompute的权限与在DataWorks上看到的不一致。

用户和权限关系图
一个DataWorks项目空间绑定一个MaxCompute project,此时根据DataWorks的项目管理——MaxCompute设置中的“MaxCompute访问身份”这个属性设置决定DataWorks其他项目成员是否拥有MaxCompute project的权限。

标准模式,一个DataWorks项目空间绑定两个MaxCompute project,此时固定MaxCompute的project一个是开发项目一个是生产项目,DataWorks其他项目成员根据成员角色拥有MaxCompute 开发project对应的role权限,但没有MaxCompute生产project的权限,MaxCompute 任务需要走发布流程发布到生产project后以owner账号提交到MaxCompute执行。

用户与权限管理
用户管理

角色管理

ACL(对象操作)的授权管理

Role授权管理


package授权管理


Label授权管理


安全功能启用
设置 ProjectProtection(数据流出保护机制)
项目空间的数据保护主要解决“不允许用户将数据转移到项目空间之外”的需求。


开启 Label Security(列及安全控制)
基于标签的安全(LabelSecurity)是项目空间级别的一种强制访问控制策略(Mandatory Access Control, MAC),它的引入是为了让项目空间管理员能更加灵活地控制用户对列级别敏感数据的访问。

合理设置字段的 Label

设置访问Project的IP白名单

设置禁止DataWorks的select结果下载到本地

如何通过其它云服务提高安全管理
使用MaxCompute过程中,会关联使用到其他的云服务,因此也需要考虑通过其他云服务提高MaxCompute的安全管理。本章节主要介绍通过DataWorks使用MaxCompute时,添加项目成员必须会用到RAM子账号,那么如何在RAM子账号服务上提高安全管理。

前面《MaxCompute安全模型》章节中提到MaxCompute的用户认证“支持 云账号 和 RAM 账号 两种账号体系,对于RAM账号,仅识别账号体系不识别RAM权 限体系,即可将主账号自身的任意 RAM 子账号加入 MaxCompute 的某一个项目中,但 MaxCompute 在对该 RAM 子账号做权限验证时,并不会考虑 RAM 中的权限定义。” 因此,我们只需要从RAM子账号登录验证入手进行安全控制。

子账号密码强度设置

如果您允许子用户更改登录密码,那么应该要求他们创建强密码并且定期轮换。
您可以通过 RAM 控制台设置密码策略,如最短长度、是否需要非字母字符、必须进行轮换的频率等等。

子账号登录掩码设置

通过设置网络掩码决定哪些IP地址会受到登录控制台的影响,子用户必须只能从指定的IP地址进行登录。

及时撤销用户不再需要的权限

当一个子账号对应员工由于工作职责变更而不再使用权限时,应该及时将对应子账号的权限撤销。

MaxCompute安全管理指南-基础篇相关推荐

  1. ClearCase指南-基础篇(连载一)

    ClearCase指南-基础篇(连载一) 第1章 前言    . 本文档凡斜体字即代表高级内容.高级概念.或可选内容,仅作粗略了解用,暂不必深入理会.   . 如下如无特别说明,缩写"CC& ...

  2. 极光小课堂 | 极光推送之 Android 客户端使用指南——基础篇

    " 本文中涉及到的所有代码现已在 Github 上开源,地址:https://github.com/xuexiangjys/JPushSample" 01 前言 - 极光推送是国内 ...

  3. 函数闭包--JavaScript权威指南--基础篇4

    函数JavaScript权威指南–基础篇4 一.知识点–函数–闭包 1.要理解函数闭包,要先知道几个概念: ①块级作用域和函数作用域的概念 FAQ:什么是块级作用域? 在类C语言中是这么定义的:变量的 ...

  4. STM32运行深度学习指南基础篇(3)(STM32CubeMX.AI+Tensorflow)

    STM32运行深度学习指南基础篇(3)(STM32CubeMX.AI+Tensorflow) 在上一篇文章中我们已经有训练好的tflite模型,接下来我们要在Clion中实现,如果是Keil的朋友可以 ...

  5. Kubernetes入门指南-基础篇

    Kubernetes入门指南-基础篇 基础入门 kubernetes简介 kubernetes是一个平台 kubernetes架构 kubernetes不是什么 核心组件 kubernetes基本概念 ...

  6. 转载 Spark性能优化指南——基础篇

    前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的功能涵盖了大数据领域的离线批处理.SQL类处理.流式/实时计算.机器学习.图计算等各种不同类型的计算操作 ...

  7. Spark性能优化指南——基础篇

    在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的功能涵盖了大数据领域的离线批处理.SQL类处理.流式/实时计算.机器学习.图计算等各种不同类型的计算操作,应用 ...

  8. 【以太坊开发】发币指南--基础篇

    官宣:https://www.ethereum.org/token 核心逻辑演进按照官网的示例,个人的工作就是从我自己的视角讲清楚这个逻辑.图文仅作为参考. 首先我们需要知道,标准的发币合约是比较复杂 ...

  9. Android一站式框架整合——Rui使用详细指南(基础篇)

    Rui使用详细指南--基础版 基础效果: GitHub地址 :Rui 视频地址 : Rui谷歌Mvp+Dagger2版 (进阶版):Rui使用详细指南(进阶版) 内容包括: 1.基于Rui快速搭建自己 ...

最新文章

  1. Nexus Repository Manager 3.0 发布
  2. 21天的你长这样?剑桥博士小姐姐研究「人造胚胎」,2篇Nature到手
  3. using 指令是不需要的和其他两个C#错误
  4. java占位符打印_java简单日志打印规范小记
  5. NYOJ练习题 下三角矩形 (模拟)
  6. nginx html解析插件,nginx配置信息的解析流程
  7. (5)vue.js 基础语法—el选项
  8. python 动态编译代码_编译Python代码以使用Cython静态链接可执行文...
  9. Spring技术原理之Spring IOC
  10. 通过配置jvm参数向应用程序传参数
  11. matlab2c使用c++实现matlab函数系列教程-mean函数
  12. 如何实现 迭代器 可迭代对象 (2.1)
  13. HTML:常用特殊字符编码表(自用)
  14. 一句python,一句R︱python中的字符串操作、中文乱码、NaN情况
  15. 和大家一起分享几组Android游戏源码
  16. pdflatex和xelatex的使用差别和建议
  17. 面试题:写一个左中右布局占满屏幕,其中左右两块是固定宽度200 , 中间自适应宽,要求先加载中间块,请写出结构及样式:
  18. Unity高质量场景打光参考资料
  19. Akamai阿卡迈_abck逆向sensor_data(一)
  20. Google Chrome OS中文版下载 支持中文输入法

热门文章

  1. UIControl事件---iOS-Apple苹果官方文档翻译
  2. c#抓取別的網頁的內容
  3. inner join 和 exists 效率_一阵骚操作,我把SQL执行效率提高了10000000倍!
  4. Cadence IC CDB-OA工艺库转换方法
  5. tomcat中添加直接访问的文件
  6. c/c++的输入输出总结
  7. 光流 | OpenCV中的Lucas-Kanade光流与稠密光流:基于Opencv+Python(附代码)
  8. 无法执行添加/移除操作,因为代码元素**是只读的
  9. 深度学习——RNN原理与TensorFlow2下的IMDB简单实践
  10. xml验证 java代码,使用Java代码进行XML验证