一些概念

  • 主体 能够访问客体的实体。一般存在三类主体:所有者、组、世界
  • 客体 外界对其访问收到控制的资源。一个用来包含或接收信息的实体
  • 访问权 描述了主体可以访问客体的方式

自主访问控制 DAC

一个实体可以被授权按其自己的意志使另一个实体能够访问这些资源。

|698x395

保护域

可以把保护域想象成给不同的人或不同的程序划定的“势力范围”或者“活动区域”。

在这个“势力范围”里,你可以做某些事情,比如访问某些资源(文件、内存等等)。但是,如果你不在这个“势力范围”里,你就可能被限制,不能随便访问这些资源。

更具体一点:

  • 一组客体及对这些客体的访问权: 保护域实际上就是定义了哪些“人”或“程序”(主体)可以对哪些“东西”(客体,比如文件、内存)做什么操作(比如读、写、执行)。
  • 提供更灵活的保护: 相比于简单的权限设置(比如这个文件只能被某个用户读写),保护域可以更细致地划分权限。比如,某个程序在运行的不同阶段可能需要不同的权限,保护域就能实现这种动态的权限管理。
  • 用户态和内核态的例子: 就像我们平时用的软件(用户态)和操作系统的心脏(内核态)一样。用户态的程序通常只能在自己的“保护域”里活动,不能直接触碰操作系统的核心区域。但当用户态程序需要操作一些受保护的资源时,它需要通过“申请”(系统调用)进入内核态的“保护域”,由操作系统代为执行。

基于角色的访问控制 RBAC

不是直接和权限相关联,而是通过角色来关联:

|507x578

一个矩阵表示用户和角色之间的分配关系,另一个表示角色和权限之间的对应关系。

  • RBAC0 (基本模型): 最简单的 RBAC 模型,只包含用户 - 角色和角色 - 权限的分配关系 。
  • RBAC1 (角色层次): 在 RBAC0 的基础上增加了角色之间的层次关系,允许角色继承 。
  • RBAC2 (约束): 在 RBAC0 的基础上增加了约束,用于实现一些安全策略,例如互斥角色 。
  • RBAC3 (统一模型): 同时支持角色层次和约束,是功能最丰富的 RBAC 模型 。

基于属性的访问控制 ABAC

ABAC 是比 RBAC 更灵活、更细粒度的一种访问控制方法。 如果说 RBAC 是“按职位授权”,那么 ABAC 就像是“按条件授权”。

ABAC 根据用户和资源的各种属性,以及当时的环境条件来动态地判断用户是否具有访问资源的权限。

  • 主体属性:描述用户的特征
  • 客体属性:描述资源的特征
  • 环境属性:描述访问发生时的上下文环境

ABAC 通过定义策略(Policy)来组合这些属性,从而实现非常灵活的权限控制

ABAC 的优势和劣势 (PPT 4.6 节)

  • 优势:
    • 灵活性: 可以实现非常细粒度的权限控制,满足各种复杂的业务需求。
    • 表达能力: 可以用策略清晰地表达各种授权规则。
  • 劣势:
    • 性能影响: 每次访问都需要计算大量的属性,可能会影响系统性能。
    • 管理复杂性: 策略的管理可能会变得比较复杂,需要仔细设计和维护。

身份、凭证和访问管理 ICAM

ICAM (Identity, Credential, and Access Management) 是一种综合性的方法,用于管理和实现数字身份、凭证和访问控制. 简单来说,ICAM 就是一套管理“你是谁”、“你有什么证明”以及“你能做什么”的系统。

  1. 身份管理
  2. 凭证管理:用户验证自己身份的凭证
  3. 访问管理:用户允许做什么
  4. 资源管理:控制用户如何访问资源
  5. 特权管理
  6. 策略管理
  7. 身份联合:解决不同组织之间的信任问题

作业题

1. 简述 DAC 与 MAC 的区别。

  • DAC (自主访问控制):
    • 在 DAC 中,资源的拥有者可以自主地决定哪些用户可以访问哪些资源.
    • 强调的是灵活性,允许用户根据自己的意愿来分配权限.
    • 例如,UNIX 文件系统就是一种 DAC 的实现,文件的拥有者可以设置文件的读、写、执行权限.
  • MAC (强制访问控制):
    • 在 MAC 中,资源的访问权限不是由资源的拥有者决定的,而是由系统管理员或安全策略决定的.
    • 强调的是安全性,通过给主体和客体都打上安全标签,系统会强制检查这些标签来决定是否允许访问.
    • MAC 常用于对安全性要求极高的场景,例如军事领域。

简单来说: DAC 是“我的地盘我做主”,MAC 是“大家都得听我的”。

2. 在访问控制语境中,主体与客体的区别是什么?什么是访问权?

  • 主体 (Subject):
    • 主体是指能够访问客体的实体.
    • 可以是一个用户、一个进程或者一个设备.
    • 简单来说,主体就是“谁”来发起访问。
  • 客体 (Object):
    • 客体是指被主体访问的资源.
    • 可以是一个文件、一个目录、一个内存区域或者一个设备.
    • 简单来说,客体就是“要访问什么”。
  • 访问权 (Access Right):
    • 访问权描述了主体可以访问客体的方式.
    • 例如,读、写、执行、删除等.
    • 简单来说,访问权就是“可以做什么”。