COM 安全默认值

可以为应用程序使用 COM 安全默认值,而不是指定自己的安全设置。 在这种情况下,COM 将为你初始化和管理安全性。 无需配置注册表或调用程序中的任何安全功能。

但是,如果已设置或修改某些注册表命名值,COM 使用的安全默认值将受到影响。 下面的列表描述了 COM 安全默认值,并说明了某些值如何受注册表设置的影响。

以下是 COM 使用的默认安全值:

  • 默认安全服务提供程序是由 COM 确定为与环境最兼容的提供程序。 COM 选择 Kerberos v5 协议或 NTLMSSP,Kerberos 协议是默认选择。 Schannel 提供的任何协议都未选择为默认值。
  • 系统通过用户名和密码标识调用方,并自动创建安全系统使用的标识令牌。
  • 如果 LegacyAuthenticationLevel 命名值存在并且其值已设置,则使用该值。 否则,身份验证级别在连接时设置(RPC_C_AUTHN_LEVEL_CONNECT)。 此级别意味着在客户端对服务器进行的第一次调用时,COM 会执行身份验证检查。 如果客户端通过检查,则不会进行进一步的身份验证。 还可以在 AppID 密钥下设置 AuthenticationLevel 值。
  • 如果 LegacyImpersonationLevel 命名值存在并且其值已设置,则使用该值。 否则,模拟级别设置为标识(RPC_C_IMP_LEVEL_IDENTIFY)。 客户端向服务器授予模拟权限。 标识级别意味着服务器可以获取客户端的标识。 服务器可以模拟客户端进行访问控制列表(ACL)检查,但无法以客户端身份访问系统对象。 有关详细信息,请参阅 模拟级别遮盖
  • 如果 AccessPermission 命名值 AppID 存在且已设置,则使用该值。 否则,COM 会检查 DefaultAccessPermission 条目。 如果存在,则使用该值。 如果此值不存在,COM 将构造一个 ACL,用于向服务器标识和本地系统授予权限。
  • 如果 SRPTrustLevelAppID 下的命名值存在且已设置,则使用该值。 否则,软件限制策略(SRP)信任级别设置为“不允许”(SAFER_LEVELID_DISALLOWED),该级别指示应用程序在受约束的环境中运行,并且不允许访问用户的任何安全敏感用户权限。

COM 中的 安全性