目录
用户体系
管理员工具
用户管理
系统参数
系统权限管理
role.create-application.enabled
role.manage-app-master.enabled
删除应用
删除集群
删除AppNamespace
删除Namespace
开放平台授权
用户体系
每个app(应用)拥有一个负责人,可以有多个管理员,可以在创建应用时指定。如下图:
其中
- 【应用负责人】和【应用管理员】可以分别指定不同的用户,可以和【登录用户】不一致。本例中登录用户为fengxiankf,应用负责人为zhaofacai,应用管理员为zhaofacai、zhaoxiaoshuai
- 应用负责人默认为应用管理员
- 应用管理员具如下权限
1 | 创建集群 |
2 | 创建Namespace命名空间 |
3 | 修改应用信息,包括部门、应用名称、应用负责人 |
4 | 修改Namespace命名空间,包括修改权、发布权的指定。命名空间的创建用户和超级管理员默认拥有修改权、发布权,其他用户均需要通过授权才能获得。 |
5 | 为应用新增管理员(role.manage-app-master.enabled=false情况下) |
管理员工具
portal中有超级管理员用户,默认为apollo(可以修改),可以进行【管理员工具】操作
用户管理
这其中的字段应该都好理解,就不一一赘述了。
系统参数
一些系统级的参数配置,存储在ApolloPortalDB.ServerConfig表中。超级管理员也可以通过SuperAdmin参数来修改。下面将要讲到的role.create-application.enabled(是否开启应用创建权限控制)、role.manage-app-master.enabled(是否开启分配管理员权限控制)俩个参数,也存储在该表中。
系统权限管理
这里的用户设置只有在这俩个参数role.create-application.enabled(是否开启应用创建权限控制)、role.manage-app-master.enabled(是否开启分配管理员权限控制)开启下设置才生效。其中
role.create-application.enabled
当该开关不开启(值等于false或者不设置)时,所有用户都具有创建应用的权限,可以创建应用;
当该开关开启(值等于true)时,只有超级管理员和已指定的用户可以创建应用,页面功能就是完成用户的指定。
role.manage-app-master.enabled
当该开关不开启(值等于false或者不设置)时,某个应用的管理员用户都可以去管理该应用的管理员,包括添加新管理员、删除已存在的管理员;
当该开关开启(值等于true)时,只有超级管理员和已指定的用户可以管理管理员信息,页面功能就是完成用户的指定。
删除应用
只有超级管理员可以删除应用,删除应用时将逻辑删除如下信息
- 应用信息,对应于表ApolloConfigDB.App、ApolloPortalDB.App
- 该应用所有的AppNamespace 元信息,对应表ApolloPortalDB.AppNamespace、ApolloConfigDB.AppNamespace
- 该应用所有的Namespace数据(包括所有集群),对应表ApolloConfigDB.Namespace
- 该应用的Namespace所有的item数据(用于存储配置数据),对应表ApolloConfigDB.Item
其中 AppNamespace用于定义Namespace,定义它的相关属性,如是否公共(isPublic)、存储格式(Format xml or json or properties等)。每个Namespace都对应一个AppNamespace(通过NamespaceName关联)。
删除集群
删除集群只有超级管理员可以进行,执行删除集群时,将删除如下信息
- 该集群下所有的Namespace数据,对应表ApolloConfigDB.Namespace
- 对应Namespace所有的item数据(用于存储配置数据),对应表ApolloConfigDB.Item
删除AppNamespace
删除AppNamespace元数据只有超级管理员可以进行,执行删除元数据时,将删除如下信息
- 该AppNamespace关联的所有Namespace数据,对应表ApolloConfigDB.Namespace
- 对应Namespace所有的item数据(用于存储配置数据),对应表ApolloConfigDB.Item
删除Namespace
其中Namespace的删除可以由且只能由应用管理员在应用页面进行删除
当无应用管理员权限的用户去删除命名空间时,会报如下错误
当删除Namespace,不删除AppNamespace时,每次进入应用时,都会提示有Namespace的缺失
可以通过右下角的【补缺Namespace】的菜单自动补齐缺失的Namespace
开放平台授权
创建第三方应用
Apollo提供了一套的Http REST接口,使第三方应用能够自己管理配置。虽然Apollo系统本身提供了Portal来管理配置,但是在有些情景下,应用需要通过程序去管理配置。
通过以上完成第三方应用的创建。创建成功后,系统会生成该第三方应用对应Token值。在调用apollo的开放平台接口,需要上送该Token,系统根据该token值来确认属于哪个第三方应用,对操作的Namespace是否有权限。
第三方应用ID的概念会让人觉得同用户概念,其实不是。在调用apollo的开放平台接口时除了上送Token,一般还要上送用户信息,对命名空间的操作都是以该用户的名义进行,而不是第三方应用。第三方应用ID只是用来实现赋权和鉴权。
可以在该界面输入第三方应用ID,点击【查询】获取该第三方应用对应的Token值。
、
赋权
查询接口默认都是可以访问的,但是对Namespace的修改和发布,及创建集群、命名空间、分配应用管理员的接口需要权限控制。
在如上界面可以按Namespace进行赋权,赋权后第三方应用可以获得对该命名空间的修改和发布权限;也可以按app进行赋权,赋权后可以获得创建集群、命名空间、分配应用管理员的权限、及该应用下所有命名空间的修改和发布权限。
如果在没有赋权的情况下调用apollo开放平台的接口,会报如下错误,message: {"exception":"org.springframework.security.access.AccessDeniedException","message":"Access is denied","status":403,"timestamp":"2022-12-29T19:46:08.746"}