阅读 418

【工程师之路-访问控制篇】访问控制综述

前言

在计算机工业界,访问控制指的是管理不同的人对计算机和计算机资源的访问权限。本文简要介绍了在工业界内被认可并广泛应用的主流访问控制机制(概念及模型),并简要分析了它们的使用场景与局限性。可以让读者更好的理解各个机制的区别来帮助读者选择最适合自己项目的模型和方法。

访问控制

访问控制(Access Control)正如其名字,是一种通过验证用户权限规范用户访问资源的一种安全措施。因此标识(Identification)、认证(authentication)以及授权(authorization)就是组成一个访问控制模型的三个重要部分。

如果读者看过与安全或权限相关的书或有过相关实践应该对这三个概念的区别熟悉一些,如果不太了解的话可以通过identification-authentication-authorization了解一下

访问控制机制允许主体(Subject,代表了当前“用户”,不一定是人,也可以是爬虫或robot)使用它们的凭证(Credential,比如密码或Token)去标识(identify)它们自己是合法的用户,并让主体能够访问资源。一个简单的例子就是Linux系统中的访问控制,在Linux系统中用户能访问什么文件都通过一个预先定义好的Access Control List(ACL)做了限制。

访问控制的分类

访问控制有时被划分为两大类Discretionary 和 non-Discretionary,被流传和应用最广的主要有三类访问控制模型:强制访问控制(MAC,Mandatory access control),自主访问控制(DAC,Discretionary access control),基于角色的访问控制(RBAC,Role Based Access Control)

Discretionary access control (DAC)

DAC是由对象(Object,可以是系统中的file或data)的所有人制定policy,所有者决定谁能够访问这个对象(Object),以及它有什么Privileges(读写等)。

部分中文把policy翻译成策略我觉得不是很妥,这里干脆就直接用英语,policy一词会经常出现在和安全相关的话题中en.wikipedia.org/wiki/Comput…

DAC有两个重要概念:

  • File和Data的所有权:在系统中的所有对象都有一个owner. 在绝大多数DAC系统中,一个对象的初始owner就是导致这个对象被创建的主体(Subject),对于这个对象的policy就是由这个主体制定的。
  • Access rights and permissions:owner可以设置其他主体(subject)的访问权限。

主流的DAC模型中经常使用ACL或ACM(Access Control Matrix)来记录policy,比如在casbin中通过如下内容表示policy

p	alice	data1	read
p	bob	data2	write
复制代码

拥有对象权限的用户,又可以将该对象的权限分配给其他用户,所以称之为“自主(Discretionary)”控制。 这种设计最常见的应用就是文件系统的权限设计,如微软的NTFS。

DAC最大缺陷就是对权限控制比较分散,不便于管理,比如无法简单地将一组文件设置统一的权限开放给指定的一群用户。同时主体的权限太大无意间就可能泄露信息,而且不能防备木马攻击访问控制表。

Mandatory access control(MAC)

MAC是一种更加“严格”的系统。这样的访问控制规则通常对数据和用户按照安全等级划分标签,访问控制机制通过比较安全标签来确定的授予还是拒绝用户对资源的访问。用户只能根据被授予的安全标签的权限去访问对应的对象。

在强制访问控制系统中,所有Subject(用户,进程)和Object(文件,数据)都被分配了安全标签,安全标签标识一个安全等级。访问控制执行时对主体和客体的安全级别进行比较,是一种强加给Subject(即系统强制Subject服从访问控制策略)的一种访问方式,它利用上读/下写来保证数据的完整性,利用下读/上写来保证数据的保密性。

主要有Bell LaPadula(BLP) Model,以及Lattice Model。

BLP模型四个安全级别(标签)

MAC的访问控制方式通过梯度安全标签实现信息的单向流通,可以有效地阻止木马的攻击,但其实现工作量较大,且管理不便、不够灵活,而且它过重强调保密性,对系统连续工作能力、授权的可管理性方面考虑不足,在商用软件中较少使用,主要出现在军事以及对信息保密要求极高的组织中使用。

Role-Based access control(RBAC)

RBAC是继MAC和DAC后的一个主要选择,因为它对于商业软件来说比DAC以及MAC都更加合适。Role-based access control (RBAC)指的是将系统中的用户的权限以角色(role)划分,比如在一个系统中医生有权限新建病例,而普通护工没有。它提供了细粒度的控制,并提供了一种简单,易于管理的访问控制方法,与单独为用户分配权限(比如ACL)相比,它更不容易出错。

RBAC for Azure resources

后记

本文介绍了访问控制并介绍了相关的主流几个模型,一些比如ABAC和一些模型的变种就没详细介绍。留待后续文章详细介绍。

参考资料

关注下面的标签,发现更多相似文章
评论