基于COM 技术的安全性研究

2008-04-09 04:02:46来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

 摘 要: 本文探讨了COM 的安全模型,包括激活控制、访问授权、身份验证、组件运行身份,并给出了在实际例子中各种安全措施的使用方法。

  关键词: 组件;COM ;安全模型;角色

  1 前言

  COM 是微软公司的分布式互联网络应用结(Windows DNA, Microsoft Distributed interNet Application Architecture)的技术核心。它提供的安全机制使我们可以快速、高效地构筑安全的企业级多层分布式应用系统。程序员无需编写大量的代码就可以将这个新的安全机制使用在分布式应用系统中。

  COM 的安全模型仍然沿用了MTS的基于角色的安全模型,根据用户的角色访问应用的有关功能模块。这种安全模型需要开发人员与管理人员协同完成,在开发阶段,开发人员负责定义各种角色,并且在实现组件功能时,只允许指定角色的用户才可以执行这些功能;在配置阶段,管理员负责为所有的角色指定有关的用户账号。COM 扩充了MTS安全模型,它允许开发人员和管理员指定到方法一级的安全控制,在MTS安全模型中,我们只能在MTS包一级指定安全角色。通过COM 对象环境信息,COM 的安全模型更为细致,因此,基于COM 技术的安全平台对于大部分企业级应用系统不失为一种优先考虑的方案。

  2 COM 的安全模型

  COM 所定义的安全模型是由一组相关的接口所定义的。由于COM 的安全模型只是一组相关的接口,所以当其执行在不同的操作系统时,操作系统就会实现这一组安全接口,并提供COM 在这个操作系统中的安全控制。COM 安全模型主要包括以下一些内容:

  激活控制:是指控制哪些用户可以激活应用程序服务器。当用户试着在远程机器上激活应用程序服务器时,COM 的安全机制会检查该客户端是否有权限激活远程服务器的安全控制。

  存取控制:是指在服务器上由适当的用户激活后,控制哪些用户可以存取应用服务器所提供的服务。

  验证控制:主要是控制客户端和服务器端之间传递数据的安全性。严格的验证控制可以让数据在传输时先经过加密。以避免无权限用户的存取。程序员必须决定使用哪一层次的数据安全性,当然设置的安全层次越高,数据越安全,但是程序执行的效率就会受到影响。因此,一般只需要在客户端一开始连接时验证客户端即可。

  鉴定控制:是指一个COM 套件组件中的组件在需要存取其他的系统资源时,使用什么系统账号来登陆到这些资源服务器。只有使用一个合法的鉴定控制身份来登陆这些资源服务器,才能取得它需要的资源。鉴定控制能够控制应用程序服务器是使用特定的用户权限执行的,或是使用目前在客户端登陆的用户的权限执行的。

  3 COM 的身份验证

  COM 身份验证是建立在SSP之上,使用RPC定义的上级验证实现的。客户程序和服务器组件都可以指定各自的验证级别,当客户机要连接COM 服务器时,系统会检查服务器和客户机的验证设置,通过使用COM 安全罩谈判算法选择较严格的验证级别。COM 支持的验证级别如表1所示:

验证级别 说 明 Default 使用通常的COM 安全罩谈判算法自动确定验证级别 None 不验证调用者的身份 Connect 当客户端连结应用程序时验证用户的实体身份 Call 向应用程序中的每个对象发出调用时进行身份验证 Packet 对调用者的每个数据包都进行身份验证 Packet Integrity 对调用者的每个数据包进行散列的校验和 Packet Privacy 在传输过程中对数据报进行加密

  我们在使用过程中,不能一味地使用高级别的验证,因为验证级别越高,系统性能代价也越高。因此,应根据组件对安全性的要求,合理选用相应验证级别。涉及关键业务的组件使用高级别验证,普通组件则使用低级别验证,做到安全和性能兼顾和统一。

  4 COM 的访问授权管理

  COM 的安全机制仍然沿用了MTS的基于角色的安全模型,根据用户的角色访问应用的有关功能模块。一个角色可以看成有相同资源访问权限的用户组,每个用户有它自己的角色,同时每个应用系统有各自的角色集合。管理员可使用配置的手段把角色添加到服务应用中,并用相应的账户来装配角色,以实现不同的角色访问不同权限的资源。COM 组件的角色安全机制可以使用两种方式建立:

  (1)宣告式安全机制:在此模式下,程序员不需要为组件的存取撰写任何的程序代码。可以通过MTS/COM 系统的设置来实现。方便灵活,而又有弹性,管理人员可以根据需要随时改变安全机制。

  (2)程序代码控制安全机制:要获得更为详细的安全措施,可在方法的代码中调用IsecurityCallContex、10bject-contet、IsecurityProperyt和接口的方法进行角色和安全检查,这是一种比较精确的安全控制。

  下面通过一个例子来说明和验证角色的两种用法。第一步,在本机上产生一个hello组件, 然后将这个hello组件注册到服务器xuji1上。第二步,产生一个客户端在本机上进行调用hello 组件。发现客户端调用成功。第三步,在com 的应用程序hello中的新建角色administrator, 然后在这个角色中添加administrator 用户,同时再新建一个角色zanghj,并将用户zhangjian添加到这个角色中。第四步,在hello 应用程序中的属性中选择安全设置,并选择"强制为该应用程序进行访问检查",并选择在进程级和组件级运行访问检查。调用的身份验证级选择"包", 模拟级别选择"模仿"。第五步,在hello 应用程序下选择组件hello,右键选择属性,选择安全设置,选择zanghj.第六步,(以administrator 登录)现在调用客户端,发现不能调用错误码为权限访问错误。第七步,现在注销administrator,以zhangjian 登录,然后调用组件,发现调用正常。

  5 COM 组件身份的扮演与掩盖

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:游戏外挂设计技术探讨

下一篇:网络游戏通讯模型初探