阿里大数据计算服务MaxCompute-安全指南_第1页
阿里大数据计算服务MaxCompute-安全指南_第2页
阿里大数据计算服务MaxCompute-安全指南_第3页
阿里大数据计算服务MaxCompute-安全指南_第4页
阿里大数据计算服务MaxCompute-安全指南_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、大数据计算服务MaxCompute安全指南大数据计算服务MaxCompute/安全指南 PAGE 12安全指南本文档主要面向 MaxCompute 项目空间所有者(Owner)、管理员以及对 MaxCompute 多租户数据安全体系感兴趣的用户。MaxCompute 多租户数据安全体系主要包括如下内容:用户认证、项目空间的用户与授权管理、跨项目空间的资源分享以及项目空间的数据保护。快速开始场景描述:Jack是项目空间prj1的管理员,一个新加入的项目组成员Alice(已拥有云账号: alice)申请加入项目空间prj1, 并申请如下权限:查看Table列表,提交作业,创建表。use prj1;

2、add user aliyun$alice; -添加用户grant List, CreateTable, CreateInstance on project prj1 to user aliyun$alice; -使用grant语句对用户授权操作步骤:(由项目空间管理员来操作)场景描述:Jack是项目空间prj1的管理员,有三个新加入的项目组成员:Alice, Bob, Charlie,他们的角色是数据审查员。 他们要申请如下权限:查看Table列表,提交作业,读取表userprofile。use prj1;add user aliyun$alice; -添加用户add user aliyun

3、$bob;add user aliyun$charlie; create role tableviewer; -创建角色grant List, CreateInstance on project prj1 to role tableviewer; -对角色赋权grant Describe, Select on table userprofile to role tableviewer;grant tableviewer to aliyun$alice; -对用户赋予角色tableviewer grant tableviewer to aliyun$bob;grant tableviewer t

4、o aliyun$charlie;对于这个场景的授权,项目空间管理员可以使用基于对象的 ACL授权 机制来完成。操作方法:项目空间的数据保护设置场景描述:Jack是项目空间prj1的管理员。该项目空间有很多敏感数据,比如用户身份号码和购物记录。而且 还有很多具有自主知识产权的数据挖掘算法。Jack希望能将项目空间中的这些敏感数据和算法保护好,项目中 用户只能在项目空间中访问,数据只能在项目空间内流动,不允许流出到项目空间之外。use prj1;set ProjectProtection=true; -开启项目空间的数据保护机制操作方法:Jack需要如下操作:一旦当项目空间开启 项目空间的数据保

5、护 机制后,无法将项目空间中的数据转移到项目空间之外,所有的数据只能在项目空间内部流动。但是在某些情况下,可能由于业务需要,用户Alice需要将某些数据表导出到项目空间之外,并且也经过空间管 理员的审核通过。针对这类情况,ODPS提供了两种机制来支持受保护项目空间的数据流出。方法1: 设置ExceptionPolicy。详情请参考 设置ExceptionPolicy 。Version: 1, Statement: Effect:Allow, HYPERLINK mailto:ALIYUN%24alice Principal:ALIYUN$alice, Action:odps:Describe,

6、odps:Select, Resource:acs:odps:*:projects/prj1/tables/t1, Condition:StringEquals: odps:TaskType:SQLStep 1: 创建Policy文件。 比如创建一个/tmp/exception_policy.txt,它只允许Alice使用SQL任务将表t1从项目空间prj1导出。policy内容如下:Step 2: 设置exception policyuse prj1;-开启项目空间的数据保护机制,并设置数据导出的例外set ProjectProtection=true with exception /tmp

7、/exception_policy.txt;use prj1;方法2: 设置TrustedProject。将prj2设置为prj1的可信项目空间,设置后将允许prj1中的所有数据流出到prj2。详情请参考 设置TrustedProject 。add trustedproject prj2;注意:- 基于Package的资源打包分享机制和项目空间的数据保护机制是正交的两种安全机制。MaxCompute 规定:资源分享拥有更高的优先级。这就是说,在一个受保护的项目空间中,如果一个对象是通过Package机制分享给其它项目空间,那么跨项目空间访问该对象时将不受ProjectProtection规则的

8、限制。目前,ODPS支持两种账号体系:云账号体系;RAM账号体系;注意: 需要特别指明的是,ODPS只能够识别RAM的账号体系,不能识别RAM的权限体系。即用户可以将自身的任意RAM子账号加入ODPS的某一个项目中,但ODPS在对该RAM子账号做权限验证时,并不会 考虑RAM中的权限定义。list accountproviders;但在默认情况下,ODPS项目只能够识别阿里云账号系统,用户可以通过:查看该项目所支持的账号系统,通常情况下仅会看到ALIYUN账号。如果想添加对RAM账号的支持,可以执行add accountprovider ram;:添加成功后,可以再次通过list accoun

9、tproviders;查看所支持的账号系统是否有所变化。申请云账号如果您还没有云账号,请访问 HYPERLINK / 以申请一个属于您的云账号。申请云账号时需要一 HYPERLINK mailto:Alice可以使用她的alice邮箱来 个有效的电子邮箱地址,而且此邮箱地址将被当作云账号。比如,Alice可以使用她的alice邮箱来 HYPERLINK mailto:那么她的云账号就是alice 注册一个云账号,那么她的云账号就是alice。申请AccessKey拥有云账号之后,可以登录访问 HYPERLINK /access_key /access_key 以创建或管理当前云账号的Acces

10、sKey列表。一个AccessKey由两部分组成:AccessKeyId和AccessKeySecret。AccessKeyId用于检索AccessKey,而AccessKeySecret用于计算消息签名,所以需要严格保护以防泄露。当一个AccessKey需要更新时,用户可以创建一个新的AccessKey,然后禁用老的AccessKey。使用云账号登录ODPSproject_name=myproject access_id= access_key= HYPERLINK /api end_point=/api当使用odpscmd登录时,需要在配置文件 conf/odps_config.ini 中

11、配置AccessKey相关信息,比如:注意:- 在阿里云网站上禁用或解禁一个AccessKey时,目前需要15分钟后才能完全生效。用户及授权管理项目空间(Project)是ODPS实现多租户体系的基础,是用户管理数据和计算的基本单位,也是计量和计费的主 体。当用户申请创建一个项目空间之后, 该用户就是这个空间的所有者(Owner)。也就是说,这个项目空间内的所有对象(eg, 表, 实例, 资源,UDF等)都属于该用户。这就是说,除了Owner之外, 任何人都无权访问此项目空间内的对象,除非有Owner的授权许可。本节主要介绍项目空间的用户、角色及授权管理。它主要适用于如下场景:假设用户Alic

12、e是项目空间test_project的Owner, 如果有其他人需要申请访问项目空间test_project的资源,并且这个申请人是属于Alice的项目团队。那么可以采用本节介绍的方法来进行用户和授权管理。 如果申请人不属于Alice的项目团队,那么建议使用跨项目空间的资源分享功能,详情请参考 跨项目空间的资源分享 。当项目空间的Owner Alice决定对另一个用户授权时,Alice需要先将该用户添加到自己的项目空间中来。只有添加到项目空间中的用户才能够被授权。add user -在项目空间中添加用户添加用户的命令如下:说明:- HYPERLINK 上注册过的有效邮箱地址/ 云账号的即可以是

13、在上注册过的有效邮箱地址,也可以是执行此命令的云账号的某个RAM子账号,例如:add user ALIYUN$odps_test_user; add user RAM$ram_test_user;RAM$alice:ram_test_user HYPERLINK mailto:ALIYUN%24odps_test_user ALIYUN$odps_test_user HYPERLINK mailto:alice 假设Alice的云账号为alice,那么当Alice执行上述两条语句后,通过list users;命令可以看到如下结果: HYPERLINK mailto:odps_test_user

14、 这表明云账号odps_test_user以及Alice通过RAM创建的子账号test1已经被加入到了该项目 空间中。remove user -在项目空间中移除用户当一个用户离开此项目团队时,Alice需要将该用户从项目空间中移除。用户一旦从项目空间中被移除,该用户 将不再拥有任何访问项目空间资源的权限。 移除用户的命令如下:备注:当一个用户被移除后,该用户不再拥有访问该项目空间资源的任何权限。移除一个用户之前,如果该用户已被赋予某些角色,则需要先撤销该用户的所有角色。关于角色 的介绍请参考 项目空间的角色管理 。当一个用户被移除后,与该用户有关的 ACL授权 仍然会被保留。一旦该用户以后被再

15、添加到该项目空间时, 该用户的历史的 ACL授权 访问权限将被重新激活。ODPS目前不支持在项目空间中彻底移除一个用户及其所有权限数据。remove user ALIYUN$odps_test_user; remove user RAM$ram_test_user;Alice执行下述两条命令后:再通过list users;命令,将不会看到这两个账号。此时,表明这两个账号已经被移出项目空间。需要特殊说明的是,ODPS只允许主账号将自身的RAM子账号加入到项目空间中,不允许加入其它云账号的RAM子账号,因 此在add user时,无需再RAM子账号前指定主账号名称,ODPS默认判定命令的执行者即是

16、子账号对应的主 账号。角色(Role)是一组访问权限的集合。当需要对一组用户赋予相同的权限时,可以使用角色来授权。基于角色的 授权可以大大简化授权流程, 降低授权管理成本。当需要对用户授权时,应当优先考虑是否应该使用角色来完成。每一个项目空间在创建时,会自动创建一个admin的角色,并且为该角色授予了确定的权限:能访问项目空间 内的所有对象, 能进行用户与角色管理,能对用户或角色进行授权。与项目空间Owner相比,admin角色不能将admin权限指派给用户,不能设定项目空间的安全配置, 不能修改项目空间的鉴权模型。Admin角色所对应的权限不能被修改。create role -创建角色dro

17、p role -删除角色grant to -给用户指派某种角色revoke from -撤销角色指派角色管理相关命令如下:备注:删除一个角色时,ODPS会检查该角色内是否还存在其他用户。若存在,则删除该角色失败。只 有在该角色的所有用户都被撤销时,删除角色才会成功。授权操作一般涉及到三个要素:主体(Subject,可以是用户也可以是角色),客体(Object)和操作(Action)。在ODPS中,主体是指用户或角色,客体是指项目空间中的各种类型对象, 操作则与特定对象类型有关,不同类型的对象支持的操作也不尽相同。ODPS项目空间支持如下的对象类型及操作:客体(Object)操作(Action)

18、说明ProjectRead查看项目空间自身(不包括项目空间的任何对象)的信息,如CreateTime等ProjectWrite更新项目空间自身(不包括项目空间的任何对象)的信息,如CommentsProjectList查看项目空间所有类型的对象列表ProjectCreateTable在项目空间中创建TableProjectCreateInstance在项目空间中创建InstanceProjectCreateFunction在项目空间中创建FunctionProjectCreateResource在项目空间中创建ResourceProjectCreateJob在项目空间中创建JobProject

19、CreateVolume在项目空间中创建VolumeProjectCreateOfflineModel在项目空间中创建OfflineModelProjectCreateXflow在项目空间中创建XflowProjectAll具备上述所有权限TableDescribe读取Table的元信息TableSelect读取Table的数据TableAlter修改Table的元信息TableUpdate覆盖或添加Table的数据TableDrop删除TableTableAll具备上述所有权限FunctionRead读取FunctionWrite更新FunctionExecute执行FunctionDele

20、te删除FunctionAll具备上述所有权限Resource,Instance, Job, VolumeRead读取Resource,Instance, Job, VolumeWrite更新Resource,Instance, Job, VolumeDelete删除Resource,Instance, Job, VolumeAll具备上述所有权限OfflineModelRead读取OfflineModelWrite更新OfflineModelDelete删除OfflineModelAll具备上述所有权限XflowRead读取XflowWrite更新XflowExecute执行XflowDel

21、ete删除XflowAll具备上述所有权限备注:上述权限描述中Project类型对象的CreateTable操作,Table类型的Select、Alter、Update、Drop操作需要与Project对象的CreateInstance操作权限配合使用。 单独使用上述几种权限而没有指派CreateInstance权限是无法完成对应操作的。这与ODPS的内部实现相关。类似的, Table的Select权限也要与CreateInstance权限配合使用。使用时请注意。在添加用户或创建角色之后,需要对用户或角色进行授权。ODPS授权是一种基于对象的授权。通过授权的权 限数据(即访问控制列表, Acc

22、ess Control List) 被看做是该对象的一种子资源。只有当对象已经存在时,才能进行授权操作;当对象被删除时,通过授权的权限数据会被自动删除。 ODPS授权支持类似于SQL92定义的GRANT/REVOKE语法,它通过简单的授权语句来完成对已存在的项目空间对象的授权或撤销授权。grant actions on object to subject revoke actions on object from subject actions := action_item1, action_item2, .object := project project_name | table sche

23、ma_name | instance inst_name | function func_name | resource res_namesubject := user full_username | role role_nameODPS支持的授权方法是采用类似SQL92定义的GRANT/REVOKE语法来进行授权。授权语法如下:熟悉SQL92定义的GRANT/REVOKE语法或者熟悉Oracle数据库安全管理的用户容易发现,ODPS的ACL授权语 法并不支持 WITH GRANT OPTION 授权参数。 也就是说,当用户A授权用户B访问某个对象时,用户B无法将权限进一步授权给用户C。那么,

24、所有的授权操作都必须由具有以下三种身份之一的用户来完成:项目空间Owner项目空间中拥有admin角色的用户项目空间中对象创建者下面给出一个简单的使用ACL授权的应用实例:场景说明:云账号用户alice和bob是新加入到项目空间test_project的成员。在test_project中,他们需要提交作业、 创建数据表、查看项目空间已存在的对象。use test_project; -打开项目空间add user aliyun$alice; -添加用户add user aliyun$bob; -添加用户create role worker; -创建角色grant worker TO aliyun

25、$alice; -角色指派grant worker TO aliyun$bob; -角色指派grant CreateInstance, CreateResource, CreateFunction, CreateTable, List ON PROJECT test_project TO ROLE worker; -对角色授权管理员执行的授权操作如下:ODPS支持从多种维度查看权限,具体包括查看指定用户的权限、查看指定角色的权限、以及查看指定对象的 授权列表。在展现用户权限或角色权限时,ODPS使用了如下的标记字符:A、C、D、G,它们的含义如下:A: 表示Allow,即允许访问。D: 表示D

26、eny,即拒绝访问。C: 表示with Condition,即为带条件的授权,只出现在policy授权体系中。odpstest_project show grants for HYPERLINK mailto:aliyun%24odpstest1 aliyun$odpstest1 rolesdevAuthorization Type: ACL role/devAprojects/test_project/tables/t1: Select HYPERLINK mailto:user/odpstest1 user/odpstest1Aprojects/test_project: CreateTa

27、ble | CreateInstance | CreateFunction | List Aprojects/test_project/tables/t1: Describe | SelectAuthorization Type: Policy role/devACprojects/test_project/tables/test_*: Describe DCprojects/test_project/tables/alifinance_*: Select HYPERLINK mailto:user/odpstest1 user/odpstest1Aprojects/test_project:

28、 Create* | ListACprojects/test_project/tables/alipay_*: Describe | SelectAuthorization Type: ObjectCreatorAGprojects/test_project/tables/t6: All AGprojects/test_project/tables/t7: AllG: 表示with Grant option,即可以对object进行授权。一个简单的展现权限的样例如下:查看指定用户的权限查看指定角色的权限describe role -查看指定角色的访问权限角色指派show grants -查看当

29、前用户自己的访问权限show grants for -查看指定用户的访问权限,仅由ProjectOwner和Admin才能有执行权限。查看指定对象的授权列表show acl for on type -查看指定对象上的用户和角色授权列表备注:- 当省略on type 时,默认的type为Table。MaxCompute 是一个支持多租户的数据处理平台,不同的租户对数据安全需求不尽相同。为了满足不同租户对数据安全的灵活需求,MaxCompute 支持项目空间级别的安全配置,ProjectOwner可以定制适合自己的外部账号支持和鉴权模型。MaxCompute 支持了多种正交的授权机制,如ACL授权,隐式授权(如对象创建者自动被赋予访问对象的权限show SecurityConfiguration-查看项目空间的安全配置set CheckPermissionUsingACL=true/false-激活/冻结ACL授权机制,默认为trueset ObjectCreatorHasAccessPermission=true/false-许/禁止对象创建者默认拥有访问权限,默认为true set ObjectCreatorHasGrantPermission=true/false-允许/禁止对象创建者默认拥

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论