ACM(访问控制模型),Security Identifiers(SID),Security Descriptors(安全描述符),ACL(访问控制列表),Access Tokens(访问令牌)

本文涉及的产品
访问控制,不限时长
简介: 对于《windows核心编程》中的只言片语无法驱散心中的疑惑。就让MSDN中的解释给我们一盏明灯吧。如果要很详细的介绍,还是到MSDN仔细的看吧,我只是大体用容易理解的语言描述一下。

对于《windows核心编程》中的只言片语无法驱散心中的疑惑。就让MSDN中的解释给我们一盏明灯吧。如果要很详细的介绍,还是到MSDN仔细的看吧,我只是大体用容易理解的语言描述一下。

 

windows的安全访问控制(ACM,access control mode)是由两部分组成的。一个是访问令牌(access tokens),另一个是安全描述符(security identifiers)。

 

访问令牌是欲进行访问的进程使用的表明自己身份和特权的信息数据。

安全描述符是欲被访问的安全对象的相关安全信息。如什么样的用户的什么访问请求可以被允许,什么样的用户或者组的什么访问要被拒绝。

  • Security Identifiers(SID)

经常听到SID,那么什么是SID呢,MSDN中说,SID是用来标识信任方的唯一的数值,其长度可变。而信任方就是用户,组,会话。所以基本上可以把SID理解为是一个用户名,一个组名,会话名。只是他们是经过安全认证,且不会重复,也就是安全可靠的。如果我们提到张三这个用户的SID,那么我们就可以理解为“张三(真)“。

  • Security Descriptors(安全描述符)

MSDN说安全描述符包含了描述一个安全对象的安全信息。其实这句话说的很对,只是是大概上的。让我们具体看看安全描述符到底描述了哪些东西?

 

安全描述符包括:

1.与安全描述符关联的安全对象的拥有者的SID和此拥有者所在主群的SID

2.一个DACL(discretionary access control list)

3.一个SACL(system access control list)

4.和安全描述符意思相符的控制位集合

 

第一点不用说了,第二,三点看下面的ACL有详细解释,DACL和SACL分别是ACL的一种类型。第四点暂且不详。 

  • ACL(访问控制列表,access control list)

 一提到像访问控制列表这样的东西,就会比较畏惧。其实一开始自己也很畏惧。因为以前一直对那些计算机理论术语很没感情。不过理解之后还是挺不错的。

ACL包括两种类型的访问控制列表,但不管是哪种列表它们的基本格式是一样的,那就是列表,列表入口(也叫访问控制入口,ACE,access control entry)。这两种安全控制列表分别是:

 

1.DACL(自由访问控制列表)

就像它的名字一样,DACL就是一个表明其它所有人的自由的(相应的)访问控制列表。这是什么意思呢?让我们具体看看DACL里面是什么东西吧。看下图你就比较明白了。

 

 DACL

 

相信看了这个图能明白一大半。一个DACL是一个列表,每个列表入口(ACE)都是一个对某个SID的访问控制说明,描述这个SID是被拒绝还是被允许,如果允许的话,对这个SID给予什么权限。当然这个图很形象,但实际中ACE里面不是一个一个的字符串,这个ACE是怎么样的呢?

ACE其实由四部分组成,只是上面的图画的太好了。

这四部分分别是:

 

1.可能访问本ACE某个用户SID(对应Andrew)

2.该用户的访问权限的掩码(Read,write,execute)

3.ACE的类型,总共有三种。Access-denied ACE,Access-allowed ACE,System-audit ACE。前两种是DACL类型,最后一种是SACL类型。

4.这个ACE是否可以被其他安全对象继承。

 

那么DACL是如何工作的?

就想上图显示的一样,线程访问安全对象,要出示自己的令牌(说的很人性化似地,其实是有操作系统查看线程access tokens数据结构),将access tokens的用户SID,所属组群SID以及相应的权限与DACL里面的每个ACE相应的数据项进行比较,直到比较到一个ACE明确允许这个线程的所需操作,或者明确拒绝这个线程的访问要求,再或者没有找到上面任何一种情况比较结束了,那么就默认的拒绝。这个链表的比较是顺序的,从头到尾。如果链表的顺序变了,或许原来访问请求的结果就样了。

例如将上图中ACE3和ACE1的顺序调换过来,Thread A的请求就会被允许。所以顺序很重要。所以如果要构建一个安全描述符的DACL的话,用API添加ACE的时候,程序员要谨慎处理。注意API函数添加ACE始终实在链表末尾添加的。

 

ACE继承没有完全研究,暂且搁浅!

 

2.SACL(系统访问控制列表)

 

SACL是什么呢?其实就是一个审计中心,这个列表里面列举着那些类型的访问请求需要被系统记录。一旦有用户访问一个安全对象,其请求的访问权限和SACL中的一个ACE符合,那么系统会记录这个用户的请求是被拒绝了还是被允许了。MSDN提及说,将来可能会实现安全对象会对未经授权的用户访问发出警告信息。

  • Access Tokens(访问令牌)

我们可以这样理解访问令牌,不过还是先把完整概念介绍一下。

访问令牌是包含12项,分别是:

  1. 当前用户的安全ID(稍后介绍),
  2. 当前用户所属组的安全ID。
  3. 当权会话安全ID。
  4. 用户所有的特权列表(包括用户本身,和其所属组)。
  5. 令牌拥有者安全ID。
  6. 用户所属主组群安全ID。
  7. 默认的自由访问控制列表(稍后介绍)。
  8. 源访问令牌
  9. 表明此令牌是源令牌还是模拟令牌
  10. 可选的链表,表明此令牌限制哪些SID
  11. 当前模拟令牌的级别
  12. 其他数据资料

看到这么多数据项,你该知道安全措施需要付出多大的代价了吧。

访问令牌描述了一个进程或线程的相关的安全信息。这些信息表明与这个进程或者线程关联的用户的标识符和特权。当用户登陆系统是,将用户密码和系统内数据库内的响应密码对比,如果验证通过,系统给用户产生一个访问令牌。以后这用户打开的所有线程都是继承与这个令牌。拿着这个令牌去访问安全对象。(Windows vista之后已经不一样了,如果是管理员登陆的话,管理员得到的访问令牌,和管理员启动的进行所拥有的令牌不一样,进程的令牌是被筛选的,或者说是降低权限的,进程要获得管理员的访问令牌(或者会所权限),就必须发出申请,系统显示一个对话框,是否允许这个程序以这种方式启动。)

 

每个进程至少有一个访问令牌,那就是主访问令牌,为什么是主呢?因为有些进程可能模拟另一个用户,并会或者另一个用户的令牌,而那个令牌就是模拟令牌。而系统在将进程的访问和安全对象进行审核是,使用的是主访问令牌。具体的暂且未知。

 

这样基本上初步了解了一下,windows 的ACM了。

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
相关文章
|
2月前
|
安全 网络安全 数据安全/隐私保护
访问控制列表(ACL)是网络安全中的一种重要机制,用于定义和管理对网络资源的访问权限
访问控制列表(ACL)是网络安全中的一种重要机制,用于定义和管理对网络资源的访问权限。它通过设置一系列规则,控制谁可以访问特定资源、在什么条件下访问以及可以执行哪些操作。ACL 可以应用于路由器、防火墙等设备,分为标准、扩展、基于时间和基于用户等多种类型,广泛用于企业网络和互联网中,以增强安全性和精细管理。
320 7
|
2月前
|
安全 网络安全 数据安全/隐私保护
访问控制列表(ACL)是网络安全管理的重要工具,用于定义和管理网络资源的访问权限。
访问控制列表(ACL)是网络安全管理的重要工具,用于定义和管理网络资源的访问权限。ACL 可应用于路由器、防火墙等设备,通过设定规则控制访问。其类型包括标准、扩展、基于时间和基于用户的ACL,广泛用于企业网络和互联网安全中,以增强安全性、实现精细管理和灵活调整。然而,ACL 也存在管理复杂和可能影响性能的局限性。未来,ACL 将趋向智能化和自动化,与其他安全技术结合,提供更全面的安全保障。
139 4
|
2月前
|
网络协议 安全 网络性能优化
了解访问控制列表 (ACL):概念、类型与应用
了解访问控制列表 (ACL):概念、类型与应用
120 2
|
3月前
|
网络协议 网络虚拟化 数据安全/隐私保护
访问控制列表(ACL)配置
访问控制列表(ACL)配置
访问控制列表(ACL)配置
|
2月前
|
存储 安全 OLAP
AnalyticDB安全与合规:数据保护与访问控制
【10月更文挑战第25天】在当今数据驱动的时代,数据的安全性和合规性成为了企业关注的重点。AnalyticDB(ADB)作为阿里云推出的一款高性能实时数据仓库服务,提供了丰富的安全特性来保护数据。作为一名长期使用AnalyticDB的数据工程师,我深知加强数据安全的重要性。本文将从我个人的角度出发,分享如何通过数据加密、访问控制和审计日志等手段加强AnalyticDB的安全性,确保数据的安全性和合规性。
72 2
|
3月前
|
安全 网络协议 数据安全/隐私保护
访问控制(ACL)原理详解
访问控制(ACL)原理详解
127 0
访问控制(ACL)原理详解
|
2月前
|
网络虚拟化 数据安全/隐私保护 数据中心
对比了思科和华为网络设备的基本配置、接口配置、VLAN配置、路由配置、访问控制列表配置及其他重要命令
本文对比了思科和华为网络设备的基本配置、接口配置、VLAN配置、路由配置、访问控制列表配置及其他重要命令,帮助网络工程师更好地理解和使用这两个品牌的产品。通过详细对比,展示了两者的相似之处和差异,强调了持续学习的重要性。
70 2
|
3月前
|
网络协议 安全 网络安全
Cisco-命名ACL访问控制列表
Cisco-命名ACL访问控制列表
|
3月前
|
安全 网络协议 网络安全
Cisco-扩展ACL访问控制列表
Cisco-扩展ACL访问控制列表
|
3月前
|
安全 网络安全 数据安全/隐私保护
Cisco-标准ACL访问控制列表
Cisco-标准ACL访问控制列表