为了方便MaxCompute的Project Owner或安全管理员进行Project的日常安全运维和保障数据安全,在您开始配置安全功能之前,建议您先进行安全模型的学习。

MaxCompute有安全模型,DataWorks也有安全模型。当通过DataWorks使用MaxCompute,而DataWorks的安全模型不满足业务安全需求时,需要合理地将两个安全模型结合使用。

您可以通过观看MaxCompute安全管理解析视频进行安全管理基础的学习。

MaxCompute安全模型

安全体系

MaxCompute多租户的数据安全体系,主要包括如下内容:
  • 用户认证

    支持云账号和RAM账号两种账号体系。对于RAM账号,仅识别账号体系不识别RAM权限体系,即可将主账号自身的任意RAM子账号加入MaxCompute的某一个项目中,但MaxCompute在对该RAM子账号做权限验证时,并不会考虑RAM中的权限定义。

  • 用户与授权管理

    您可以在MaxCompute Project中对用户进行添加(Add)、移除(Remove)、授权(Grant)管理,还可以通过角色(Role)管理授权。MaxCompute Project默认有Admin Role。授权方式包含ACL和Policy方式,此处只讲解ACL方式。

    ACL使用的语法类似于SQL92定义的GRANT/REVOKE语法,通过简单的授权语句来完成对已存在的项目空间对象的授权或撤销授权。授权语法举例如下:
    grant actions on object to subject;
    revoke actions on object from subjec;
  • 标签安全策略

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

  • 跨项目空间的资源分享

    Package是一种跨项目空间共享数据及资源的机制,主要用于解决跨项目空间的用户授权问题。即可以分享Table、Resource、Function等资源给其他项目,但无需对其他项目的用户进行管理。

  • 项目空间的数据保护

    主要解决类似于不允许用户将数据转移到项目空间之外的需求。

对象赋权、Role和Label关系

MaxCompute安全体系包含多种策略 ,而各种策略赋权是权限递增关系。我们以获取一个L4等级表权限的具体步骤来举例说明权限递增关系,具体步骤如下:
  1. 如果用户未有过授权记录,且非本项目用户,首先需要给项目添加该User(用户)。这个过程中,用户还没有任何实际权限。
  2. 赋权User(用户)对象的操作权限,有以下方式赋权
    1. 可以是单独的操作权限。
    2. 将ACL赋权给Role再赋权给用户。 如果资源是没有设置Label的,则此时用户已经拥有的该资源的权限。
  3. 对于拥有Label的资源,例如:数据表、打包了数据表的Package,则还需要赋予Label权限。有以下四种Label赋权:
    1. 针对某个数据表的字段。
    2. 针对某个数据表(暂不支持)。
    3. 针对某个Package。
    4. 给某个User(用户)一个批量的Label权限,不支持Role。
各权限赋权过程及关系图如下:

数据流出保护机制和Package关系

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

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

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

DataWorks安全模型

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

  1. 企业之间数据的安全隔离。
  2. 数据开发,即ETL过程中的安全问题。例如生产任务如何保障不可随意变更、哪些成员可以进行代码编辑调试、哪些成员可以进行发布生产任务等。
  3. 由于底层的MaxCompute有自己的安全模型,项目成员做ETL过程肯定会需要MaxCompute的各种资源(Table、Resource、Function、Instance)的相关权限。
说明

针对第一点:DataWorks支持用户认证以及对接RAM。云账号可作为主账号开通并创建DataWorks项目,而项目成员必须为该主账号的RAM子账号,不能是其他云账号。

另外,同个主账号创建的项目作为一个组织,项目与项目之间的任务可以进行依赖配置;不同主账号创建的项目之间数据(各种任务)隔离。

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

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