24 授权(上):系统如何确保授权的过程可靠?

你好,我是周志明。

在上节课,我们探讨了信息系统中关于安全认证的相关话题,它主要解决的是“你是谁”的问题。那么今天我们要探讨的授权话题,是要解决“你能干什么”的问题。

“授权”这个概念通常伴随着“认证”“审计”“账号”一同出现,被合称为AAAA(Authentication、Authorization、Audit、Account)。授权行为在程序中的应用也是非常广泛的,我们给某个类或某个方法设置范围控制符(如public、protected、private、),本质上也是一种授权(访问控制)行为。

而在安全领域中,我们所谈论的授权就更要具体一些,它通常涉及到以下两个相对独立的问题:

  • 确保授权的过程可靠

对于单一系统来说,授权的过程是比较容易做到可控的,以前在很多语境上提到授权,实质上讲的都是访问控制,理论上两者是应该分开的。

而在涉及多方的系统中,授权过程则是一个比较困难,但必须要严肃对待的问题:如何既让第三方系统能够访问到所需的资源,又能保证其不泄露用户的敏感数据?现在,常用的多方授权协议主要有OAuth 2.0和SAML 2.0(两个协议涵盖的功能并不是直接对等的)。

  • 确保授权的结果可控

授权的结果是用于对程序功能或者资源的访问控制(Access Control)。现在,已形成理论体系的权限控制模型有很多,比如自主访问控制(Discretionary Access Control,DAC)、强制访问控制(Mandatory Access Control,MAC)、基于属性的访问控制(Attribute-Based Access Control,ABAC),还有最为常用的基于角色的访问控制(Role-Based Access Control,RBAC)。