继续门卫的故事
访客小强:这是我的证件,我和XX部门阿明约了今天下午三点在8楼面试。
门卫电话阿明确有此事。
小强在访客表中登记姓名、证件号、联系方式、来访时间和事由。
大楼的电梯仅支持刷卡按楼层,门卫使用门禁卡帮小强按了去8楼的电梯。
在上述过程中,门卫首先验证小强的身份,其次查看小强的访问权限(3楼),然后为他开通去往3楼的权限,小强仅能通往3楼,不能去往其他楼层。
对应访问控制的三要素:主体(小强)、客体(访问的对象)、访问控制策略(可以去8楼,不能去其他楼层)。主体可以是人,也可以是某个需要调用数据库接口的应用程序。
访问控制的基本原则是隐式拒绝(除非得到授权,否则小强不能去往任何楼层)。
访问控制的目的:
1、访问保障:我给你,你才能要(小强能够去往8楼);
2、访问限制:我不给你,你不能抢(小强不能去往其他楼层)。
有没有可能绕过访问控制策略?同一部电梯里的阿兰到达2楼后出去了,小强乘机尾随。或者直接通过楼梯从3楼到达其他楼层。
如何防止这类未授权的行为发生?每一层或者每个区域都设置门禁,仅具有相应权限的人验证后才可进入,或者请阿明到门卫室领小强上楼。
在实际的信息系统中,访问控制的实现方式多种多样,大致可以分为:强制访问控制、自主访问控制和非自主访问控制。
强制访问控制的管控最严格,主体和客体均拥有一个“标签”,比如小强、阿兰、阿明分别对应1、2、3级,楼层也有1-3级,3级的阿明可以去往1-3层,2级的阿兰可以去1-2层,1级的小强只能呆在1楼。或者阿明只能去3楼,阿兰只能去2楼,小强还是在1楼。每一个主体的权限根据标签固定死,谁来设置这些权限呢,系统(管理员)。
自主访问控制灵活多了,系统授予阿明3级权限(较高),3级的阿明又可以把他的权限授予小强,让他在1-3层间畅通无阻。但是阿明随意带闲杂人等进出怎么办?
介于强制和自主之间的非自主访问控制,可以实现定制化的需求。非自主又可以分为按照规则的访问控制和按照角色的访问控制。
比如最初的例子,小强作为访客原本没有任何权限,系统可以根据需求为他创建一条访问控制规则:小强可以去往3楼。并且可以附加限制,仅在下午3点至4点间权限有效。对阿明则是,可以访问1-3层,时间永久,直到离职时禁用/删除该规则,终止阿明的权限。
时间久了,规则越来越多,应该失效的规则被遗忘,离职的阿明仍然可以随进随出。
如果是基于角色的控制,阿明属于XX部门,XX部门具有1-3层的权限,根据XX部门的人员变动,清理角色下的成员,比盯住单个人的规则省力多了。
看起来不论是规则、角色、自主还是强制,访问控制的策略都实现应有的访问保障和访问限制。真的能万无一失吗,那必然不是啊。
除了授权用户的密码被盗用,还有一种聚合/推理攻击。某个用户不具备访问特定信息的权限,但是具有访问这些信息组成部分的权限,将每个部分组合起来,从而得到被限制访问的信息。
比如阿兰在财务部门负责报税和交社保,她没有权限知道每个员工的工资,但是可以通过纳税金额和社保费用推算出员工的工资。
如何防止聚合/推理攻击,敬请期待后文。
网友评论