安全功能与设计

安全功能& 设计实践负责为主要安全控制措施(满足标准和要求实践中定义的标准)创建可用的安全模式,为这些控制措施建立中间件框架,以及创建和发布其他前瞻性安全指导。

1 级安全功能与设计

[SFD1.1: 98] 构建并发布安全功能。

SSG 并没有让每个项目团队都实施自己的安全功能(例如,认证、角色管理、密钥管理、审核/日志、加密和协议),而是作为开发小组所用安全功能的情报交换来提供前瞻性指导。这些功能可能是在代码审查期间发现的,可能是由 SSG 或专门的开发团队创建的,也可能是供应商(如云服务提供商)提供的库中所包含的。通用安全功能通常需要针对特定平台进行量身定制。移动加密功能可能需要至少两个版本来兼容 Android 和 iOS,而在云中管理身份可能需要专门用于 AWS、谷歌和 Azure 的版本。项目团队可以从 SSG 预先认可的实施中受益,SSG 的优势在于不必反复追踪常常潜入安全功能的细微错误。

[SFD1.2: 69] SSG 与架构团队合作。

安全是组织软件架构讨论时的必谈话题,架构团队除了负责性能、可用性和可扩展性之外,同样担负着安全责任。防止安全主题脱离这些讨论的一种方法是让 SSG 成员参与架构讨论。此外,企业架构团队可以帮助 SSG 创建有机整合到企业设计标准中的安全设计。SSG 主动参与是此时取得成功的关键所在。例如,将一个为人熟知的系统迁移到云上则需要再次聘请 SSG。一个团队仅靠假设另一个团队已经满足了安全要求,绝对不是安全之举。

 

2 级安全功能与设计

[SFD2.1: 31] 利用以设计促安全的中间件框架和通用库。

SSG 针对利用设计中间件架构或通用库构建的安全,构建或提供建议,从而在软件设计中发挥主动作用。除了示例教学之外,这一中间件还协助架构分析和代码审查,因为构建模块有助于轻松发现错误。例如,SSG 可以修改一个热门网络框架(例如 Spring),使其易于满足输入验证要求。最后,SSG 可以专门针对其提供的组件定制代码审核规则(参见 [CR3.1 使用拥有定制规则的自动化工具])。采用中间件框架(或任何其他使用广泛的软件)时,SSG 必需在发布之前仔细审查软件的安全性。鼓励采纳和使用不安全的中间件不利于达成总体软件安全目标。一般开源软件安全框架和库(如 Spring Security、NaCl)不应被视为以设计促安全类别。最后试图通过调用库来强制实施安全从来都不是成功的安全设计方法。

[SFD2.2: 40] 创建 SSG 职能来解决复杂设计问题。

SSG 能为新架构贡献力量并解决复杂设计问题,尽量减轻安全对于其他约束(上市时间、价格等)的不利影响。SSG 派遣参与设计新协议的技艺娴熟的架构人员可以分析现有协议的安全影响,并确定应该复制或避免的元素。同样,让安全架构人员了解将一个似乎为人熟知的应用程序迁移到云上而产生的后果,能够避免大量的后续麻烦。预先设计安全性比先分析现有的安全设计,再在发现缺陷时进行重构的做法更加高效,所以 SSG 应当尽早参与新项目的流程。请注意,有些设计问题需要 SSG 之外的特定专业知识:即使是最好的专家也无法满足整个软件组合的需求。

3 级安全功能与设计

[SFD3.1: 11] 形成审查委员会或中央委员会以审批和维护安全设计模式。

审查委员会或中央委员会正式确定在设计需求和安全权衡方面达成共识所需的流程。与架构委员会不同,这一团体专门提供安全指导,还定期审查已经发布的(特别是围绕身份验证、授权和密码学的)设计标准,以确保设计决定不会陈旧无用。此外,在通常因为采用新技术而引发的混乱中,审查委员会也有助于掌控局面,以免开发团队在没有任何 SSG 参与的情况下独自做出决策。

[SFD3.2: 12] 必须使用合格的安全功能和框架。

实施人员必须在合格清单或存储库中选择安全功能和框架。这项活动有两个好处:开发人员不花时间重新实现现有的功能,审查团队不必在采用新的项目或平台时对付与以往相同的缺陷。实质上,项目使用合格组件越多,测试、代码审查和架构分析就越容易(参见 [AA1.1 执行安全功能审查])。重用是一致的软件架构表现的重大优势,对于敏捷开发和维持 CI/CD 管道的速度尤其实用。基于容器的方法使打包和重用已批准的功能和框架变得特别容易(参见 [SE3.4 使用应用程序容器])。

[SFD3.3: 4] 寻找并发布组织的成熟设计模式。

SSG 通过收集整个组织的设计模式(有时称为安全蓝图)并发布给每个人使用,促进集中式设计重用。SSG 网站的一部分会推广架构分析过程中确定的积极元素,传播好的创意。该流程经过正式确定:仅靠临时性事故通知是不够的。有时,中央架构或技术团队会协助并改善该活动。常见的设计模式可以加速开发,因此切记不仅要为应用程序使用安全设计模式,所有软件(微服务、API、框架、基础架构和自动化)都需要使用。