Apollo浅解2

Apollo采用三层权限设计,用户通过角色关联权限。权限包括创建应用、管理应用管理员、分配角色等7种类型,角色如Master、ManageAppMaster等对应特定权限。新增应用和命名空间时,系统会自动创建相应角色和权限。第三方应用同样遵循此权限体系。
摘要由CSDN通过智能技术生成

目录

用户、角色、权限

三者间的关系

权限Permission

新增一个应用时

新增一个命名空间时

角色Role

新增一个应用时

新增一个命名空间时

第三方应用


用户、角色、权限

三者间的关系

apollo也采用经典的三层权限设计,用户关联角色,角色关联权限,表信息如下

数据库表名描述
ApolloPortalDBUsers 用户表
ApolloPortalDBUserRole用户与角色关联表
ApolloPortalDBRole角色表
ApolloPortalDBRolePermission角色与权限关联表
ApolloPortalDBPermission权限表

查询用户拥有的权限SQL如下:

SELECT
	t.Username,
	t1.RoleId,
	t2.RoleName,
	t3.PermissionId,
	t4.PermissionType,
	t4.TargetId
FROM
	ApolloPortalDB.Users t,
	ApolloPortalDB.UserRole t1,
	ApolloPortalDB.Role t2,
	ApolloPortalDB.RolePermission t3,
	ApolloPortalDB.Permission t4
WHERE
	t.Username = t1.UserId
AND t1.RoleId = t2.Id
AND t2.Id = t3.RoleId
AND t3.PermissionId = t4.Id
AND t1.IsDeleted = '0'
AND t2.IsDeleted = '0'
AND t3.IsDeleted = '0'
AND t4.IsDeleted = '0'

权限Permission

Permission表对应的表结构如下

 其中比较重要的是PermissionType、TargetId字段,其他字段都是apollo表设计时的通用字段。PermissionType类型如下

权限类型权限描述举例
CreateApplication

“在系统参数 role.create-application.enabled=true 时,会限制只有超级管理员和拥有创建应用权限的帐号可以创建应用”----该权限指的就是此处的创建应用权限,只用在 role.create-application.enabled=true条件下意义

ManageAppMaster

”在系统参数 role.manage-app-master.enabled=true 会限制只有超级管理员和拥有管理员分配权限的帐号可以修改应用管理员”----该权限指的就是此处的管理员分配权限,只在role.manage-app-master.enabled=true条件下有意义

AssignRole

对TargetId字段指定的应用:

1、指定应用管理员权限

2、修改应用信息的权限

3、命名空间指定拥有修改权限、发布权限的用户的分配权限

CreateCluster

对TargetId字段指定应用的创建集群的权限

CreateNamespace

对TargetId字段指定应用的创建命名空间的权限

ModifyNamespace

对TargetId字段指定应用指定环境指定命名空间的修改权限(可见命名空间的修改权限是区分环境,但是不区分集群)

当TargetId=4am+application+DEV时

表示对应用4am的DEV环境的application命名空间的修改权限

ReleaseNamespace

对TargetId字段指定应用指定环境指定命名空间的发布权限(可见命名空间的发布权限是区分环境,但是不区分集群)

当TargetId=4am+application+DEV时

表示对应用4am的DEV环境的application命名空间的发布权限

权限类型只有以上固定的7种,但权限是随着应用和命名空间的增加而增加

新增一个应用时

新增应用信贷系统XDXT时,系统会自动在Permission表会新增如下权限

 分别代表对应用XDXT的分配角色权限、创建集群权限、创建命名空间权限、分配管理员权限( role.manage-app-master.enabled=true )

新增一个命名空间时

在应用信贷系统XDXT下新增命名空间interfaceList时,系统会自动在Permission表会新增如下权限

 分别代表对命名空间interfaceList的在SIT环境、DEV环境、及默认环境的修改和发布权限

角色Role

表结构如下,除了RoleName,其它均是apollo通用的表结构字段。

由于角色和权限基本上是一对一的,角色名称RoleName字段的取值几乎都采用了对应权限的PermissionType值与TargetId值的组合,大致分类如下几类

角色角色与权限比对应权限描述
Master+应用id1:3

PermissionType:CreateCluster

TargetId:应用id

应用管理员角色,对应3个权限,具体权限功能参见权限描述。

PermissionType:reateNamespace

TargetId:应用id

PermissionType:AssignRole

TargetId:应用id

ManageAppMaster+应用id1:1

PermissionType:ManageAppMaster

TargetId:应用id

分配管理员角色,对应1个权限,具体权限功能参见权限描述。
ModifyNamespace+应用id+Namespace+环境1:1

PermissionType:ModifyNamespace

TargetId:应用id + Namespace+环境

命名空间修改角色,对应1个权限,具体权限功能参见权限描述。
ReleaseNamespace+应用id+Namespace+环境1:1

PermissionType:ReleaseNamespace

TargetId:应用id + Namespace+环境

命名空间发布角色,对应1个权限,具体权限功能参见权限描述。
CreateApplication+SystemRole1:1

PermissionType:CreateApplication

创建应用角色,对应1个权限,具体权限功能参见权限描述。

新增一个应用时

新增应用信贷系统XDXT时,系统会自动在Role表会新增如下角色

 并将Master+NDXT角色赋给应用管理员用户

新增一个命名空间时

在应用信贷系统XDXT下新增命名空间interfaceList时,系统会自动在Role表会新增如下角色

 因为存在俩个环境DEV、SIT,所以对应6个角色,并将默认环境角色赋给应用管理员用户

第三方应用

作为Apollo开放平台访问的授权主体,第三方应用与用户共享同一份角色、权限体系。第三方应用关联角色,角色关联权限,表信息如下

数据库表名描述
ApolloPortalDBConsumer第三方应用
ApolloPortalDBConsumerRole第三方应用与角色关联表
ApolloPortalDBRole角色表
ApolloPortalDBRolePermission角色与权限关联表
ApolloPortalDBPermission权限表

查询第三方应用拥有的权限SQL如下:

SELECT
	t.AppId,
	t1.RoleId,
	t2.RoleName,
	t3.PermissionId,
	t4.PermissionType,
	t4.TargetId
FROM
	Consumer t,
	ConsumerRole t1,
	Role t2,
	RolePermission t3,
	Permission t4
WHERE
	t.Id = t1.ConsumerId
AND t1.RoleId = t2.Id
AND t2.Id = t3.RoleId
AND t3.PermissionId = t4.Id
and t1.IsDeleted='0'
and t2.IsDeleted='0'
and t3.IsDeleted='0'
and t4.IsDeleted='0'

角色role、权限Permission描述见上部分内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值