系统设计之基于资源角色的权限管理

权限管理是所有后台系统的一个重要组成部分,其目的是控制用户(User)对资源(Resource)的操作(Action),避免因为权限控制缺失或操作不当引发风险,比如操作失误,隐私数据泄露等问题。 迄今为止最为普及的权限设计模型是基于角色的访问控制模型(Role-Based Access Control)。它主要是将用户和用户组捆绑在一起叫主体,资源和操作捆绑在一起叫权限,中间用角色做桥梁关联二者。 但近年来随着对数据管控的精细化,资源和操作的捆绑成为了其掣肘。所以资源也需要像用户那样拥有资源组的概念,这样就变成了用户/用户组对资源/资源组有操作权限,这就是基于资源角色的访问控制模型。 本文将详细描述基于角色的访问控制模型到基于资源角色的访问控制模型的进化过程,并使用强大、高效的开源访问控制框架 Casbin 来设计一个基于资源角色的访问控制系统。

[阅读全文]
 |   

系统日志收集之初探rsyslog

系统内核和许多程序会产生各种错误信息、警告信息和其他的提示信息,这些信息对用户了解系统的运行状态是非常有用的,所以需要把它们保存到对应的日志文件中,以便后续进行分析和监控系统或软件的状态。 Linux 系统拥有非常灵活和强大的日志功能,几乎可以保存所有的操作记录,并可以从中检索出我们需要的信息。完成这个工作的守护进程就是 rsyslog。

[阅读全文]
 |   

Flask扩展之http客户端开发

Flask 被称为“微框架”。其中的“微”字不代表整个应用只能塞在一个 Python 文件内,也不代表 Flask 功能不强。它表示 Flask 的目标是保持核心简单而又可扩展。 它不会替使用者做决定,比如选用何种数据库,使用何种模板引擎等。Flask 通过扩展功能来增加它的功能。扩展之于 Flask,就像第三方库之于 Python,插件之于 Vscode。本文将介绍如何开发一个简单的 Flask 插件:HTTPClient,并将其发布到 Python 官方索引 Pypi(Python Package Index) 上。

[阅读全文]
 |   

版本控制之Git初探

作为一名程序员,肯定会将人生大部分的时光交给了 Github,这个戏称为全球最大的同性交友网站。Why?因为程序员需要版本控制系统(VCS)来对代码进行管理。这样程序员就可以跟踪项目的变化细节,将选定的文件回溯到之前某个状态,以及各个成员在多人协同项目中的代码贡献等。本文是对版本控制软件 Git 的初步探索,完全可以支持日常多人协同开发。

[阅读全文]
 |