经过《MaxCompute安全管理-基础篇》了解到MaxCompute和DataWorks的相关安全模型、两个产品安全方面的关联,以及各类安全操做后,本篇主要给出一些安全管理案例,给安全管理的成员做为参考。算法
前面了解了MaxCompute和DataWorks的安全模型以及两个产品之间的权限联系,本章节咱们以常见2个基础业务需求来介绍项目建立和管理。安全
场景描述:多人协同开发,成员责任划分明确,需走正常的开发、调试、发布流程,生产数据查看须严格控制。架构
分析:运维
实操:工具
建立项目。主要配置如图:
测试
添加项目成员。DataWorks上添加RAM子帐号为项目成员,按需分配角色,同时,对应开发project会将对应的role受权给子帐号(各个role拥有的权限请看前面《基础篇之MaxCompute和DataWorks权限关系》章节):spa
这一整套配置和操做流程走完后,须要注意几点:命令行
场景描述:业务单一,成员角色基本一致,后续业务也不会扩展。如专供取数即不作数据开发,只须要查询下载业务数据(好比运营角色须要获取一些数据进行分析)。设计
分析:调试
实操:
建立MaxCompute自定义role并受权。主帐号经过console进行操做:
create role custom_dev;--建立自定义role grant List, CreateInstance,CreateTable,CreateFunction,CreateResource on project prj_name to role custom_dev;--给自定义role赋权
MaxCompute的project设置“容许对象建立者默认拥有访问权限”。主帐号经过console操做:
set ObjectCreatorHasAccessPermission=true; --实际上这个flag默认已经为true,能够经过以下命令查看 show SecurityConfiguration;
也能够在DataWorks的‘项目管理——MaxCompute设置’中进行配置。
添加项目成员。DataWorks上添加子帐号为新成员,如添加成员时角色为“开发”,添加成功后,在对应MaxCompute的project里该成员对应的role是role_project_dev,主帐号经过consle命令行查看如:
show grants for ram$主帐号:子帐号;
修改新成员的MaxCompute权限。主帐号经过consle操做:
revoke role_project_dev from ram$主帐号:子帐号;--将新成员从默认授予的role中移除。注意,若是后期又经过DataWorks成员管理页面在操做授予成员角色,那么也会从新授予该MaxCompute role。 grant custom_dev to ram$主帐号:子帐号;--给新成员授予自定义角色。
至此,该特殊需求权限管理的项目已经配置好。还须要注意如下几点:
该项目成员须要查询的表的权限须要本身走正常的权限申请流程(可在DataWorks的数据管理中申请),或者经过package受权方式,把其余生产项目的表加到package中,再将package安装到该项目并受权给成员,具体能够参考《基础篇之package受权管理》章节。
场景:业务分析人员须要查生产表,可是不容许查看生产任务代码,须要将多个生产项目的部分表开放给业务分析人员。
场景分析:须要查生产表可是又不能查看生产任务,那么须要单独给建立一个项目。能够经过在多个生产项目建立package把须要开放的表加到package中,在分析项目中安装package并受权给分析人员,如此能够 减小成员管理成本无需在全部生产项目中add 分析人员,同时保证这些分析人员只能在分析项目中查看package中的表。
操做步骤:
1) 生产项目中建立Package:
CREATE PACKAGE PACKAGE_NAME; 如: CREATE PACKAGE prj_prod2bi;
2) 生产项目中向Package中添加须要分享的资源:
ADD table TO PACKAGE [包名称]; 如: ADD table adl_test_table TO PACKAGE prj_prod2bi;
3) 生产项目许可分析项目空间使用Package
ALLOW PROJECT [容许安装的 project] TO INSTALL PACKAGE [包名称]; 如: ALLOW PRJ_BI TO INSTALL PACKAGE prj_prod2bi;
4) 分析项目安装 package:
INSTALL PACKAGE [应用名].[包名称]; 如: INSTALL PACKAGE prj_prod.prj_prod2bi;
5) package赋权给使用者:
赋权给user: GRANT read on package prj_prod2bi TO USER [云帐号]; 赋权给role: GRANT read on package prj_prod2bi TO ROLE [rolename];
场景:项目初期为了加快进度,一些用户和权限管理就相对宽松,当项目工做进入了一个相对稳定发展阶段后,数据安全将成为管理方面愈来愈重要的点。此时须要对数据安全进行自查分析,生成一个方案并落地。
本案例主要经过介绍某客户进行数据安全自查后重点调整的方向给出数据安全调整思路。
自查思路
存量帐号数量及权限统计。
废弃帐号及权限统计:对于已在MaxCompute或DateWorks项目中拥有角色的RAM子帐号,请在删除子帐号以前解除子帐号在项目的角色并在项目空间中删除子帐号。不然子帐号会在项目空间中残留,显示为“ p4_xxxxxxxxxxxxxxxxxxxx”且没法在项目空间中移除(不影响项目空间正常功能使用)。 但如果因职位发生变化的帐号及遗留权限,须要回收。建议有些不是长期使用的成员帐户,有些申请了可是长期不用的帐户,能够在经过通知、调研,把这部分帐户清理。作到有的放矢,权限在用的时候再申请,用完后,能够再收回。
我的帐号调查分析(能够工单申请推送元仓数据进行分析统计)。经过调查我的帐号最近3个月在开发阶段提交的查询(提交的数据检索、计算任务,主要是以SQL任务为主。),统计topN用户,并选取表明性帐号分析其平常任务。
如,帐号对应成员主要工做的项目空间为算法开发项目,平常工做主要执行的任务是SQL任务,执行的SQL任务主要是开发环境的查询和写表操做。算法任务、MR任务相对SQL任务数量较少,可是都有分布。这也符合数据开发的实际状况,能用SQL处理,通常优先使用SQL处理数据。 又如,有个帐号提交的任务很是多,经了解其将本身的ak经过adk方式配置了一个查询软件,并提供多人进行查询,这种多人共用一个帐号须要整改。
调整要点
帐号以及全新合理分配。调整原则:每一个工做成员都使用本身的我的帐户。
针对不一样人员所在的的不一样业务开发小组和角色给出不一样的数据访问权限,禁止相互借用他人的帐户使用。避免由于用户权限过大致使的数据安全风险。 如,按数据开发过程的业务分组进行帐号分配。分组如管理组、数据集成组、数据模型组、算法组、分析组、运维组、安全组等。
业务小组 | 帐户数 | ||
---|---|---|---|
管理组 | N | ||
…… | …… | ||
-- | -- | -- | -- |
管理组 | project1 | powner@aliyun.com:user1 | 管理员 |
管理组 | project2 | powner@aliyun.com:user1 | 管理员 |
…… | …… | …… | …… |
如经过MaxCompute层面限制数据只能流动到指定的项目或者指定的位置,从而规避未知数据流动带来的风险。
数据导出限制。
数据一旦从MaxCompute落地为文件,就意味着数据不可控。因此,必需要尽量的减小数据落地带来的风险。经过用户角色的详细划分,限制只有一些业务组能够有数据导出的权限。且也不影响平常开发工做。