级别: 中级 Arun Chhatpar (arunchhatpar@gmail.com), 软件架构师, OmniViz
2006 年 11 月 23 日 管理网格涉及很多元素,从部署网格使用的网络和硬件到安全、作业管理以及在网格执行过程中所生成的统计信息,这可以让我们更有效地对作业进行管理。在这个 4 部分的 “管理网格” 系列文章中,我们将来了解一下网格管理过程的一些关键因素,例如确定硬件和网络基础,以及如何使用这些信息作为调度、预测和扩展工具。在本系列的第 2 部分中,我们将介绍网格的安全性及其在网格管理中的重要性。
简介
在本文(即管理网格系列文章的第 2 部分)中,我们将着重介绍网格安全性方面的内容。网格中的安全性可以涉及很多层次。需要将网格安全性作为一个整体进行考虑,同时还要考虑网格的使用、可访问能力、存储数据的安全性以及构成网格的组件的安全性。
在专用的网格环境中,可以对这些元素完全进行控制,但是在非专用或分布式网格中,可能需要更多的创造性思维来考虑如何增强不同元素的安全性。
网格中的安全性问题
网格的安全性可能对系统的很多方面都会造成影响,从允许哪些人访问网格到网格中的哪些机器可以执行不同的操作。
尽管很多问题在构建和部署网格时都非常关键,但是还有一些长期的管理问题需要考虑。安全性是一个实时问题,需要持续不断地进行审视,因为不但环境会发发生变化,而且随着网格开发的进展,需要和需求也可能会发生变化。
其中一些重要的问题(在网格设置和长期管理中)包括:
- 谁具有使用网格功能的访问权限?
- 谁具有作为网格中一个节点进行操作的访问权限?
- 谁具有对网格中存储的数据或网格提供的数据的访问权限?
- 数据应该怎样进行存储和传输?
这些基本的问题会引起人们对网格环境的许多考虑。例如,关于对网格的访问,您需要考虑谁可以使用网格(包括提交任务和查看响应的能力)以及哪些人可以在网格中进行操作(即接收任务并返回结果)。
访问安全性
个人和计算机访问并使用网格的能力 —— 不管是检索结果还是提交任务 —— 都应该是在增强网格安全性时所要考虑的第一级安全性。通过使用登录和授权来限制个人的访问权限是增强网格基础设施的最简单方法。根据网格类型的不同,还可能需要强制对网格中的各个组件应用安全性并对不同的网格组件甚至网格作业提供不同级别的访问权限。
尽管这些都是网格软件部署核心的实现细节,但有一个实时的管理元素会要求您监视并更新安全性,从而允许个人来访问网格,或者可能会需要修改更复杂的解决方案的配置,从而根据认证情况提供对特定资源和网格节点类型的访问能力。例如,网格中的访问安全性可以划分为以下的类型:
- 基本的提交安全性
- 此处,存在一个简单的登录/密码组合,用户需要使用它们来提交任务并接收响应信息。这些信息的实时管理应该需要确保那些需要访问的用户都可以获得必需的细节,并且这些信息都会周期性地更新(例如,周期性地修改密码并在不再需要的时候删除登录能力)。
- 分发/分配安全性
- 有些网格支持根据认证信息来决定网格使用/性能。在这种情况中,会根据给定安全性令牌就可以使用的节点数目、CPU 周期或存储空间来应用安全性策略。这种信息的管理要复杂得多,因为需要对目前的使用情况进行监视并调节所配置的数量来适合用户的需求。大部分系统都基于配额准则(用户可以在最大的限度之内进行无限的访问),不过您可能还希望提供一些无限的资源,但具有不同的执行率或使用率。例如,高优先级的用户可以使用计算网格所有可用的节点,而低优先级的用户只会分配到网格处理能力的一个小子集。在这两种情况中作业的大小可能是相同的,但是高优先级的用户将分配到更多的网格节点,因此它们的作业也完成得更快。
- 节点组安全性
- 网格级安全性最复杂的形式是根据认证信息来提供对特定节点组的访问能力。这种系统不是只提供节点个数或 CPU/资源使用率的配额,而是提供更细致的控制并可以为特定的登录分配特定的节点。例如,假设有一个异构网格,就可能需要提供一个特定的登录来访问特定的硬件组,如提供 AltiVec 单元(它提供了增强的浮点计算性能)的 Power PC®/POWER5 CPU;而提供给其他用户以相同的优先级来访问网格中所有节点的通用访问权限。
作为网格的管理者,您在管理这些信息中的角色包括:
- 创建新用户、组或其他安全证书。
- 确保密码都是安全的(使用老化或周期性地重置)。
- 删除未使用或过期的登录。
- 管理并更新使用组、配额和其他限制或分组机制。
对网格中任务的监视和调度的管理会在本系列教程的下一部分中介绍。
数据安全性
应该保证网格中信息的安全性,包括所提交的信息、所生成和返回的信息、网格所存储的数据以及任何外围数据 —— 例如在执行过程中使用的支持数据。在每个层次上,数据都应该受到访问保护,使用类似的授权方法作为一个整体对网格进行访问。对于支持数据来说,应该确保数据库、安全存储以及其他外部数据源也都是安全的,并且它们的数据都不会暴露在没有经过适当授权的网格之外。
在非专用或分布式网格环境中,对于数据的访问显然应该受到控制,但是您对于这种访问却没有多少直接控制的能力。相反,应该着重关注那些在公共通道上传输的信息的安全性。允许不采用任何形式的加密就交换数据很容易使在公共网络上传输的安全性信息被读取。同样,数据存储也应该采用一种可以确保数据不会由未经授权的人员或程序读取的方法来处理。
最后,使用数据安全性 —— 特别是在没有对网格总体上的访问安全性的情况下 —— 应该关注数据是如何引入到网格中的。保证信息提交的安全性固然重要,但是验证正在提交的数据的质量也非常必要。数据存在问题或被伪造,又或者在网格环境中存在 Trojan 木马或病毒,这样造成的恶劣影响也不容忽视。
使用公钥/私钥对所存储数据进行加密、使用操作系统的安全性以及使用认证来防止引入恶意的数据,这些都必须在网格解决方案中实现,但是它们都必须由网格管理器进行监视以确保数据随时都是安全的。加密密钥应该经常地进行更新,解决方案应该经常地进行测试并验证以确保数据都是正确的,尤其是在分布式网格环境中更需要这样做。
网格组件授权
网格中的各个组件可能还需要进行授权和认证才能操作。网格中各个组件的授权可以确保构成网格的节点都是所需要的。
如果允许任何计算机都可以成为网格的成员,那就需要记住它可以发送敏感信息。通过允许自由访问来成为网格的一员,它会自动被授权可以接收 —— 并返回 —— 信息,而不会采用任何形式的识别或授权控制,这可能会成为恶意数据或恶毒攻击的根源。
大部分网格系统都需要某种形式的对网格管理器的注册或者显式地包含在一个有效节点的列表中,这样它们就可以由网格管理节点联系到。作为网格管理的一部分,保证此文件或连接/认证以及验证过程都是最新的并监视这些连接到网格并充当网格资源的网格节点至关重要。
使用隔离作为一种安全机制
在第 1 部分中,介绍了使用防火墙作为一种简单的网络层安全机制。相同的基本原理也可以用来隔离网格,并通过隐匿来提供安全性。如果网格、网格的节点以及其他组件都不是公开可用的,那么就很难攻入网格、窃取数据或作为未经批准的网格节点进行操作了。
因此,隔离实际上只在两种情况中是可能的:
- 专用网格,其中网格完全是由其自己的硬件、网络环境构成的并只被自己的网格任务使用。
图 1. 专用网格
- 非专用网格或分布式网格,其中采用了虚拟化(这会提供必要的隔离)并使用 VPN 或其他形式的传输层安全性在公共网络和网格节点之间提供隔离。
图 2. 具有公共网络的分布式网格
前者的管理属于网络安全性和组织的范畴,已经在第 1 部分中详细进行了介绍。第二种情况的管理需要紧密注意数据在公共网络上的安全性以及对为网格提供这种能力的虚拟环境的管理。
传输安全性
在非专用或分布式网格中,您对于在网格中交换数据使用的通信通道的控制能力很小 —— 通常没有。如果正在交换的数据没有安全地进行交换,那么在这种情况下进行认证的效果就不大了。
通过传输层安全性(TLS) —— 例如,通过使用加密网络通道或在分布式网格之上 —— 使用虚拟专用网络(VPN)在网格管理元素和 Internet 上的节点之间提供安全通道,就可以确保网格组件中所传输的所有数据都是安全的。
另外一种方法是使用消息层安全性(MLS),它对所交换的消息和数据进行加密,但是并不对通信通道进行加密。MLS 可能会稍慢,但是在分布式网格中效率更高,在分布式网格中很容易对在公共网络上分发的消息内容进行加密,而不需要直接访问网格管理和分发系统,这可以消除 TLS 系统的使用。
不管使用哪种方法,作为实时的网格管理的一部分,都应该确保加密机制是安全的,这可能需要经常地修改密钥和密码,采用一个解决方案来让这些信息可以有效地进行传输。
使用 TLS 和 MLS 解决方案,利用公钥/私钥系统可以简化信息的交换以及以后使用新的密钥来更新信息的过程。
不同网格类型中的安全性管理
使用我们介绍的这些信息,就可以根据所管理的不同类型的网格来应用不同类型的安全性以及相关的管理准则。
显然,所使用和管理的确切模型依赖于所采用的网格、部署、实现以及正在管理的任务的安全性需求。例如,在处理安全性很低的数据时,可能不需要或不希望在分布式网格中支持 TLS。反之,对于安全性很高的数据来说,可能会希望在专用网格中应用 TLS。
下面是一些典型的安全性环境以及它们对专用、非专用和分布式网格环境的相关管理需求。
专用网格中的安全性
专用网格中的安全性可能是最容易实现和管理的。通常,在专用网格中,可以使用隔离和防火墙方法来简化网格的安全性,通过网格管理节点或其他公开组件为网格节点和组件提供有限的访问。这会产生相当简单的布局,如图 3 所示。
图 3. 专用网格中的安全性
关键是对网格及其组件的使用和访问采用某种访问/认证安全性机制。根据网格中正在执行的任务或信息的安全性要求,还可能希望添加:
通常,受控环境还会降低安全性管理的需求。
非专用网格中的安全性
在非专用网格中,从公共的外部访问的角度来看,安全性问题得到了简化,因为私有网络应该受到防火墙的保护。不过您需要对下述问题多加注意,即确保网格节点和组件对于内部访问来说都是安全的、不会受到内部的攻击也不会接收未经授权的连接(请参看图 4 所示)。
图 4. 非专用网格中的安全性
节点和网格管理节点之间的认证可以确保只有经过授权可以在网格中充当节点使用的计算机和资源才会获得这种功能。传输安全性在这种情况中通常并不需要,因为可能还在使用内部组件和节点来提供网格的功能。
这种网格的管理负荷仍然相当低,并限于在广域计算环境中早已应用的相同类型的访问和认证安全性。
分布式网格中的安全性
在分布式网格中,控制网格安全性环境变得更加困难。这里有更多的变量以及信息访问和拦截的潜在点。
数据安全性是一个更大的问题,如果同时采用了数据和数据传输的加密,数据安全性就会需要更加详细的管理(请参看图 5)。另外,网格组件的认证以及所支持的可以使用和交换信息的人员的认证都更加重要。需要更加紧密地控制网格节点的认证和网格用户的认证。
图 5. 分布式网格中的安全性
结束语
至此我们已经看到了网格管理中安全性的主要影响。网格安全性有很多方面,不过它们在很大程度上都是与实现相关的(即,它们必须提前启用并构建到您的网格应用程序中),它们在管理网格时都会增加额外的负荷。即使是非常简单的系统(例如为了使用网格所进行的认证)也会需要监视和实时的管理 —— 从最简单的管理密码操作权限到重组和更新认证组和系统。
另外,不同安全性需求的组合可以按照不同的方法应用到不同类型的网格中。通常,专用网格最简单,因为专用网格作为一个整体可以与网络的其他部分以及使用网格的环境隔离开来。这通常会限制认证和授权的效果。分布式网格则是另外一个极端,它需要最多的管理和安全性设备,因为整个系统都是开放的并对外公开。
在“管理网格”系列文章的第 3 部分中,将详细介绍网格所生成的日志和信息以及如何使用这些信息。在安全性层面这非常有用 —— 例如,在为访问提供认证系统支持时 —— 但它更适合用于对网格中的作业和任务的管理。
参考资料 学习
讨论
关于作者  | |  | Arun Chhatpar 在 Java 编程和客户机/服务器架构设计方面已经有 9 年的从业经验,他是 Sun 认证的企业软件架构师。他一直是 NBCi 的首席设计师和开发人员,目前还是 OmniViz 的一名软件架构师和首席软件工程师。 |
对本文的评价
|