分布式系统中,权限设计实践

简介: 采用合理的策略去管理资源的权限并不是一件简单的事,通常随着业务和系统的不断扩展,对权限体系都会带来直接的影响,所以在做结构设计时,需要相对复杂但又要避免过度复杂。

一、权限控制

1、业务背景

在复杂的业务系统中,权限管理是最基础的模块,通过各种授权结构模型,管理用户在产品中可访问和可操作的边界,以实现系统和数据安全管理的目的:

01-1.png

通常在系统的任何层面都会涉及到一定程度的权限管控:

  • 页面层:菜单、组件、操作口;
  • 网关层:黑白名单管理、流量控制;
  • 控制层:平台、服务、API;
  • 数据层:数据库、业务表、字段;

不同层面的权限管理,用来应对不同场景下的需求,例如:后台系统的页面,开放平台中的白名单,常规API访问限制,核心数据的字段维度。

采用合理的策略去管理资源的权限并不是一件简单的事,通常随着业务和系统的不断扩展,对权限体系都会带来直接的影响,所以在做结构设计时,需要相对复杂但又要避免过度复杂。分布式系统中,通常从系统层、组织架构、权限关系三个方面去考虑可行方案。

2、RBAC模型

在权限控制的模型中,基于角色的访问控制Role-Based-Access-Control(简称RBAC),是普遍使用的一种模型:

01-2.png

  • 模型中三个核心要素:用户、角色、权限;
  • 可以简化模型,单从用户层级去管理资源;
  • 升级模型结构,做继承合并或选择性责任分离;

围绕RBAC的权限体系,可以精细化管理,相应的结构设计也会复杂,通常用在多业务多场景的分布式系统中,在用户极少的轻量应用中,会精简权限管理。

二、组织架构

1、组织模型

常见的组织架构体系如下:

01-3.png

2、角色管理

不同的组织节点对应不同的岗位角色:

01-4.png

在组织架构的层级中,带来角色层级关系,进而会存在一个用户具备多个角色的情况,处理策略通常有两种:

  • 角色合并:把用户所有角色对应的权限点做合并,统一开放;
  • 角色分离:即用户登录系统之后,根据角色的选择切换,加载相应权限;

三、资源管理

1、资源层级

01-5.png

系统层级:大型复杂的架构中,会对系统做应用的划分,并且通过控制台做各种通用业务的管理,例如通过控制台管理各个业务应用的账号开通、服务授权等,从而形成系统层级的结构;这样可以避免多个应用对基础功能的重复实现,从设计层面看也更加合理。

资源粒度:设计精细的权限体系,可以灵活的管理资源开放的范围,大到应用平台的直接开放(平台管理员),小到应用中某个页面的功能点开放(业务人员),甚至细化到库表字段级的控制,可以极大的提升数据安全性。

操作类型:通常对资源的操作定义为:增删改查四个基础动作,进而产生对数据的影响,转换到业务中权限的描述语义为:读、写、删,通过对角色与资源的业务定义,从而给到不同的动作授权。

2、授权关联

01-6.png

  • 围绕组织架构,创建角色与用户,并形成用户与角色的绑定关系;
  • 定义资源的管理层级,以及相应的操作类型,并形成页面到数据的链路;
  • 基于角色主体,绑定对应资源和可操作类型,构建角色的权限集合;

基于组织架构中用户与角色的关系,角色与资源的操作权限,从而实现用户对资源管理的控制,其核心原理就是RBAC模型,只是在不同的场景下对不同节点做复杂设计,以更好的适应业务。

在权限体系中,场景多是授权动作少,权限点查询加载的过程多,所在实现的过程中,可以适当考虑做冗余的表关联结构,从而简化查询的过程。

END


相关文章
|
2月前
|
NoSQL 关系型数据库 MySQL
分布式锁:不同实现方式实践测评
分布式锁:不同实现方式实践测评
28 0
|
6月前
|
SQL 安全 关系型数据库
Seata 解决分布式事务理论与实践(2)
Seata 解决分布式事务理论与实践(2)
Seata 解决分布式事务理论与实践(2)
|
6月前
|
数据库 Nacos 微服务
Seata 解决分布式事务理论与实践(1)
Seata 解决分布式事务理论与实践(1)
|
26天前
|
存储 Java 应用服务中间件
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
45 0
|
5月前
|
负载均衡 Java 应用服务中间件
分布式系列教程(23) -分布式事务解决方案(实践篇)
分布式系列教程(23) -分布式事务解决方案(实践篇)
59 0
|
3月前
|
存储 监控 网络协议
百度基于金融场景构建高实时、高可用的分布式数据传输系统的技术实践
本文将通过一个百度搜索旗下的金融场景案例来分享构建高实时、高可用的分布式数据传输系统的技术实践。
50 0
|
3月前
|
人工智能 Cloud Native PyTorch
阿里云 ACK 云原生 AI 套件中的分布式弹性训练实践
阿里云 ACK 云原生 AI 套件中的分布式弹性训练实践
148654 4
|
8月前
|
存储 分布式数据库 调度
GitHub典藏版!腾讯T14级牛人亲码的分布式数据库实践,再次爆火
数据库就是要做好五件事,存储、事务、查询、复制和其他。而对分布式数据库来说,不仅要继续做这五件事,还要多出一件事,分片。在这六件事中,存储和其他这两件事与单体数据库差不多,难点就在事务、查询、复制和分片这四件。
|
8月前
|
缓存 监控 NoSQL
分布式文件存储与数据缓存 Redis高可用分布式实践(下)(三)
分布式文件存储与数据缓存 Redis高可用分布式实践(下)(三)
|
4月前
|
监控 负载均衡 Dubbo
分布式架构与Dubbo基础入门与实践
分布式架构与Dubbo基础入门与实践
39 1

热门文章

最新文章