授权和访问控制组件

下图说明了授权Windows访问控制过程。 在此图中,主题 (由用户启动) 访问对象(如共享文件夹)的过程。 将用户的访问令牌中的信息与对象的安全描述 (AES) 中的访问控制项进行比较,并做出访问决策。 安全主体的 SID 用于用户的访问令牌和对象的安全描述符中的 AES。

授权和访问控制过程

安全主体与以下组件和技术密切相关:

当线程尝试访问安全对象时,系统将授予或拒绝访问。 如果该对象没有 DACL (自由 访问控制) , 则系统会授予访问权限;否则, 系统会在对象的 DACL 中查找 (AES) 应用于线程的访问控制条目。 对象的 DACL 中的每个 ACE 都指定受信者(可以是用户帐户、组帐户或登录会话)允许或拒绝 的访问权限

DACL

系统将每个 ACE 中的受信者与线程的访问令牌 中标识的受 信者进行比较。 访问令牌包含 标识用户 (组) 标识用户和组帐户的 ID 的安全标识符。 令牌还包含标识 当前登录 会话的登录 SID。 在访问检查期间,系统会忽略未启用的组 SID。 有关已启用、禁用和仅拒绝 SID 的信息,请参阅访问令牌 中的 SID 属性

通常,系统使用 请求 访问的线程的主访问令牌。 但是,如果线程正在模拟其他用户,则系统将使用线程的 模拟令牌

系统会按顺序检查每个 ACE,直到发生以下事件之一:

  • 拒绝访问的 ACE 显式拒绝对线程的访问令牌中列出的受信者之一的任何请求访问权限。
  • 线程访问令牌中列出的受信者允许访问的一个或多个 AES 显式授予所有请求的访问权限。
  • 已检查所有 AES,并且仍有至少一个请求的访问权限未显式允许,在这种情况下,将隐式拒绝访问。

下图显示了对象的 DACL 如何允许访问一个线程,同时拒绝访问另一个线程。

对于线程 A,系统读取 ACE 1 并立即拒绝访问,因为拒绝访问的 ACE 适用于线程的访问令牌中的用户。 在这种情况下,系统不会检查 AES 2 和 3。 对于线程 B,ACE 1 不适用,因此系统将继续访问 ACE 2(允许写入访问)和 ACE 3(允许读取和执行访问权限)。

由于系统在显式授予或拒绝请求的访问权限时停止检查 AES,因此 DACL 中的 AES 顺序非常重要。 请注意,如果示例中的 ACE 顺序不同,则系统可能授予了对线程 A 的访问权限。对于系统对象,操作系统在 DACL 中定义 AES 的首选顺序

线程与安全对象之间的交互

当线程尝试使用安全对象 ,系统会先执行访问检查,然后再允许线程继续。 在访问检查中,系统将线程的访问令牌中的安全信息与对象的安全描述 符 中的安全信息 进行比较

  • 访问令牌包含 标识与 (关联的) ID 的安全标识符。
  • 安全描述符标识对象的所有者,并包含 DACL (的) 。 DACL 包含 AES (访问控制) ,其中每个条目都指定允许或拒绝特定用户或组的访问权限。

系统检查对象的 DACL,从线程的访问令牌中查找应用于用户和组 SID 的 AES。 系统会检查每个 ACE,直到授予或拒绝访问,或者直到没有要检查的 ACE。 可以想象 ,ACL (访问控制) 可能有几个适用于令牌的 SID 的 AES。 如果发生这种情况,则每个 ACE 授予的访问权限都会累积。 例如,如果一个 ACE 授予对组的读取访问权限,而另一个 ACE 授予对作为该组成员的用户的写入访问权限,则用户可以同时拥有对 对象的读取和写入访问权限。

下图显示了这些安全信息块之间的关系:

【Windows 访问控制】九、AccessCheck 的工作原理的更多相关文章

  1. Windows下ARP协议的工作原理简介

       ARP协议(Address Resolve Protocol,地址解析协议)工作在TCP/IP协议的第二层-数据链路层,用于将IP地址转换为网络接口的硬件地址(媒体访问控制地址,即MAC地址). ...

  2. Expo大作战(九)--expo的工作原理,以及版本发行说明

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,将全部来与官网 我猜去全部机翻+个人 ...

  3. 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)

    RAC 工作原理和相关组件(三) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...

  4. 【转】【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)

    原文地址:http://www.cnblogs.com/baiboy/p/orc3.html 阅读目录 目录 RAC 工作原理和相关组件 ClusterWare 架构 RAC 软件结构 集群注册(OC ...

  5. Windows 窗体—— 键盘输入工作原理

    方法 注释 PreFilterMessage 此方法在应用程序级截获排队的(也称为已发送的)Windows 消息. PreProcessMessage 此方法在 Windows 消息处理前在窗体和控件 ...

  6. JSP JSP工作原理 JSP语法 JSP声明 JSP注释 JSP指令 jsp九大隐式/内置对象

    1 什么是JSP   1)为什么说,Servlet是一个动态Web开发技术呢?     Servlet是基于服务端的一种动态交互技术,     HttpServletRequest表示客户端到服务端的 ...

  7. Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程【转】

    本文转载自:http://blog.csdn.net/mu0206mu/article/details/7465603       Android系统Recovery工作原理之使用update.zip ...

  8. Windows工作原理

    Windows工作原理中心思想 Windows工作原理的中心思想就是“动态链接”概念.Windows自身带有一大套函数,应用程序就是通过调用这些函数来实现它的用户界面和在屏幕上显示文本与图形的.这些函 ...

  9. How Javascript works (Javascript工作原理) (九) 网页消息推送通知机制

    个人总结: 1.介绍了网页消息推送通知机制 全文地址:https://github.com/Troland/how-javascript-works 这是 JavaScript 工作原理的第九章. 现 ...

随机推荐

  1. golang中float类型转换成int类型

    package main import ( "fmt" "strconv" ) func f2i(f float64) int { i, _ := strcon ...

  2. Linux身份鉴别机制原理

    传统的UNIX身份鉴别机制原理 传统的UNIX身份鉴别即口令认证方式,它主要通过识别用户的用户名或者UID号获取在/etc/shadow中存放的对应用户密码密文等信息,然后获取用户输入密码并采用cry ...

  3. python浮点数计算--5

    #!/usr/bin/python #coding=utf-8 i=1.0 j=3 print(i*j) print(i+j) print(i**j) 备注:无论是哪种运算,只要有操作数是浮点数,py ...

  4. Java反射机制及原理

    一.概念 java程序运行时动态的创建类并调用类的方法和属性   二.原理简介 Class<?> clz = Class.forName("java.util.ArrayList ...

  5. 检测当前编译器支持c++版本

    if (__cplusplus > 201703L) std::cout << "C++2a\n"; else if (__cplusplus == 201703 ...

  6. 使用Xamarin开发移动应用示例——数独游戏(六)使用数据库

    项目代码可以从Github下载:https://github.com/zhenl/ZL.Shudu .代码随项目进度更新. 现在我们希望为应用增加更多的功能,比如记录每个完成的游戏,可以让用户自己添加 ...

  7. 如何美化 Matplotlib 3D坐标系

    前言 ~mpl_toolkits.mplot3d 生成的3D坐标系背景色是灰色的,刻度线也向内延伸了,如果搭配上其他白色背景的 2D 图,看起来很奇怪,比如下面这张图: 网上有一些办法可以将3D坐标区 ...

  8. qiankun 2.x 运行时沙箱 源码分析

    简介 从源码层面详细讲解了 qiankun 框架中的 JS 沙箱 和 样式沙箱的实现原理. 序言 沙箱 这个词想必大家应该不陌生,即使陌生,读完这篇文章也就不那么陌生了 沙箱 (Sandboxie) ...

  9. 分布式事务框架-Litx补偿事务框架源码解析

    前言 之前某段时间在研究分布式事务过程中,对实现原理比较好奇,于是去Gitee上找了几个人气比较高的框架进行学习,其中印象深刻的有Litx,因为Litx源码不多,且都是基于Spring和Dubbo底层 ...

  10. 创建SSH密钥时使用了自定义文件名遇到的问题

    问题描述 如图,我自定义了密钥文件名字. 所以在测试连接时导致了: 问题解决 连接的时候指定自己重命名的私钥文件名就好了. ssh -T -i git_test git@github.com SSH命 ...