权限管理概述
DLI服务不仅在服务本身有一套完善的权限控制机制,同时还支持通过统一身份认证服务(Identity and Access Management,简称IAM)细粒度鉴权,可以通过在IAM创建策略来管理DLI的权限控制。两种权限控制机制可以共同使用,没有冲突。
IAM鉴权使用场景
企业用户在华为云上使用DLI服务时,需要对不同部门的员工使用DLI资源(队列)进行管理,包括资源的创建、删除、使用、隔离等。同时,也需要对不同部门的数据进行管理,包括数据的隔离、共享等。
DLI使用IAM进行精细的企业级多租户管理。该服务提供用户身份认证、权限分配、访问控制等功能,可以帮助您安全地控制华为云资源的访问。
通过IAM,您可以在华为云账号中给员工创建IAM用户,并使用策略来控制他们对华为云资源的访问范围。例如您的员工中有负责软件开发的人员,您希望他们拥有DLI的使用权限,但是不希望他们拥有删除DLI等高危操作的权限,那么您可以使用IAM为开发人员创建用户,通过授予仅能使用DLI,但是不允许删除DLI的权限策略,控制他们对DLI资源的使用范围。
对于新建的用户,需要先登录一次DLI,记录元数据,后续才可正常使用。
IAM是华为云提供权限管理的基础服务,无需付费即可使用,您只需要为您账号中的资源进行付费。关于IAM的详细介绍,请参见《IAM产品介绍》。
如果华为云账号已经能满足您的需求,不需要创建独立的IAM用户进行权限管理,您可以跳过本章节,不影响您使用DLI服务的其他功能。
DLI系统权限
如表1所示,包括了DLI的所有系统权限。
- 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于华为云各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。
- 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对DLI服务,管理员能够控制IAM用户仅能对某一类云服务器资源进行指定的管理操作。
了解DLI SQL常用操作与系统策略的授权关系,请参考常用操作与系统权限关系。
系统角色/策略名称 |
描述 |
类别 |
依赖关系 |
---|---|---|---|
DLI FullAccess |
数据湖探索所有权限。 |
系统策略 |
该角色有依赖,需要在同项目中勾选依赖的角色:
|
DLI ReadOnlyAccess |
数据湖探索只读权限。 只读权限可控制部分开放的、未鉴权的DLI资源和操作。例如创建全局变量、创建程序包以及程序包组、default队列提交作业、default数据库下建表、创建跨源连接、删除跨源连接等操作。 |
系统策略 |
无 |
Tenant Administrator |
租户管理员。
|
系统角色 |
无 |
DLI Service Administrator |
数据湖探索管理员。
|
系统角色 |
无 |
具体的授权方式请参考创建IAM用户并授权使用DLI以及《如何创建子用户》和《如何修改用户策略》。
DLI权限分类
权限大类 |
权限小类 |
控制台操作 |
SQL语法 |
---|---|---|---|
队列权限 |
队列管理权限 |
请参考队列权限管理 |
无 |
队列使用权限 |
|||
数据权限 |
数据库权限 |
请参考 《权限列表》。 |
|
表权限 |
|||
列权限 |
|||
作业权限 |
Flink作业 |
请参考配置Flink作业权限 |
无 |
程序包权限 |
程序包组权限 |
请参考配置程序包权限 |
无 |
程序包权限 |
|||
跨源认证权限 |
跨源认证权限 |
请参考跨源认证权限管理 |
无 |
场景举例
某互联网公司,主要有游戏和音乐两大业务,使用DLI服务进行用户行为分析,辅助决策。
如图1所示,“基础平台组组长”在华为云上申请了一个“租户管理员”(Tenant Administrator)账号,用于管理和使用华为云的各个服务。因为“大数据平台组”需要使用DLI进行数据分析,所有“基础平台组组长”增加了一个权限为“DLI服务管理员”(DLI Service Administrator)的子账号用于管理和使用DLI服务。“基础平台组组长”按照公司两个业务对于数据分析的要求,创建了“队列A”分配给“数据工程师A”运行游戏数据分析业务,“队列B”分配给“数据工程师B”运行音乐数据分析业务,并分别赋予“DLI普通用户”权限,具有队列使用权限,数据(除数据库)的管理和使用权限。
“数据工程师A”创建了一个gameTable表用于存放游戏道具相关数据,userTable表用于存放游戏用户相关数据。因为音乐业务是一个新业务,想在存量的游戏用户中挖掘一些潜在的音乐用户,所以“数据工程师A”把userTable表的查询权限赋给了“数据工程师B”。同时,“数据工程师B”创建了一个musicTable用于存放音乐版权相关数据。
“数据工程师A”和“数据工程师B”对于队列和数据的使用权限如表3所示。
用户 |
数据工程师A(游戏数据分析) |
数据工程师B(音乐数据分析) |
---|---|---|
队列 |
队列A(队列使用权限) |
队列B(队列使用权限) |
数据(表) |
gameTable(表管理和使用权限) |
musicTable(表管理和使用权限) |
userTable(表管理和使用权限) |
userTable(表查询权限) |
队列的使用权限包括提交作业和终止作业两个权限。