PingCode Wiki 权限设计之 ACL

本文详细介绍了 PingCode Wiki 的权限设计,重点讨论了 ACL(Access Control List)的原理、使用场景以及如何在 PingCode Wiki 中实现 ACL 与 RBAC 结合的权限架构。通过实例分析了 ACL 在解决特定权限问题中的优势,并探讨了设计与实现过程中的关键点,包括数据库设计、程序实现、API 约定和复杂场景处理等。
摘要由CSDN通过智能技术生成

Worktile 权限着重讲了 RBAC(基于角色的权限控制方案)的设计与实现,本文基于 Wiki 页面权限选择的另一个主流权限设计的方案:ACL

本文大致分为三部分:

  • 1. ACL 介绍

  • 2. 介绍我们的权限以及为什么选择它

  • 3.设计实现

一、ACL 介绍

1. 什么是 ACL?

ACL:Access Control List,权限控制列表,是对文件以及目录的权限控制方案。大名鼎鼎的 Linux 权限系统,它就是 ACL 的典型案例,本人在开发过程中也受到了 Linux 权限设计的一些启发。

2. ACL 的使用场景

使用场景也可以换个问法:为什么要使用 ACL ?关于这个问题我们还以 Linux 作为案例:Linux 本身只提供了 Owner(所有者)、Group(用户组)、Others(其他成员),也就是说其他成员或用户组是无法指定更细粒度的权限。

为了更好的解释,我们来举个简单的例子(场景):

有 4 个成员有 A、B、C、D,其中 A、B、C 是开发组 G 的成员,A 成员创建了一个代码仓库并把团队开发的代码放置到该目录中,其中这些代码主要是关于 G 组的,与其他成员无关,所以 A 把文件目录设置了权限,权限是组内可读可写,其他人没有任何权限。

现在来分析一下各个角色,A 是仓库的 Owner,G 是 Group(含 B、C),D 是与该文件无关的成员,所以是 Others。现在入职了一个用户 E,因为 E 是新人,所以不想让 E 去操作代码,只允许他查看熟悉代码。

面对这种场景,试想一下如何给 E 成员设置对应权限呢?答案是 oh no,因为 E 既不能按照 G 组权限,也不能按照 Others 权限,更不能是 Owner!所以面对这种鸡肋的权限,ACL 就作为了其补充,ACL 可以支持针对某一个用户或某个用户组做独立的权限,完美解决了类似场景。

二、PingCode Wiki 权限架构

OK,了解了什么是 ACL 以及使用场景,我们来聊一下 Wiki 的权限架构,基本架构见下图。

1. 基础权限 RBAC——角色对应的权限

1.1 权限配置

1.2 查看权限

 

2. 页面权限 ACL——针对用户和用户组的权限

页面权限同样是作为 RBAC 的补充,更加细粒度的权限划分,即给某部分人或某部分用户组分配对应权限。

2.1 页面权限设置入口

右上角菜单——「更多-权限设置」

<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值