本文是”浅淡访问控制”系列博文的第一篇, 从访问控制的基本概念, 访问控制模型, 访问控制实现机制等方面对访问控制进行了概述, 力求使读者从宏观上对访问控制有一个初步的了解, 后续几篇博文会针对具体的访问控制技术展开介绍.
先立个flag, 后面有时间我会尽快完成. 敬请期待!
在百度学术中搜索”访问控制”关键字, 可以找到很多关于访问控制的文章, 其中的一篇综述性文章 云计算访问控制技术研究综述已经详细地讲述了传统访问控制以及云计算访问控制的方方面面, 在这里就不大段copy文中的内容了, 只做一些概念上的普及.
访问控制是指主体依据某些控制策略或权限对客体本身或是其资源进行的不同授权访问。访问控制包括三个要素,即:主体、客体和控制策略。
Apache Shiro框架采用基于资源的方式 (Resource Based Access Control, The New RBAC) 进行用户的访问控制.
Spring Security是Spring的子项目, 旨在对Spring项目进行安全管理. Spring Security必须在Spring环境下运行, 支持多种基于投票的访问控制策略.
大概考察了几家云计算平台服务商的访问控制系统, 大致分为以下4类.
AWS最早实现了云计算领域的基于资源的访问控制, 并定义了一套完备的访问控制语法, 通过多个子句的组合, 能够灵活地声明策略, 以及表达用户与策略之间的关系. IAM是最为主流的云计算访问控制系统, 国内几家云计算厂商(A家, T家, 猪厂)的访问控制系统全部参考IAM的实现方式.
Google Cloud Platform IAM也实现了一套访问控制语法, 然而与AWS IAM不同, Google IAM的实现方式有些类似于Shiro, 通过定义用户(member)与角色(role)的绑定关系(binding)实现用户的访问控制.
Azure AD采用了传统的基于角色的访问控制, 类似于Shiro中的隐式角色. AD提供了一大堆的官方角色, 每个角色与权限是静态绑定的. AD还支持用户创建自定义角色, 并通过AssignableScopes分配角色生效的范围.
该类云平台服务商的访问控制并未抽取成公共服务, 而是嵌入到各个服务中去, 并且仍然停留在粗粒度, 静态的访问控制阶段.