一:介绍
对于大数据平台本身,其最重要的资产就是运行在上面的任务,平台要有对其任务进行权限控制的能力,包括但不限于:
1. 何人可以查看这个任务信息;
2. 何人可以修改这个任务定义;
3. 何人可以对这个任务进行操作,保存执行该任务,启用/禁用,删除,重跑等操作;
4. 什么人有权限可以修改这个任务本身的权限定义。
5. 不同的角色默认的权限是什么,不同的任务默认的权限又是什么。
这些都需要有一个统一的规则,即需要确定的答案。
二:权限设计
1.权限类别
同时做一定的简化,将查看设为“读”权限,将修改和操作设为“写”权限。如下表所示:
权限 | 包含的操作 | 备注 |
读 | 任务内容的查看 | |
写 | 任务的编辑、操作 |
2.角色的设定
权限体系分为 **角色** + **任务访问控制列表**。
在Tourbillon中,因为有项目的概念,所以角色的主要需要从平台 - 项目 来设定。
角色 | 别名 | 权限 | 备注 |
平台超级管理员 | platform_super_admin | 平台所有操作权限,hive库表的管理权限 | |
平台管理员 | platform_admin | 平台所有操作权限 | |
项目超级管理员 | project_super_admin | 项目内任务的权限设置,成员管理,项目名下的库表权限 | |
项目管理员 | project_admin | 项目内任务的权限设置,成员管理 | | |
项目owner | owner | 唯一,项目转让功能,项目描述编写 | |
项目开发 | develop | 项目内所有任务的读权限,自己任务的权限设置 | |
项目访客 | visitor | 可被分配任务的读写权限,不能新建任务 |
3.访问控制列表
在角色定义里面,我们设置了平台层面的两个角色和项目层面的四个角色以及一个项目owner,针对不同的角色,都有相应的任务权限定义。但光有角色,我们没办法做到针对任务的细致化控制,比如:
1. A君想将自己的任务交给另外的同事B君和C君一同开发,但不想把自己的任务交给其他同事。
2. A君想把自己的任务的查看权限赋权给另外一个部门的D君同事,但不想给其修改权限,同时也不愿意给D君其他任务的查看权限。
所以对于任何一个任务,都有一个自己的访问控制列表,可以在其中增加/删除/修改属于同一项目内成员的读写权限。
4.任务级别
对于任务,默认情况下是公开,但可以设置任务的私密性。这样,开发和项目管理员将没有任务的读权限,只能通过访问控制列表设置才能获得权限。
级别 | 别名 | 描述 |
公开 | public | 项目内的开发及以上都有读权限,owner本身和管理员可以读写,可以分配给开发和访客读写权限。 |
私密 | private | owner和平台管理员级别的有读写权限。可以分配项目管理员、开发、访客读写权限 |
原文地址:https://www.cnblogs.com/silencExplode/p/9325770.html
时间: 2024-10-02 05:04:26