COM 的访问控制列表

Windows Server XP Service Pack 2 (SP 2) 和 Windows Server 2003 Service Pack 1 (SP 1) 引入了分布式组件对象模型 (DCOM) 的安全增强功能。 其中一项增强功能是在访问控制列表 (ACL) 中使用更具体的访问权限。 这些访问权限包括:

COM_RIGHTS_EXECUTE 1
COM_RIGHTS_EXECUTE_LOCAL 2
COM_RIGHTS_EXECUTE_REMOTE 4
COM_RIGHTS_ACTIVATE_LOCAL 8
COM_RIGHTS_ACTIVATE_REMOTE 16

为了提供向后兼容性,ACL 能以 Windows XP SP 2 和 Windows Server 2003 SP 1 以前使用的格式存在,这种格式仅使用 COM_RIGHTS_EXECUTE 访问权限,或以 Windows XP SP 2 和 Windows Server 2003 SP 1 中使用的新格式存在,即使用 COM_RIGHTS_EXECUTE 以及 COM_RIGHTS_EXECUTE_LOCAL、COM_RIGHTS_EXECUTE_REMOTE、COM_RIGHTS_ACTIVATE_LOCAL 和 COM_RIGHTS_ACTIVATE_REMOTE 的组合。

注意

COM_RIGHTS_EXECUTE 必须始终存在;缺少此权限会生成无效的安全描述符。

 

不得在单个 ACL 中混用旧格式和新格式;要么所有访问控制项 (ACE) 只授予 COM_RIGHTS_EXECUTE 访问权限,要么所有访问控制项都必须授予 COM_RIGHTS_EXECUTE 以及 COM_RIGHTS_EXECUTE_LOCAL、COM_RIGHTS_EXECUTE_REMOTE、COM_RIGHTS_ACTIVATE_LOCAL 和 COM_RIGHTS_ACTIVATE_REMOTE 的组合访问权限。

下面是一个格式错误的 ACL 示例:

Revision 1
Sbz1 0
Control 0x8004
    SE_DACL_PRESENT
    SE_SELF_RELATIVE
Owner: S-1-5-21-1597522630-148096252-1166023319-500 (no name mapped)
Group: S-1-5-21-1597522630-148096252-1166023319-500 (no name mapped)
DACL:
    AclRevision 2
    Sbz1 0
    AclSize 128
    AceCount 4
    Sbz2 0
    Ace[0]
        AceType 0: ACCESS_ALLOWED_ACE_TYPE
        AceFlags 0
        AceSize 36
        AccessMask 0x1
        S-1-5-21-1597522630-148096252-1166023319-500 (no name mapped)
    Ace[1]
        AceType 0: ACCESS_ALLOWED_ACE_TYPE
        AceFlags 0
        AceSize 20
        AccessMask 0xb
        S-1-5-18 (Well Known Group: NT AUTHORITY\SYSTEM)
    Ace[2]
        AceType 0: ACCESS_ALLOWED_ACE_TYPE
        AceFlags 0
        AceSize 20
        AccessMask 0x9
        S-1-5-11 (Well Known Group: NT AUTHORITY\Authenticated Users)
SACL:
    (null)

请注意,第一个访问控制项 (ACE) 仅授予 COM_RIGHTS_EXECUTE (0x1),第二个访问控制项授予 COM_RIGHTS_EXECUTE、COM_RIGHTS_EXECUTE_LOCAL 和 COM_RIGHTS_ACTIVATE_LOCAL (0xb),第三个访问控制项授予 COM_RIGHTS_EXECUTE 和 COM_RIGHTS_ACTIVATE_LOCAL (0x9)。

要纠正其中的问题,应将第一个 ACE 更改为授予 COM_RIGHTS_EXECUTE 与其他四个访问权限之一配合使用,或者将第二个和第三个 ACE 更改为仅授予 COM_RIGHTS_EXECUTE。

Windows XP Service Pack 2 和 Windows Server 2003 Service Pack 1 中的 DCOM 安全增强功能

COM 中的安全性