4.4.3  安全设计指南

4.4.3 安全设计指南

1.安全设计概述

安全设计是指为了实现信息系统安全需求所设计的安全措施。安全措施既可能是信息系统自身的安全措施,也有可能是运行环境的安全措施。安全设计的主要目的是提高信息系统整体安全水平,减少系统中的漏洞数目,降低任何未能发现的安全问题对系统影响的严重性。毫无疑问,所有系统设计都应该遵从安全设计原则。举例来说,如果你识别出一种针对系统的威胁并采取了相应的措施,一旦系统本身设计是不安全的,那么该措施可能形同虚设。而安全设计原则有助于防止这种潜在错误的出现。

安全设计的另一重要方面是降低系统的受攻击面。受攻击面是指用户或攻击者都能够访问到的所有代码与功能的集合。例如,一个由应用打开的TCP(传输控制协议)套接字就是受攻击面的一部分。有人认为只有操作系统是受攻击面,但实际上所有的应用都存在受攻击面。在系统投产之后仍应长期研究可能对系统产生影响的新型漏洞。因而系统受攻击面越小,越有利于降低安全问题的严重程度[26]

2.安全设计指南的制定

与安全编码规范的普及相比,开展研发风险管控工作更为缺乏的是实际可行的安全设计指南。虽然有许多经过验证的安全设计原则,并且许多文档中都包含安全信息,但想要研发人员切实执行安全方面的要求,坚持保护安全、隐私的策略,必须要给出如何实现这些目标的安全设计指南。

与安全需求指南不同,安全设计指南的重点是给出安全设计建议。不但要给出针对各种漏洞和问题的安全设计建议,还要结合企业架构和评估给出设计建议。这些建议不应使用“这样做是不好的”来描述,而是用“应该这样去做”来描述。根据实施经验,项目研发团队在充分理解安全目标和实现方式后,更愿意遵守安全设计指南。

同样,安全设计指南需要充分借鉴法律、法规、标准和最佳实践,并经过组织评审后实施,同时需要根据实际情况的变化不断更新维护。

3.安全设计指南的主要内容

安全设计指南一般包括安全设计方法、安全设计原则、安全设计建议等内容。

(1)安全设计方法 信息系统安全设计应至少包括系统安全架构设计和运行环境安全设计。系统安全架构设计明确系统应包含多少个安全组件,每个组件包含多少个安全模块,每个安全功能实现对应哪些模块。运行环境安全设计明确系统每个组件应分别部署在什么样的环境中,这些环境中应有一些什么样的安全措施。

由于商业银行大部分系统的运行环境已经提前设定,因此项目研发团队应着重关注能够通过编码实现的安全措施。如果运行环境可以调整,也可以通过运行环境进行安全加固。在系统设计阶段,主要安全设计流程如下:

1)第一步,组件规划与模块规划。根据信息系统功能划分,进行系统组件规划和模块规划,对各功能安全需求进行汇总分析,进行安全模块规划,如身份认证模块、访问授权模块、日志审计模块、用户管理模块、权限管理模块等。

2)第二步,安全威胁分析。结合运行环境状况,对每一个模块的数据传输、数据存储、操作控制等因素进行分析,以发现是否存在影响安全需求实现的威胁。应特别关注跨安全域的数据流所面临的威胁。如果存在影响安全需求实现的威胁,则需要设计一定安全措施应对威胁。在进行安全威胁分析时,可以采用威胁建模方法、攻击面最小化分析方法(详见本书第9.2、9.3节)。

3)第三步,安全措施设计。根据安全威胁分析结果和实际需要,参考“安全设计建议”设计必要的安全措施。

(2)安全设计原则 信息系统安全问题是一个涉及面广泛而又复杂的问题,其面临的最大难题之一是:总有可能出现与所有已知模式完全不同的新的安全缺陷。因此,要保护信息系统免受各种可能类型,包括未知类型的攻击是不切实际的,但可以通过在设计和建设信息系统时运用合理的安全性原则来最大程度上提高系统的稳健性。这些原则经过了无数前人的总结和验证,是指导研发团队进行安全设计的有效依据。

安全设计原则主要包括薄弱环节保护原则、纵深防御原则、最小授权原则、操作留痕原则、单元分隔原则、数据正确处理原则、简洁性原则等(详见本书第9.1节)。

(3)安全设计建议 安全设计建议主要依据各类监管要求和标准,结合商业银行实际情况及业界最佳实践制定。在内容上,安全设计建议以安全需求模板中的分类和“安全需求”为主线,列举每一项安全需求对应的安全措施建议。研发团队可根据安全需求分析结果及项目实际情况,采纳适宜的安全设计建议。以安全审计为例,安全设计建议见表4-7。

4-7 安全设计建议示例

978-7-111-51949-2-Part02-24.jpg