25 授权(下):系统如何确保授权的结果可控?
你好,我是周志明。今天,我们接着上一讲的话题,继续来探究关于授权的第二个核心问题:系统如何确保授权的结果可控?
在上节课的开篇,我提到了授权的结果是用于对程序功能或者资源的访问控制(Access Control),并且也给你介绍了一种最为常用的权限控制模型RBAC(基于角色的访问控制,Role-Based Access Control)。
那么这节课,我就来和你聊聊这种访问控制模型的概念、原理和一些要注意的问题。希望你能在理解了RBAC是如何运作的之后,将其灵活运用在自己实际工作中关于功能、数据权限的管理上,而且这也是为后面学习Kubernetes的权限控制、服务安全等内容提前做的铺垫工作。
好,接下来,我们就从RBAC的几个基础概念开始学起吧。
RBAC的基础概念
首先,我们要明确,所有的访问控制模型,实质上都是在解决同一个问题:谁(User)拥有什么权限(Authority)去操作(Operation)哪些资源(Resource)。
这个问题初看起来并不太难,一种直观的解决方案就是在用户对象上设定一些权限,当用户使用资源时,检查是否有对应的操作权限即可。很多著名的安全框架,比如Spring Security的访问控制,本质上就是支持这么做的。