摘要:本文将向您介绍项目空间内的访问控制和权限管理。
项目空间内的访问控制分为以下五类:
用户管理
非项目空间所有者用户必须添加到MaxCompute项目空间中,并授予相应的权限才能操作MaxCompute中的数据、作业、资源和功能。 示例如下:
假设 Alice 创建了一个名为 WonderLand 的项目并自动成为所有者。 未经爱丽丝授权,任何人都无法进入仙境。
Alice想要授权Bob允许他访问WonderLand中的一些物体。 操作如下:
Bob必须拥有合法的云账户或Alice的RAM子账户。 Alice 想要将 Bob 的帐户添加到项目中。 向 Bob 授予一些对象权限。
注意:
RAM子账户管理
RAM子账户分为两类。 每个项目都有不同的RAM子账户。 不同的RAM子账户对交换空间内容的访问存在一定的差异。
授权
授权包括三个要素:主体、客体和行为。
您可以使用ACL(基于对象)和Policy(基于策略)进行授权。
ACL授权
ACL授权的基本语法如下:
授予
到 ;
撤销
从 ;
示例如下:
假设云账号用户是加入项目空间WonderLand的新成员。 他需要提交作业、创建数据表以及查看项目空间中的现有对象。 管理员执行的授权操作如下:
权限列表如下:
许可内容
ACL授权应用场景
Bob在做数据开发的时候,需要用到项目空间已经开发好的UDF getusertype。 此 UDF 使用资源 getusertype.jar。 操作如下:
政策
Policy授权机制主要解决一些ACL授权机制无法解决的复杂授权场景,如下所示:
有两种类型的策略:RolePolicy 和 ProjectPolicy。 基本语法如下:
策略授权应用场景
项目空间院长SecretGarden希望其所在项目空间的所有成员都能使用项目空间中的udf、jar包、python资源。 怎么授权呢?
文件内容如下:
ACL和策略的区别
角色管理
当项目空间的用户较多时,对用户进行一一授权的管理方式会非常繁琐。 因此,MaxCompute提供了角色管理,将一组授权的操作对象分配给一个角色角色权限设计5张表,然后将该角色授权给某个用户。 角色(Role)是一组访问权限。
每个项目空间创建时都会自动创建一个admin角色角色权限设计5张表,并授予该角色一定的权限:可以访问项目空间中的所有对象、管理用户或角色、对用户或角色进行授权。
与项目空间所有者相比,admin角色不能执行以下操作:
角色限制:
应用场景
Alice的公司有更多的Bob、Tony、Peggy、George等数据开发工程师加入。 Alice将员工划分为不同的部门,每个部门只能访问自己工作范围内的数据。 例如,如果希望客户部门只看到customers表,仓储管理部门只看到devices表,则需要执行以下操作:
查看权限
MaxCompute支持查看指定用户的权限、查看指定角色的权限、查看指定对象的授权列表。
基于标签的访问控制
ACL和Policy是数据库常用的权限管理模型。 此外人物立绘3D素材,MaxCompute还提供基于标签的访问控制。 它是项目空间级别的强制访问控制策略(Mandatory Access Control,MAC)。 引入它是为了允许项目空间管理员更灵活地控制用户对列级敏感数据的访问。
举个例子,对于一个国家(类比MaxCompute的一个项目空间),如果这个国家的公民想要开车(类比数据读取操作),就必须先申请驾照(类比申请SELECT权限)。 这些都属于 DAC 考虑的范围。
但由于该国的交通事故率居高不下,该国出台了一项新法律:禁止酒后驾车。 此后,任何想要开车的人除了拥有驾驶执照外,还不得饮酒。 类比MaxCompute,这个酒驾禁令就相当于禁止读取高度敏感的数据。 这属于MAC的考虑范围。
注意:
数据敏感性分类
项目Owner需要定义明确的数据敏感级别和访问权限级别分级标准。 默认情况下,所有用户的访问权限级别为0级,数据安全级别默认为0级。
LabelSecurity 可以支持敏感数据的列级粒度。 管理员可以为表中的任意列设置敏感度标签(Label)。 表可以由不同敏感级别的数据列组成。
LabelSecurity 基本操作