原文链接:http://click.aliyun.com/m/14006/

和传统的计算平台类似,MaxCompute使用多租户隔离租户间的数据。租户内利用访问控制保护用户数据。但是作为一个云计算、大数据平台,MaxCompute在实现时做了一系列的创新。这些创新主要体现在三个方面:1、访问可追溯;2、更细粒度的访问控制;3、跨租户访问控制。
访问可追溯
      传统的计算平台都会内建一个账号系统。用户以平台内账号连接计算平台、提交作业。平台的权限控制和审计也使用内部账号而不是真实的用户。MaxCompute作为aliyun的一个产品,直接使用阿里云官网的账号系统。这使得请求的主体更加的真实。用户必须用官网颁发的AccessId请求MaxCompute。MaxCompute通过阿里云官网的身份认证系统确认请求者身份;利用共享密钥机制防止“中间人***”。因此MaxCompute所有数据访问以及审计记录都更加准确的体现访问者的真实身份。

                                      图1、传统的访问控制


                                      图2、MaxCompute的访问控制
细粒度的访问控制
      MaxCompute以项目为租户单位,支持acl和policy这两种常规的访问控制模型。Acl和policy的访问控制只到对象这一级,例如udf、表、jar包等。对于项目空间内最为重要的资源-表,MaxCompute还提供了列级别访问控制-labelsecurity。Labelsecurity以强制访问控制的形式存在MaxCompute整个访问控制体系中。如图3,租户一旦配置了LabelSecurity,访问者除了有acl或者policy的权限外,还必须要有字段的label权限才能读对应的数据。

                                图3、 LabelSecurity与ACL、Policy的区别
      为方便这种细粒度访问控制的管理,labelsecurity的权限管理采用了多级安全管理模型。如图4,租户的管理者根据机密等级给用户和表的字段设置label。用户不需要label授权就可以访问比自己label低的字段。但是如果需要访问比自己label高的字段就需要授权

                                                                                              图4、 labelsecurity多级安全管理
 跨租户访问控制
        MaxCompute引入租户的目的是为了隔离租户之间的数据。在实际使用时,实体组织为了数据安全会在MaxCompute创建多个租户,以此在更高层次上防止组织内的成员访问未经授权的数据。但是这种安全机制会引入一个问题,在特定场景下部分作业需要联合查询旗下多个租户内的数据。传统计算平台解决这个额外难题的做法可能会是:1、组织内先进行权限审批;2、完成审批后再把数据导入到其中一个租户内,如图5;3、再执行作业。在大数据场景下,数据的导入导出会很占用资源,并且数据的时效性也会打折扣。为此MaxCompute设计了两种跨租户的访问控制。Package和项目空间trusted。

                                                                      图5 传统计算平台跨租户数据访问

  •  Package:


      Package类似文件系统中的软链接。租户A创建一个package,向package中加入资源,同时设定资源可访问的权限。经过租户A授权后,租户B可以安装该package,此时就完成了外部资源的导入。后续租户B可以把package作为一种项目空间内的资源授权给项目空间内的用户。采用这种软链接模式,租户间的数据导入导出将变的非常轻量,数据的时效性也能够得到保障。跨project访问时,请求会经过用户对package的权限、package是否可以安装、package内资源的访问限制三层校验。

                                                                              图6 MaxCompute中基于package的跨project数据访问

  • Trusted模式:


       当项目空间有类似上下级关系时,MaxCompute还提供了一种更加方便的跨租户授权方式-Trusted。下级项目空间A可以完全信任上级项目空间B中的用户时,项目空间A可以把项目空间B加为trusted。此时如果组织内的用户张三同时加入到项目空间A和B中。那么张三在项目空间B中就可以访问在项目空间A中授权过的资源。

                                                                 图7 MaxCompute中基于项目空间trusted的跨project访问