UAC兼容性编程(一) —— 为什么要UAC?

来源:互联网 发布:linux启动过程简述 编辑:程序博客网 时间:2024/05/06 21:09

为什么要UAC

应用程序开发者开发的应用程序一贯要求可执行用户权限和Windows特权,通常要求执行用户是管理员。因此,极少的用户使用最低用户权限和Windows特权来运行程序。很多企业,由于标准用户应用程序的兼容性问题,为了寻求平衡方便发布和简化安全性,而采取措施发布管理员用户的桌面应用。

 

 

下面列举了另外的具体理由,为什么在一个预装Windows Vista系统的计算机上很难运行一个标准用户应用程序:

1.      很多Windows应用程序要求登录的用户是管理员,而实际上并不需要管理员级别的权限。这些应用程序在运行之前执行各种管理员用户权限的检查,这包括:

a.      管理员权限令牌检查

b.     在系统保护区请求“全部权限”权限

c.      把数据写入保护区,例如 %ProgramFiles%%Windir%,和 HKEY_LOCAL_MACHINE/Software.

2.      很多应用程序没有根据最小特权的原则来设计,没有把用户和管理员的功能划分在两个隔离的进程。

3.      Windows2000WindowsXP创建的用户帐号默认为管理员;所以,Windows的关键组件,例如日期和时间组件(Date and Time)及电源管理(Power Management)面板都不能在标准用户下工作。

4.      Windows2000WindowsXP的管理员必须创建两个分开的用户帐号,一个用于管理员任务的帐号和一个用于日常任务的标准用户帐号。因此,为了执行管理员任务,用户必须先退出标准用户帐号,然后再以管理员用户帐号登录。

借助UAC,微软提供一种简化发布企业和个人标准用户应用的技术。

基于Windows安全架构,其在微软Windows NT 3.1操作系统的原始设计,UAC团队尝试了实现一个标准用户的模型,这个模型兼有灵活性和更高的安全性。在以前的Windows版本中,一个管理员的权限令牌在登录的过程中被创建。管理员的权限令牌包括大部分的Windows特权和管理安全标识符。这个权限令牌保证了一个管理员能够安装应用程序,配置操作系统,和进入计算上的所有资源。

UAC团队采取了一个完全不同的尝试在WindowsVista中设计权限令牌的创建过程。当管理员用户登录到Windows Vista计算机时,创建了两个权限令牌:一个被过滤的标准用户的权限令牌和一个完全的管理员的权限令牌。使用这个被过滤的标准用户的权限令牌代替了管理员的完全权限令牌启动桌面(Explorer.exe进程)。所有的子进程都继承了这个最初运行的桌面,这有助于限制Windows Vista的受攻击面。默认情况下,所有的用户,包括管理员,都以标准用户登录到Windows Vista

注释:有一个例外的优先声明:游客以比标准用户更少的权限和Windows特权登录到计算机。

当一个管理员用户尝试执行管理任务的时候,例如安装应用程序,UAC提示用户许可该行为。如果管理员用户许可该行为,该任务将以管理员的完全权限令牌被执行。这是默认的管理员权限提升行为,并且这也是在本地安全策略管理器嵌入单元(secpol.msc)和组策略(gpedit.msc)中可配置的。

注释:UAC可用的Windows Vista计算机上的管理员帐户也被称作管理员认可模式的管理员帐户。管理员认可模式在Windows Vista下标识管理员的默认的用户体验。

每次权限提升也是一次特别的过程,这避免其它进程不经过提示而使用权限令牌。所以,管理员用户拥有更强的粒度控制应用程序的安装,极大地打击了那些期待以完全权限令牌登录执行的恶意软件。

标准用户借助UAC基础设施也有机会在一个任务流中执行管理员任务的时候提升权限。当一个标准用户尝试执行一个管理员任务的时候,UAC提示用户为管理员帐户输入凭据。这是默认的标准用户权限提升行为,并且这也是在本地安全策略管理器嵌入单元(secpol.msc)和组策略(gpedit.msc)中可配置的。

Windows Vista更新

下面的更新反映了出现在Windows Vista功能方面所累积的核心变化。

UAC默认是启用的

因此,你可能要到一些不同于其它还未升级Windows Vista UAC组件的应用程序的兼容问题。如果一个应用程序要求一个管理员的权限令牌(这意味在运行一个应用程序时返回一个“访问拒绝”的错误),你可以通过使用上下文菜单项Run as  administrator以管理员身份运行程序(鼠标右键)。

所有后续的用户帐号都是标准用户帐号

标准用户和管理员帐号都能够获得UAC带来的安全性的提高的好处。在一个新装的系统上,创建的第一个帐号默认为管理员认可的管理员帐号。所有后续帐号都是标准用户帐号。

权限提升的提示默认情况下是显示在锁定的桌面中

许可和凭据提示在Windows Vista下默认情况是显示在锁定的桌面中的。

对于后台运行的应用程序的权限提升的提示在任务条中最小化了

后台应用程序会在任务条中自动提示用户,而不是自动切换到锁定的桌面进行权限提升。这个权限提升的提示会在任务条中最小化并闪烁以通知用户一个应用程序要求权限提升。一个后台的权限提升的情况会这样出现,当用户正在浏览一个Web页面并下载一个安装文件,而在文件下载的过程中用户又去查看邮件的时候。一旦后台的下载完成并开始安装,后台而不是前台的任务要求的权限提升就会被检测到。这种检测保护用户正在执行的其他任务(读取邮件)时候的屏幕焦点不被窃取。这样做可以让用户对权限提升有一个更好的用户体验。有关应用程序开发者怎样确保他们的应用程序在需要权限提升的时候不会最小化到任务条的相关内容可以在本文档的后面的章节中参阅。

权限提升在用户登录途中是堵塞的

在用户登录过程中启动并要求权限提升的应用程序现在是在用户登录途中被堵塞的。如果在用户登录途中不堵塞应用程序而提示权限提升,标准用户和管理员都必须在每次登录时响应用户权限控制窗口。当一个应用程序被堵塞,Windows Vista会在系统托盘中放置一个图标来通知用户。用户可以右击该图标,运行这个在用户登录过程中因要求权限提升而被堵塞的应用程序。用户也可以通过双击这个托盘图标来管理登录时启动的应用程序,禁止启动或从列表中移出该程序。

內嵌得管理员帐户在新安装的系统中默认是禁用的

内嵌的管理员帐户在Windows Vista中默认情况下是禁用的。如果Windows Vista在从WindowsXP升级中确认内嵌的管理员帐号是唯一的本地管理员帐号,Windows Vista将保持这个帐号可用,但是会替换为管理员认可模式的帐号(UAC启用)。另外,内嵌的管理员帐号默认情况下是不能登录到计算机的安全模式下的。更多信息请参阅后面的章节。

注释:内嵌的管理员帐户在安装过程中以Administrator用户名被创建。

无域名连接

当至少有一个可用的本地管理员帐号时,安全模式会不允许禁用的内嵌管理员帐户登录。而任何其他本地管理员帐户被允许登录。如果不慎将最后一个管理员帐户权限降低,禁用或者删除了,那么安全模式将允许内迁的管理员帐号登录进行灾难性恢复。

域名连接

在一台设置域名的计算机上,任何情况下,禁用的内嵌管理员帐户都不能登录到安全模式下。如果不存在管理员帐户,在Domain Admins组中的用户帐号能够登录到这台计算机,创建一个本地管理员帐户。

注释:如果域管理员帐户以前从来没有登录过,那么这台计算机必须以带网络的安全模式启动,因为Windows Vista不会缓存用户的凭据。

注释:一旦计算机从域中脱离,它会恢复到前面描述的无域名连接状态。

用户帐号控制和远程方案

当一个管理员远程登录到Windows Vista的时候,通过远程桌面实例化,用户默认以标准用户登录。远程管理在网络上受到限制。这种限制有利于避免恶意软件执行回送应用程序,如果用户正在用管理员的权限令牌运行程序。

本地用户帐号

当一个在WindowsVista计算机的本地安全管理器(SAM)的数据库中有管理员帐号的用户远程连接到一台Windows Vista计算机的时候,该用户在远程计算机上不可能有权限提升,并且不能执行管理员任务。如果用户想以SAM帐户管理工作站,用户必须交互式登录到要管理的计算机。

域用户帐号

当一个以域用户名远程登录到一台Windows Vista计算机,并且该用户是管理员组中的成员,这个域用户将以完全的管理员权限令牌在远程计算机上运行,并且UAC对于远程计算机上的该用户在这次会话中被禁用。

 

原创粉丝点击