Apollo浅解2

news2024/9/30 13:29:25

目录

用户、角色、权限

三者间的关系

权限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描述见上部分内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/128590.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DOM基础

一、DOM的概念 文档对象模型(DOM,Document Object Module)是W3C组织推荐的处理可扩展标志语言的标准编程接口,它允许程序和脚本动态的访问和更新文档的内容、结构和样式。 HTML的DOM操作是将文档里所有的内容(包括标签、标签里的内容、标签属性甚至注释等)都当做一…

51单片机入门 第一篇:LED灯

文章目录前言一、LED原理图二、创建keil5工程三、代码的编写四、程序的烧录总结前言 本篇文章讲正式带大家开始学习51单片机,希望这些文章能够很好的帮助到大家学习51单片机。 一、LED原理图 一般的51单片机上都带有8个LED灯,这里8个LED灯分别接到了板…

JS逆向——工信部ICP、IP、域名信息备案管理平台

问题:(1)数据列表接口token参数验证(2)authKey参数加密生成 1、页面中请求接口,观察请求头可发现,校验参数token为加密的字符串,根据该字符串并不能直观得到所用的加密方式是什么。 …

数据库大小写不敏感后,值也不敏感了

现象:我有一个账号admin,结果莫名多了一个ADMIN、Admin、AdMin等一些列账号;细品你的密码就算密文签名,是不是在你不知情的情况下也有很多。 原因:数据库安装的时候设置的大小写不敏感导致 解决:建议第三…

Spark 的学习笔记

Spark 的学习笔记 文章目录Spark 的学习笔记1. 概述Spark 优势及特点优秀的数据模型和丰富计算抽象Spark 生态圈Spark 特点Spark 与 HadoopSpark与MRSpark Streaming与StormSpark SQL与HiveSpark 运行模式2. 快速入门使用 Spark Shell 进行交互式分析基础Dataset 上的更多操作缓…

【机器学习】LDA算法原理

问题 线性判别分析(Linear Discriminant Analysis,LDA)是机器学习中常用的降维方法之一,本文旨在介绍LDA算法的思想,其数学推导过程可能会稍作简化。 LDA的思想 ● LDA是一种线性的、有监督的降维方法,即…

销售流程标准化重要吗?

各行各业都存在销售,但并不是每个销售都可以成为优秀的销售,优秀的销售往往有一套完整的销售流程,为了保证销售新人销售工作的顺利进行,销售流程标准化很有必要。 前言 各行各业都存在销售,但并不是每个销售都可以成为…

前端面试题之计算机网络篇--WebSocket基本使用

WebSocket 普通的包的请求和响应过程 1. 对 WebSocket 的理解 WebSocket是HTML5提供的一种浏览器与服务器进行全双工通讯的网络技术,属于应用层协议。它基于TCP传输协议,并复用HTTP的握手通道。浏览器和服务器只需要完成一次握手,两者之间…

HDLBits练习汇总-13-时序逻辑设计测试--状态机(一)

简单摩尔状态机1(Fsm1) 是一个摩尔状态机,具有两种状态,一种输入,一种输出。实现此状态机。请注意,重置状态为 B。使用异步复位。 模块声明 module top_module(input clk,input areset, // Asynchrono…

基础数学复习(3)——曲线拟合

文章目录基础概念曲线拟合的流程极小化损失函数线性最小二乘超定方程组的最小二乘解(必考)例题(必考)使用法方程计算拟合方程使用最小二乘法求解总结基础概念 曲线拟合的流程 选取函数类选取参数的准则:极小化损失函…

实习-------数据库基础

检索数据 1、如果使用DISTINCT关键字,它必须直接放在列名的前面。不能部分使用DISTINCT,DISTINCT关键字应用于所有列而不仅是前置它的列 例如:SELECT DISTINCT vend_id告诉MySQL只返回不同(唯一)的vend_id行 2、带一…

(六)devops持续集成开发——jenkins的全局工具配置之node环境安装及配置

前言 本节内容主要是关于jenkins集成node组件,从而实现前端node项目的流水线CICD发布功能。我们需要先安装好前端组件node,并在jenkins中配置好node组件,这样就可以流水线发布一个前端工程了。 正文 安装node组件①上传node安装包 ②解压node安装包 t…

用纯python脚本玩转UU加速器

1. 前言 之前几期内容,我们出过纯py形式的Android自动化脚本。同学们一直让再出一下纯py形式的Windows脚本,今天我们以UU加速器为例,给大家出一个简单的学习demo。 2. UU加速器的自动化demo 今天的练习demo也非常简单,大致内容…

张勇用最严厉的内部信,敲打阿里云,也在提振阿里士气

“「客户第一」的价值观,从来都不是高高挂在公司墙上的标语,而是支撑我们每一天获得成长的基石”。这应该是阿里巴巴董事局主席兼CEO张勇,自2015年来最严厉的一封内部信。信件里,张勇一改往日温情形象,措辞严厉的批评了…

pybind11 | 绑定CGAL几何算法(numpy数据交换)

文章目录一 前言二 numpy数据交换2.1 pybind11对numpy的支持2.2 Numpy VF(py::array_t)与CGAL mesh(Surface Mesh)之间的转换三 绑定CGAL算法示例3.1 示例函数3.2 绑定部分代码3.3 示例完整代码四 编译生成和测试4.1 编译生成pyd文件4.2 Python调用测试五 总结参考和拓展一 前言…

day04 IDEA数组

第一部分 : IDEA开发工具 参见 :IEDA的安装请参考文件夹PPT中的 04_IDEA.ppt 1.数组 1.1 数组介绍 ​ 数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致。 1.2 数组的定义格式 1.2.1 第一种格式 ​ 数据类型[] 数组名 ​ 示例&…

【Linux】进程创建|进程终止|进程等待|进程程序替换

索引1.进程创建fork函数初识😊我们先来看这样的一个程序:写时拷贝fork返回值的三个问题2.进程终止进程退出场景进程常见退出方法进程退出码:3.进程等待进程等待的方法wait方法waitpid方法获取子进程status进程的阻塞等待方式:进程的非阻塞等待…

vue实现导入表格数据【纯前端实现】

一、文章引导 #mermaid-svg-3VJi5rNvrLDOy2MT {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3VJi5rNvrLDOy2MT .error-icon{fill:#552222;}#mermaid-svg-3VJi5rNvrLDOy2MT .error-text{fill:#552222;stroke:#55222…

WSL Ubuntu SSH

WSL中的IP wsl中的ubuntu的ip是动态分配的,每次开机都不一样,而且动态分配的ip和windows系统中的ip不在同一网段,但是我发现在windows中能ping通wsl中ubuntu的ip,这说明子系统与虚拟机不同,在查看ubuntu系统ip时&…

第010课 - docker安装mysql

第010课 - docker安装mysql docker run -p 3306:3306 --name mysql \ -v /mydata/mysql/log:/var/log/mysql \ # 这个里面是容器内mysql相关的日志 -v /mydata/mysql/data:/var/lib/mysql \ # 这个里面是msyql数据相关的内容 -v /mydata/mysql/conf:/etc/mysql \ # 这个里面是容…