本文已参与「新人创作礼」活动,一起开启掘金创作之路。
权限管理
角色隔离
组织管理员(各种都是新建为主)
指组织的管理者,可新建计算引擎、新建项目空间、新建调度资源、添加组织成员、为组织成员赋予组织管理员角色、配置数据类目等。
项目管理员(admin)
指项目空间的管理者,可针对项目空间基本属性、数据源、当前项目空间计算引擎配置和项目成员进行管理。并为组织成员赋予项目管理员、开发、运维、部署、访客角色。
admin不能再去指派他人为admin,不能设定项目空间的安全配置,不能修改鉴权模型
开发
开发角色用户能够创建工作流、脚本文件、资源UDF、新建表,同时可以创建发布包,但不能执行发布操作。
运维
项目空间但运维人员,由项目管理员/项目所有者分配运维权限;拥有发布及线上运维的操作权限,但无数据开发的操作权限。
部署
部署角色与运维角色相似,但是其没有线上运维操作权限。
访客
访客角色的用户只具备查看权限,而无权限进行编辑工作流和代码等。
角色管理
**角色(role)**是一组访问权限的集合。
Owner:当一个用户创建了一个项目,他便自动成为该项目的Owner。任何没有被项目的Owner授权的人都无法访问该项目。
如果Alice创建了一个项目WonderLand,然后她要授权Bob访问该项目的一些对象,那么:
首先,Bob要有一个合法的云账号。
其次,Alice要把Bob的云账号加到项目中来。
最后,赋予一些对象的权限给Bob。
当Alice要禁止Bob访问该项目时,则直接将其云账号从项目中移除即可,前提是Bob没有被赋予任何角色。
值得注意的是,Bob虽然被移除来项目,但他之前被授予但权限仍保留在项目中。一旦被Alice再次加入该项目,原有权限会被自动激活。
缺省角色(Admin):拥有该角色权限的用户,可以访问项目空间中所有对象,不能设定项目空间的安全配置和修改项目空间的鉴权模型;能进行用户与角色管理,但是不能修改将Admin角色的权限或将Admin角色赋给别的用户,只能删除没有被使用的角色
。
授权
授权有主体(Subject)、客体(Object)和操作(Action)
三要素。
授权有ACL(基于对象的授权)和Policy(基于策略的授权)两种方法。
policy不能以xml的形式授权,deny、allow同时存在以deny为优先原则