简介
今天下午参加了InfoQ举行的关于云安全的讨论会。杨孟哲分享了云平台安全访问控制的设计和实现,我觉得蛮实用。总结如下:
ACL模式
ACL是Access Control List的缩写。这是最常见的权限控制的方式。在Windows和Linux操作系统设计都有用到。它是以被访问者为中心,比如,某个文件或者某个数据库表。
| File A | Table B |
Alice | RW | R |
Bob |
| W |
在系统中保存:
File A: Alice有读写权限; (Bob没有在权限列表中,所以无权限)
Table B: Alice有读权限;Bob有写权限
用户访问的时候,系统会检查权限列表,看用户是否能执行相关操作。
Capability模式
这是我第一次听说这种模式。
解释这种模式的最好方式是使用火车票系统。火车站根据火车车次卖票;乘客到火车站买票;买了火车票的乘客凭票上车。乘客就是访问者;火车上的座位是被访问者;哪位乘客可以进站坐哪个座位由票来决定。
这种模式是在被访问者上设计可执行的操作(坐火车上的座位)。由一个程序来生成访问权限(铁道部印制火车票),颁发给访问者(乘客)。 访问者持访问权限执行某项操作,是否能执行程序根据访问者持有的访问权限(票)来决定是否允许执行。
Alice | File A: RW | Table B:R |
Bob |
| Table B:W |
Alice持有的票表明对File A有读写权限;对Table B有读权限。
Bob持有的票表明对Table B有写权限。(对File A无权限)。
这种模式要求程序能够生成不能/很难被仿制的票和能够检测票真伪的程序。
两种模式的对比
附录
此文参考了以下信息