简介
“安全”一般被认为是复杂和令人费解的规程。因为认识和归纳被感知的模式是人类教育自然应起到的作用,所以大多数人认为他们对于“模式”这一术语有着直觉的理解。对于此练习而言,我们将以下内容作为工作定义:
安全是“通过建立和维持用于保护系统的措施而实现的系统状况。” [1]
“模式是对非任意的特定环境下反复发生的具体形式的抽象。”[2]
所以,如果尝试将“安全” 和“模式”两个术语结合起来,可能会引起某种抵触。已经作了各种尝试来生成安全模式(请参阅附录 A)。本文已尝试收集和整理一些资料,这些资料是数年来由多位安全从业人员从各种客户合约中收集而来的,由此形成了 IBM
安全模式的工作原型。 本文环境中“安全模式”的工作定义如下:
对通过建立和维持用于保护系统的反复执行的措施而实现的状况的抽象。
在软件开发团体中,目前正在努力建立[3]模式开发的方法。
任何科学或工程规程的基础是用于表达其概念的通用词汇表以及用于叙述这些概念之间关系的语言。对于软件团体中的模式,其目标是创建一系列文献来帮助软件开发人员解决所有软件开发的整个过程中遇到的反复发生的问题。模式有助于创建用于交流关于这些问题及其解决方案的见解和经验的共享语言。正式整理这些解决方案及其关系使我们能够成功捕获系列知识,这一系列知识定义了我们对满足用户需求的良好体系结构的理解。为传达体系结构的结构和机制而形成通用模式语言,可以使我们进行合理推论。基本重点在很大程度上不是技术,而是创建一种文化来记录和支持良好的工程体系结构和设计。
[4]
基本的困惑点是:模式就象美感,看似取决于观察者的眼光。因此,如有任何 5 名安全从业人员在一起,他们所定义的模式将特定于其兴趣领域。
基于这一原因,我将展开关于“角色”的讨论,以帮助将模式按兴趣团体进行分组。
首先是谁?
在软件世界中,有人进行设计,有人绘制图片和撰写文档,有人编写代码,有人将所有部分组装到一起并提供基于计算机的系统。
每个组织可能以各自的方式定义任务,但是均有原型角色。
原型是可从中派生、复制、模仿或模拟类似实例的关于人、对象或概念的理想化模型。在心理学上,原型是关于人、个性或行为的模型。 [5]
在任何大中型组织中,根据各个人员的组织职责向他们分配任务。一般而言,业务分析员和业务应用程序需要保护企业的信息资产。 由此引发了对提供安全性的业务应用程序的需求。
原型 1 - 业务分析员
在必须遵守法律或法规要求的组织中,有时会有一组特定的“C”级别任务,用于监视并强制实施这些规定。CSO 和 CPO 通常与业务分析员合作编写一套公司准则和要求 - 良好业务实践的基础。
原型 2 - 首席安全(隐私)主管
当今不同规模的组织大部分都建立防火墙。甚至个人用户在家中为自己的家庭网络建立防火墙。必须有一些人员来设置和维护这些设备。这些工作有的简单,有的复杂。
原型 3 - 网络安全主管
当要实际了解并选择某种安全性机制以满足业务指定的需求时,有很多人共同工作来实施安全性。
原型 4 - 安全架构设计师
安全开发人员、安全部署人员、安全策略编写人员、安全策略管理员、安全系统管理员
按角色查看模式
本文及一组配套的幻灯片旨在提供一个工作原型,用来确定和阐明 IBM
客户(业务分析员团体)中存在的通用安全模式。电子商务模式工作的任务是将信息量调整到某种程度的抽象,其一般化程度足以使非安全从业人员能够理解,然而仍保留充分的上下文来向安全从业人员团体提供具体支持。
IBM 是大型软件行业的一个缩影,因为它代表了产品开发和业务应用程序服务开发,以及用于管理和部署应用程序的中间件产品。
有一些用于设计和开发安全应用程序的方法(例如:MASS、Open Group 和
JAAS),然而其中一些方法针对经专门训练并全面掌握技术的安全专业人员。因此,一组模式将是“安全体系结构模式”。需要详细的安全体系结构来开发用于提供安全解决方案的技术,且这些体系结构将由模式在适当的地方引用,但本文的主旨并非记载所有的安全体系结构模式。
什么是安全性?
现在众所周知,IETF 是对因特网的发展起根本作用的一个组织。IETF 在 2000 年制订了安全性词汇表,其中捕获了计算机安全性的大部分基本概念。 不断地作出改进,新的技术和机制投入使用,然后又退出,然而基本定义保持不变。
在当今实践中最常用的安全性组件包括:识别和认证、授权、担保、审计、消息保护、机密性和完整性。本工作原型并非只提供每个安全性机制的模式,而是查看各个安全性机制以确定公共特性。本白皮书重点讲述如何确定“安全解决方案模式”。这些公共元素的派生方法是:查看各个安全性机制的一组详细模式元素(例如,安全性机制:认证
- 模式元素:用户名、密码、Kerberos 和 PKI),然后对认证、授权和担保等安全性机制中共有的那些元素进行抽象。
在所有安全性模式中查找公共元素的结果是确定 3 个子模式元素,这些元素以某种形式出现在任何类型的安全性解决方案中:
-
软件中必须有一个调用安全性机制的点(例如“控制点”)
-
通常存在某类对执行 #1 十分重要的元信息,称为“系统信任和访问属性”
-
存在某种与安全性机制的初始化和持续维护相关的任务,称为“安全性管理/工作流任务”
为了说明如何将各个安全性机制映射到这 3 个子元素,我们将给出关于“确定”的示例。同样地,在 IETF 词汇表中:
确定(identification)- (I) 向系统提供标识以使系统可识别系统实体并将其与其他实体区别开来的行为或过程。(请参阅:认证(authentication)。)
在调用应用程序时将一个人与其他人区别开来,是每个企业均面临的模式。解决业务问题的策略可能不同,具体取决于应用程序及其部署环境中所涉元素的数量和多样性。有些企业将有关“命名”的决策留给业务线中的个别应用程序,也可能是其中的一组应用程序。有些企业则受到其数据中心中的软件的约束。
有些企业将应用程序部署环境与一组严格的机制紧密结合。
然而,存在向应用程序提供“标识”的点,这被认为是“确定”的“安全性控制点”模式。 所需信息的数量和类型也会有显著不同。标识可以是真实人员的姓名(例如 Maryann Hondo),也可以是假名(例如
mhondo)。标识可以全球唯一(UUID),也可以在限定的名称空间中唯一(例如 mhondo@us.ibm.com)。
安全性模式的特性
-
定义一个或多个控制点(身份、认证、授权、策略实施、审计、一致性和消息保护)
-
定义系统保护属性(配置约束;信任和访问规则)
-
定义管理任务(供应、注册表/存储库同步、管理和监控)
-
RFC 2828 因特网安全性词汇表,2000 年 5 月
-
Understanding and Using Patterns in Software Development,作者:Dirk Riehle 和 Heinz Zullighoven。
-
Design Patterns: Elements of Reusable Object-Oriented Software,作者:Erich Gamma、Richard Helm、Ralph Johnson 和
John Vlissides。
-
Patterns and Software: Essential Concepts and Terminology,作者 Brad Appleton:http://www.cmcrossroads.com/bradapp/docs/patterns-intro.html#Origins
-
维基百科(Wikipedia):http://en.wikipedia.org/wiki/Archetype
|