Shinkai005

V1

2023/02/21阅读:15主题:极简黑

【CSF】网安基础-第三节课+Tutorial 2访问控制

【CSF】网安基础-第三节课访问控制+Tutorial 2 AC.md

PPT 0/38

  • Li DONG ZHU 导师
  • quiz time 截止到周二下午一点(有good cause 可以问老师要密码重新进入)

written assignment

评分标准~

  • 至少800字,10个最新网络安全出版物 25%
  • 讨论优点25%(contribution part)
  • 讨论缺点30%
  • 论文之间的联系10%
  • 未来研究方向10%

这部分问Dongzhu~

总览

访问控制的概念(Access control)

  • 定义
  • 广义的访问控制
  • 基本元素

访问控制政策

  • 自主访问控制(DAC)

    基于角色的访问控制(RBAM);

    基于属性的访问控制(ABAC);

访问控制定义

  • 访问控制实现一种安全策略,指定谁或什么(例如,在进程的情况下)可以访问每个特定的系统资源,以及每个实例允许的访问类型。

更广义环境下的访问控制

  • 访问控制机制在用户和系统资源(如应用程序、操作系统、防火墙、路由器、文件和数据库)之间进行协调。
  • 身份验证:验证用户或其他系统实体的凭证是否有效。
  • 审核:对系统记录和活动进行独立的评审和审查。
  • 授权:授予系统实体访问系统资源的权利或权限。该函数确定在给定目的下谁是可信的。
image-20230124111418131
image-20230124111418131

用户访问第一步进行的是身份验证~ 然后用访问控制函数检测这个用户拥有那些权利

后面还会讲

访问控制的基本元素

  • 对象object: 访问控制的资源,用来容纳或接受信息的实体(比如 页面, 文件, 邮箱)

  • 主体subject:能够访问对象的实体

    • 拥有者( 创建者, 管理员)
    • group 组成员(足以行使访问权)
    • world(最低限度访问权)

    权利递减~

  • 访问权

    • READ: 查看系统资源信息,包括复制or打印
    • Write: 添加,修改,删除数据包括读取
    • Execute:执行特定程序
    • Delete:删除特定系统资源
    • Create:创建新的文件, 记录, 字段.
    • Search: 在目录里列出所有文件or在目录中搜索

访问控制策略

  • Discretionary access control (DAC) 自主访问控制(DAC)

  • Mandatory access control (MAC) 强制访问控制(MAC)

  • Role-based access control (RBAM) 基于角色的访问控制(RBAM)

  • Attribute-based access control (ABAC) 基于属性的访问控制(ABAC)

这些并不是互斥的, 可以同时使用两种或以上

访问控制策略: DAC自主访问控制

  • DAC根据请求者的身份和访问规则(授权)控制访问,这些规则规定了允许(或不允许)请求者做什么。

和MAC强制访问的区别

  • 一个实体可能被授予访问权,允许该实体自行允许另一个实体访问某些资源。

访问控制矩阵 access Matrix(sparse 稀疏矩阵)

image-20230124112436364
image-20230124112436364

DAC: ACL 访问控制列表(column)

image-20230124100602360
image-20230124100602360

? 有问题~ C的权利是A给的..不是B啊...

问老师了~ 这里只是单纯的表达file1不同角色的权限~ 没有A赋予B的意思.

  • ACL列出用户及其允许的访问权限

优势

  • 包含一个未显式列出用户的默认或公共条目(例如只读访问)

  • 对于给定的资源,可以方便地确定哪些主体拥有哪些权利

劣势

  • 不方便确定特定用户可用的访问权限

内容来源维基百科

访问控制表(Access Control List,ACL),又称存取控制串列,是使用以访问控制矩阵为基础的访问控制表,每一个(文件系统内的)对象对应一个串列主体[1]。访问控制表由访问控制条目(access control entries,ACE)组成。访问控制表描述用户或系统进程对每个对象的访问控制权限。

访问控制表的主要缺点是不可以有效迅速地枚举一个对象的访问权限。因此,要确定一个对象的所有访问权限需要搜索整个访问控制表来找出相对应的访问权限

DAC: 能力票证的访问矩阵(rows)

  • 能力票证(叫能力表list也可以)指定特定用户的授权对象和操作
image-20230124100543896
image-20230124100543896

优点

  • 给定一个用户,确定其访问权限集是容易的,

缺点

  • 给定一个特定的资源,确定具有特定访问权限的用户列表比较困难

  • 票证可能被授权借出或发放给其他人,分散在系统各处- >安全问题

在能力票证里是看不到 用户A对B授权的. 这就是缺陷~

另一个缺陷就是访问控制表的优点

image-20230124113656981
image-20230124113656981

老师这里想讲的应该是~ A可以把自己的票据让别人使用? 如何避免~ 那用双验证不就好~ ip id + 票据?

很奇怪讲的..

解决方案

关键思想:使票证得到保护、保证和不可伪造

  • 解决方案1:操作系统代表用户持有所有票证,但在一个用户无法访问的内存区域中

  • 解决方案2:在capability中包含一个不可伪造的令牌(例如,一个大的随机密码,或一个加密消息验证码)

DAC: 自主访问控制还有一些别的图

访问控制表格

image-20230124101155738
image-20230124101155738

有向图

image-20230124101207686
image-20230124101207686

DAC: 模型?model

  • 对象, 主体, 规则

  • 保护状态:一组信息,在给定的时间点,即 指定每个主题相对于每个主题的访问权限对象。

  • 三个要求

    • 表示保护状态

    • 强制访问权限;

    • 允许受试者以特定方式改变保护状态。

如何表现保护状态

扩展访问控制矩阵~(可以看到扩展了对象~客体)

image-20230124102241436
image-20230124102241436
  • Processes:删除、停止(阻塞)和唤醒进程
  • Devices:读写设备、控制设备操作、阻塞/解除阻塞的能力
  • Memory locations/regions: 内存位置/区域:读写受保护的某些内存区域的能. 默认是禁止访问
  • Subjects: 授予或删除该主体对其他客体的权利的能力
image-20230124102504035
image-20230124102504035

这个是在访问控制矩阵A中 s1对f2的权限是read

自主访问函数控制的组成

image-20230124102907124
image-20230124102907124

了解下就好 扫了一眼, 直接跳过了老师

DAC: Model

  • 一个单独的访问控制模块与每个对象相连接

该模块通过以下步骤评估请求

  1. 主体S0向对象X发出一个类型为α的请求。
  2. 该请求导致系统(操作系统或某种类型的访问控制接口模块)为X向控制器生成一个形式为(S0, α, X)的消息。
  3. 控制器查询访问矩阵A,以确定α是否在A[S0, X]中。如果是,则允许访问;如果没有,则拒绝访问并发生保护冲突。违规行为应引起警告和适当的行动。

如何修改访问矩阵

  • 访问控制系统命令
image-20230202094545585
image-20230202094545585

全部解释一下~(这里说的全是权限 主体 对象(客体)之间的)

我这里理解的第二列是固定的, 就是必须具有这样的权限才可以做command.

R1: transfer 可拷贝的a或者不可拷贝的a(是阿尔法,我怕显示不出来). 权限是这个a存在, 实际操作就是把这个a存到其他位置.(transfer给了别人权限)

R2: grant是授权的意思, 就是如果你是拥有者你就可以把某个权限给别人~ (操作这里就是加了一个字段)

R3: 删除S对X的a权限.

R4: 把S对X的read权限 复制给w

R5: 创建对象X, 这个时候打开矩阵~

image-20230202100237787
image-20230202100237787

实际上就是加了一列, 主体对一个新对象的权限, 并且存储最初的是owner(创建者直接owner了)

R6: 删除, 必须owner, 在矩阵里就是删除了一列

R7: 创建对象, 不需要权限, 实际上就是在矩阵里添加了一行, 再创建一个同名的S, 然后自己对自己永远是control权限.

R8: 删除对象(主体), 必须是owner, 删除一行, 还要删除生成的自己的同名对象S. (所以需要owner吧)

RBAC 以角色为基础的访问控制

image-20230202101607040
image-20230202101607040
  • RBAC基于系统内用户可拥有的角色, 说明给定角色的用户可以访问哪些权限的规则.
  • 根据用户的职责,静态或动态地为用户分配不同的角色。
  • 用户和角色之间的关系是多对多的, 也是角色与资源或系统对象的关系。

RBAC: 访问矩阵

image-20230202102257675
image-20230202102257675

可以看到两种访问矩阵和上文DAC的是一样的

主体R1 会有一个同名的对象R1

image-20230202102513741
image-20230202102513741

合并模型, 角色层级模型, 约束, 基本模型.

image-20230202102721574
image-20230202102721574
  • 用户:能够访问此计算机系统的个人。每个人都有一个关联的用户ID。

  • 角色:控制该计算机系统的组织中工作职能的名称。通常,与每个角色相关联的是一个描述(如果授予此角色和承担此角色的任何用户的权限和责任)。

  • 权限(Permission):对访问一个或多个对象的特定模式的批准。等价的术语是访问权、特权和授权。(right, privilege, and authorization.)

  • 会话(Session):用户和分配给用户的角色集的激活子集之间的映射

这里有俩点, 一个是 是根据role开始写的, 左边是user assignment 右边是 permission assignment(PA)

Flexibility and Granularity 复杂性和粒度

如果没有灵活性和粒度,就会有更大的风险,即授予用户的资源访问权限可能超过所需的权限,这是因为可以允许的访问类型的控制有限

这里解释下用户和会话之间的一对多

  1. 会话是用来记录用户特性的(或者说偏好), 那么用户可以在多个会话中记录~
image-20230202110352367
image-20230202110352367

这里肯定不是一对多~ 多对多的~

一个用户可以分配多个角色, session可以分配给用户, 那么不就分配给了多个角色~

这是session对roles的一对多~

(这里上课就有人质疑了~老师没回应,发了个邮件还没回复)

RBAC1: Role Hierarchies 角色层级结构

  • 职责越大的工作职能获得资源的权力就越大
  • 角色层次结构利用继承的概念来允许一个角色隐式地包括与从属角色相关联的访问权限
image-20230202131655789
image-20230202131655789

RBAC2: Constraints约束

约束提供了一种使RBAC适应组织中的管理和安全策略细节的方法。

  • 互斥的角色
  • 基数
  • 必备角色

RBAC2: Constraints约束

互斥的角色:组织内职责和能力的分离

  • 在集合中,一个用户只能被分配给一个角色
  • 任何权限(访问权限)只能授予集合中的一个角色

目的:增加不同技能或不同工作职能的个人之间相互勾结的难度,以挫败安全政策

有了约束才符合现实~ 一个人可能偶尔身兼数职,但是不会出现一个人身兼各种职位的情况.甚至监管的职位和被监管的角色在一个用户身上

RBAC2: Constraints约束

基数: 设置可分配给给定角色的最大用户数量

  • 对分配给用户的角色数量的限制
  • 设置可授予特定权限的最大角色数

RBAC2: Constraints

  • •Prerequisite role 必备角色(前提角色? 不知道怎么翻译): 只有在用户已经被分配给其他指定角色的情况下,才能将其分配给特定角色

  • 例如:在一个层次结构中,一个被分配到项目领导角色的用户必须同时被分配到下级的生产工程师和质量工程师角色。

ABAC 基于属性的访问控制

  • ABAC基于用户属性、访问资源和当前环境条件进行访问控制。
  • 灵活性和表现力

三个关键要素

  • 属性
  • 架构模型
  • 政策

ABAC: 属性

它定义了主体、客体、环境条件和/或由权威机构预定义或预先分配的请求操作的特定方面。

  • 主体属性:明确主体的身份和特征(例如,主题的标识符、姓名、机构、职位……)
  • 对象属性:可以从对象的元数据中提取并用于制定访问控制决策(例如,标题、日期、文档作者)
  • 环境属性(在大多数访问控制策略中被忽略):描述发生信息访问的操作、技术甚至情景环境或上下文;与特定的主题或对象/资源(例如,当前的数据和时间,病毒/黑客活动,网络的安全级别)没有关联

ABAC: 逻辑架构

使用四个独立的源进行访问控制决策

  • 强大灵活

复杂性和性能的权衡

image-20230203002758050
image-20230203002758050

这里主体实际上可以换一种理解~ 比如 进程,用户,设备~

abac就是判断这种主体是否有访问资源的权限. 这个是所有的AC需要做的~

但是基于属性的会有一个独特的环境属性~

就是对访问的权限增加了环境条件

比如 具有某个权限的用户在某个时刻才可以访问某文件.

除了时间之外还有: 地点, (IP地址),设备(机器码)等

ABAC: 规则(政策)

S代表subject

o代表object

E代表environments,

公式1是预定义的

  • ATTR(s)、ATTR(o)、ATTR(e)分别是主体s、客体o、环境e的属性赋值关系:
image-20230203005520370
image-20230203005520370

可以看到是子集关系(可能相等)

  • 在最一般的形式中,决定主体s是否可以在特定环境e中访问对象o的策略规则是s、o和e属性的布尔函数
image-20230203010045917
image-20230203010045917
  • 给定s、o和e的所有属性赋值,如果函数的求值为true,则允许访问资源;否则拒绝访问

  • 策略规则库或策略存储可能由许多策略规则组成,涵盖一个安全域中的许多主题和对象。访问控制决策过程本质上相当于对策略存储中适用的策略规则进行评估。

一个例子(我觉得考也就这么考)

在线娱乐商店根据用户的年龄和电影内容评级执行以下访问控制策略:

image-20230203010541797
image-20230203010541797

-RBAC:三种角色(成人、青少年、儿童)、树权限(可以查看r级电影、可以查看pg -13级电影、可以查看g级电影)。用户到角色分配和权限到角色助手是手动管理任务。

-ABAC:没有明确定义角色!用户u是否可以访问电影m(在这里忽略的安全环境e中)将通过评估下面的策略规则来解决。

image-20230203010816716
image-20230203010816716

右边返回true 才可以访问

  • 大于17岁, 并且 电影级别(m) 是 R/pg13/g 其中一个 或者
  • 13-17之间, 电影是pg或者g 或者
  • 小于13, 电影是g

满足一个即可访问

Tutorial 2访问控制

题目1.

在自主访问控制(DAC)模型中,保护状态的另一种表示形式是有向图。处于保护状态的每个主体和每个客体都由一个节点表示(一个节点用于同时是主体和客体的实体)。从主体到客体的有向线表示访问权限,链接上的标签定义了访问权限。

问题1.

根据基本访问矩阵画有向图

image-20230203011235270
image-20230203011235270

答案1

image-20230203011456307
image-20230203011456307

问题2

画扩展矩阵有向图

image-20230203011545969
image-20230203011545969

答案2

image-20230203011608038
image-20230203011608038

老师给答案比较随意...建议还是加上权限

问题3

有向图表示和访问矩阵表示之间是否存在一一对应关系?

答案3

yes.

题目2

假设一个系统有N个工作岗位。岗位一,个人用户数量 该职位是Ui,该职位所需的权限数量是Pi

问题

a.在传统的自主访问控制(discretionary access control, DAC)方案中,用户和权限之间需要定义多少种关系? b.在基于角色的访问控制(role-based access control, RBAC)中,用户和权限之间需要定义多少种关系?

答案

image-20230203012047507
image-20230203012047507

主要就是说一个是乘积一个是相加.. 我只是没想到他直接写了一个题目里没给的变量..

题目3

VAX/VMS操作系统利用4种处理器访问方式,方便了进程间系统资源的保护和共享。访问模式决定了

  • 指令执行权限:处理器可以执行哪些指令
  • 内存访问权限:当前指令可以访问虚拟内存中的哪些位置

四种模式分别为:

  • 内核(核心):执行虚拟机操作系统的内核,包括内存管理、中断处理、I/O操作等

  • 执行程序:执行许多操作系统服务调用,包括文件和记录(磁盘和磁带)管理例程

  • 监管r:执行其他操作系统服务,例如响应用户命令

  • 用户(使用者):执行用户程序,以及编译器、编辑器、链接器和调试器等实用程序。在较低权限模式下执行的进程通常需要调用在较高权限模式下执行的过程。例如,用户程序需要操作系统服务。该调用通过使用change-mode (CHM)指令实现,该指令引起一个中断,将控制转移到处于新访问模式的例程。返回是通过执行REI (return from exception or interrupt)指令完成的。

问题3

a.许多操作系统有两种模式,内核模式和用户模式。提供四种模式而不是两种的优点和缺点是什么? b.你能举出多于四种模式的例子吗?

  1. 系统模式:允许操作系统执行所有指令和访问所有内存。
  2. 用户模式:限制了操作系统执行指令和访问内存的能力,以防止操作系统误操作。
  3. 受限制的模式:允许操作系统执行特定的指令,但是对内存的访问有限制。
  4. 安全模式:允许执行特定的安全性指令,并对内存和指令执行有严格的限制。
  5. 超级用户模式:允许执行更高级的系统操作,但是要求具有相应的权限。
  6. 内核模式:允许执行内核操作,但是对内存和指令执行有严格的限制。

回答

其实用户和内核模式是最常见的, windowslinux都有, 但是linux增加了超级用户模式. macOS超级用户模式就是"root",ios更为严格, 使用了一个"沙盒"所有程序只能在安全沙箱中运行.

根据这样去查可以得到~

优点: 安全. 易于开发, 提高系统性能分配, 更好的资源管理, 系统稳定性 .

我是对比mac和win写的答案.

缺点: 复杂性增加(这个主要说的是理解操作系统的复杂度, 实际上mac挺用户友好的), 内存需要增加, 调试困难(发布也困难,审核比较复杂)

题目4

UNIX对待文件目录的方式与对待文件的方式相同。也就是说,两者都由同一类型的数据结构定义,称为inode。与文件一样,目录也包含一个9位的保护字符串。如果不小心,这可能会造成访问控制问题。例如,考虑一个保护模式为644的文件(八进制),它位于保护模式为730的目录中。在这种情况下,文件是如何被泄露的?

答案

在类 UNIX 操作系统中,文件保护模式由一个 9 位字符串指定,每个位代表文件所有者、组所有者和所有其他人的特定权限

644:第一个数字(6)代表文件所有者的权限,第二个数字(4)代表组所有者的权限,第三个数字(4)代表所有其他人的权限

  • 6:文件所有者有读写权限(rw-)
  • 4:群主有读权限(r--)
  • 4:所有其他人都有读权限(r--)

730:第一个数字(7)代表文件所有者的权限,第二个数字(3)代表组所有者的权限,第三个数字(0)代表所有其他人的权限

  • 7:文件拥有者有读、写、执行权限(rwx)
  • 3:群主有读取和执行权限(rwx)
  • 0:所有其他人都没有权限(---)

题目是644进入730, 前两位64是比73权限低的, 所以只会被限制访问不会有安全问题. 最后一位是所有人的, 多了有读取权限.泄露就产生了.

- END -

分类:

后端

标签:

后端

作者介绍

Shinkai005
V1

公众号:深海笔记Shinkai