访问控制 —— 概述

在计算机系统中访问控制(Access Control),又称授权(authorization),是指决定一个主体(subject,如用户、进程等)是否能够在客体(object,如文件、系统资源等)上执行某些操作(读、写、执行等)的过程。

1 相关概念

下面是一些访问控制和计算机安全方面比较常用的一些概念:

  • 权限(permission)
    在客体上执行操作的权力
  • 访问控制模型(Access Control Model)
    访问控制模型定义了主体、客体、操作和权限之间的关系
  • 访问控制策略(Access Control Policy)
    基于访问控制模型、定义了主体、客体、权限等关系的规则集合。

2 常见模型

不同的安全模型有不同的应用场合和使用场景。因此在一个实际的应用系统中,往往是几种模型共同使用来保证系统的安全。下面介绍目前使用非常普遍的几种访问控制模型:

2.1 自主访问控制模型(DAC,Discretionary Access Control)

自主访问控制机制中数据的拥有者可以任意修改或授予此数据相应的权限。

传统的Linux、Windows都采用这种机制,比如某用户对于其所有的文件或目录可以随意设定其用户/组/其他所有者的读/写/执行权限。

2.2 强制访问控制模型(MAC,Mandatory Access Control)

强制访问控制机制中不允许数据的拥有者随意修改或授予此对象相应的权限,而是通过强制的方式为每个对象分别授予权限。

SELinux即采用这种机制,该机制主要通过安全级来实现。

2.3 基于角色的访问控制模型(Role-Based Access Control,RBAC)

此模型中对系统操作的各种权限不是直接授予具体的用户,而是在用户集合与权限集合之间建立一个角色集合,每一种角色对应一组相应的权限。一旦用户被分配了适当的角色后,该用户就拥有此角色的所有操作权限。

这样做的好处是,不必在每次创建用户时都进行分配权限的操作,只要分配用户相应的角色即可,而且角色的权限变更比用户的权限变更要少得多,这样将简化用户的权限管理,减少系统的开销。
SELinux中也用到了此模型的相关概念。

注:MAC 和 DAC 不是互斥的。如在Linux中DAC 是最基本的安全模型,是Linux中必不可少的访问控制机制是,而 MAC 是构建在 DAC 之上的加强安全机制,属于可内容。在Linux系统中,访问前系统通常都是先做 DAC 检查, 如果没有通过则操作直接失败;如果通过 DAC检查并且系统支持 MAC 模块,再做 MAC 权限检查。

3 Linux权限控制

Linux是在访问控制方面最有代表性的操作系统,在Linux中所有的操作实质都是在进行进程访问文件的操作,访问文件需要先取得相应的访问权限,而访问权限是通过 Linux 系统中的安全模型获得的。从传统的Linux权DAC模型,到后来的基于MAC和RBAC的SELinux机制,Linux中很好地实现了上面的三种访问控制模型。

这里只介绍DAC模型,后面会专门讲述SELinux机制。

3.1 Linux DAC

在Linux中DAC的核心是进程理论上所拥有的权限与执行它的用户的权限相同,可以通过对用户/组及其所属进程对文件(Linux中一切资源皆文件)访问赋予一定的权限来实现基本的访问控制。

Linux系统中文件是MAC模型中的客体,用户/组及其所属进程是MAC模型中的主体。客体的访问权限有读、写和执行三种,访问主体有文件所有者、同组用户和其他用户三种。


参考文献

1 Romuald Thion. Access Control Model. University of Lyon.
2 https://evolllution.com/opinions/cybersecurity-access-control

你可能感兴趣的:(访问控制 —— 概述)