Windows Security之自主访问控制
来源:互联网 发布:base64解码 java代码 编辑:程序博客网 时间:2024/05/17 08:17
自主的访问控制
这使得资源的所有者能够决定谁可以访问该资源,以及他们可以对它做些什么。资源的所有者为单个用户或者一组用户授予各种访问权限。
访问控制,简单的说就是授权,一项操作能否被授权决定了这项操作是否能在安全的前提下成功的进行下去。这里根据操作中是否跟一个特定的对象打交道将其分为两大类:
- 保护对象
- 账户权限和特权
保护对象
安全引用监视器(SRM) :这是Windows执行体(\Windows\System32\Ntoskrnl.exe)中的一个组件,他负责:
- 定义访问令牌数据结构(来表示一个安全环境)
- 执行对象的安全访问检查
- 管理特权(用户权限)
- 生成所有结果的安全审计消息
Windows安全模型要求一个线程打开一个对象的时候,必须制定它期望在该对象上执行哪些类型的动作(R、W、RW、…)系统根据一个线程期望的访问要求来执行 访问检查 。其中的核心模块当然是交由SRM处理的。
SRM安全模型的本质是一个包含三项输入的等式:
- 一个线程的安全身份(令牌)
- 该线程想要获得的对一个对象的访问权
- 该对象的安全设置(安全描述符)
输出为“是”或“否”,以此来表明此安全模型是否授予了该线程所期望的访问权。如果已授权,那么对象管理器将返回一个该对象的句柄以供线程使用。
下面详细讲解这个对象安全等式的各个部分:
令牌(Tokens)
用来表示一个线程的安全身份的就是 令牌。
SRM使用一个称为令牌(或访问令牌)的对象来标识一个进程或线程的安全环境
Windows的安全机制用到了令牌中的两部分来决定哪些对象对象可以被访问,以及哪些安全操作可以被执行:
- 用户SID(User account SID)和组SID(Group SID)域
特权(Privilege)集
安全标识符(SID,security identifier) :Windows并非使用名称类标识系统中执行各种个动作的实体,相反,Windows使用SID。用户有SID,本地用户组、域中的用户组、本地计算机、域和域成员 也有SID。SID是一个可变长度的数值,包含三部分:一个SID结构版本号、一个48位标识符机构值,以及可变数量的32位子机构值或者相对标识符(RID, relative identifier)值。例如一些知名的SID:
特权后面会细说。
模仿(impersonation)是一项强大的、广为使用的安全特性。
安全描述符
令牌标识了一个用户的凭证,它只是对象安全等式的一部分,另一部分是与一个对象关联在一起的安全信息,这信息规定了谁可以在这个对象上执行哪些操作。这些信息所在的数据结构被称为安全描述符(security descriptor)。它包括以下属性:
- 版本号:创建此描述符的SRM安全模型的版本
- 标志: 一些可选的修饰符,定义了该描述符的行为或特征
- 所有者ID
- 组ID
- 自主访问控制列表(Discretionary Access Control List):规定了谁可以用什么方式访问该对象
- 系统访问控制列表(System Access Control List):规定了哪些用户的哪些操作应该被记录到安全审计日志中
访问控制列表(ACL, access-control lis)中包含一个头和零个或多个访问项(ACE, access-control entry)。每个ACE包含一个SID和一个访问掩码,DACL中的ACE分为允许、拒绝、允许的-对象、拒绝的-对象四种类型。
单独的ACE所授予(拒绝)的权限累积起来,就构成了一个ACL所授予的访问权限集合。在DACL中,若允许ACE与拒绝ACE冲突,则访问验证依赖于DACL中两个ACE的相对顺序——以在前面的为准。有两个特殊情况:
- 没有DACL:即null DCAL,所有人对该对象都有完整的访问权限
- DCAL为空:即0个ACE,则没有人对该对象有访问权限
一个访问验证的例子如下:
账户权限和特权
进程在运行中执行的许多操作时无法通过对象访问保护来授权控制的,因为这些操作并没有与一个特定的对象打交道。所有的账户权限和特权都可以在“本地安全策略”中找到完整的列表。
账户权限并不是由SRM强制实施的,也不存储在令牌中,而是由本笃安全权威中心(LSA)强制实施的,它从LSA数据库重获取已赋予该用户的账户权限。
与账户权限不同,特权存放在令牌中,不同的特权是由不同的组件来定义,并且也由这些组件来强制使用。
- Windows Security之自主访问控制
- 自主访问控制
- Spring Security教程之Spring Security实现访问控制
- 自主访问控制和强制访问控制
- windows之 访问控制模型
- 访问控制安全机制及相关模型(包括:强制访问控制和自主访问控制)
- 国内经常把DAC叫做“自主访问控制”.
- 《Spring Security 3》 精确的访问控制
- spring security 采用角色控制访问权限
- Spring Security 访问控制-实现 RESTful API
- 自主访问控制dac与强制访问控制mac的原理是什么区别在哪里
- centos 的权限管理--自主访问控制DAC和访问控制列表 ACL
- windows 访问控制模型
- windows访问控制笔记
- windows 访问控制模型(二)之安全描述符
- PX4飞控之自主起飞Takeoff控制逻辑
- PX4飞控之自主返航(RTL)控制逻辑
- struts2自主学习之配置国际化资源文件,传统异常处理方式, 拦截器,实现action 控制类,访问servletAPI,使用拦截器注解
- 如何用git将本地仓库中的项目上传到github
- _dl_runtime_resolve
- 数据库约束
- 原生JavaScript实现瀑布流布局
- C++每日一课(二)
- Windows Security之自主访问控制
- C++ builder 中的 XMLDocument 类详解(17) 更好地显示 xml 的测试结果
- CSDN日报20170621——《开发者,只有被裁,没有退休》
- B-Tree
- Mac 用户切换
- C语言基础-fgets/fputs/gets函数使用示例
- NYOJ:25-A Famous Music Composer
- 原系统改造的思维扩张之路---交易洪峰的应对
- ArcGIS水文分析实战教程(3)DEM数据准备