架构页面指南

架构页面的目的是记录服务或项目的架构、目的和安全控制。它应该记录该项目的最佳实践部署方式。

架构页面包含一些关键部分,如下文详细说明。

  • 标题、版本信息、联系方式

  • 项目描述和目的

  • 主要用户和用例

  • 外部依赖项和相关的安全假设

  • 组件

  • 架构图

  • 数据资产

  • 数据资产影响分析

  • 接口

标题、版本信息、联系方式

本节标题为架构页面,说明审查状态(草稿、准备审查、已审查),并记录项目的发布和版本(如果相关)。它还记录项目的PTL,负责生成架构页面、图表并进行审查的项目架构师(这可能与PTL相同或不同),以及安全审查员。

项目描述和目的

本节将包含项目的一个简短描述,以向第三方介绍该服务。这应该是一两段文字,可以从wiki或其他文档中复制/粘贴。如果可用,请包含指向相关演示文稿和进一步文档的链接。

例如

“Anchor是一个公钥基础设施(PKI)服务,它使用自动证书请求验证来自动化颁发决策。证书颁发时间短(通常为12-48小时),以避免与CRL和OCSP相关的有缺陷的撤销问题。”

主要用户和用例

已实现架构的预期主要用户及其用例的列表。“用户”可以是参与者或OpenStack内的其他服务。

例如

  1. 最终用户将使用该系统存储敏感数据,例如密码短语加密密钥等。

  2. 云管理员将使用管理API来管理资源配额。

外部依赖项和相关的安全假设

外部依赖项是服务运行所需的、服务无法控制的项目,如果这些项目受到损害或不可用,可能会影响该服务。这些项目通常不在开发人员的控制范围内,而是在部署方的控制范围内,或者可能由第三方运营。设备应被视为外部依赖项。

例如

  • Nova计算服务依赖于外部身份验证和授权服务。在典型的部署中,此依赖项将由keystone服务满足。

  • Barbican依赖于硬件安全模块(HSM)设备的使用。

组件

已部署项目的组件列表,不包括外部实体。每个组件应命名并对其目的进行简要描述,并标明所使用的主要技术(例如,Python、MySQL、RabbitMQ)。

例如

  • keystone监听进程(Python):Python进程,它消耗keystone服务发布的keystone事件。

  • 数据库(MySQL):MySQL数据库,用于存储与Barbican管理的实体及其元数据相关的数据。

服务架构图

架构图显示系统的逻辑布局,以便安全审查员可以与项目团队一起逐步了解架构。它是一个逻辑图,显示了组件如何交互、如何连接到外部实体以及通信如何跨越信任边界。有关架构图的更多信息,包括符号键,将在即将发布的架构图指南中提供。可以使用任何能够生成使用符号键图表的工具绘制图表,但强烈建议使用draw.io

此示例显示了Barbican架构图

../_images/security_review_barbican_architecture.png

数据资产

数据资产是用户数据、高价值数据、配置项、授权令牌或其他攻击者可能定位的项目。数据项的集合因项目而异,但通常应将其视为对项目预期运行至关重要的数据类别。所需的详细程度在某种程度上取决于上下文。数据通常可以分组,例如“用户数据”、“机密数据”或“配置文件”,但也可以是单个数据,例如“管理员身份令牌”或“用户身份令牌”、“数据库配置文件”。

数据资产应包括有关该资产存储位置的声明。

例如

  • 机密数据 - 密码短语、加密密钥、RSA密钥 - 存储在数据库[PKCS#11]或HSM [KMIP]或[KMIP, Dogtag]中

  • RBAC规则集 - 存储在policy.json中

  • RabbitMQ凭据 - 存储在barbican.conf中

  • keystone事件队列凭据 - 存储在barbican.conf中

  • 中间件配置 - 存储在paste.ini中

数据资产影响分析

数据资产影响分析分解了每个数据资产的机密性、完整性或可用性丧失的影响。项目架构师应尝试完成此操作,因为他们最了解自己的项目,但OpenStack安全项目(OSSP)将在安全审查期间与项目一起进行此操作,并且可能会添加或更新影响细节。

例如

  • RabbitMQ凭据:

    • 完整性失败影响:Barbican和Worker无法访问队列。拒绝服务。

    • 机密性失败影响:攻击者可以向队列添加新任务,这些任务将由Worker执行。攻击者可以耗尽用户配额。DoS。用户将无法创建真实的密钥。

    • 可用性失败影响:Barbican在无法访问队列的情况下无法创建新密钥。

  • keystone凭据:

    • 完整性失败影响:Barbican将无法验证用户凭据并失败。DoS。

    • 机密性失败影响:恶意用户可能能够滥用其他OpenStack服务(具体取决于keystone角色配置),但Barbican不受影响。如果用于令牌验证的服务帐户也具有Barbican管理员权限,则恶意用户可以操纵Barbican管理员功能。

    • 可用性失败影响:Barbican将无法验证用户凭据并失败。DoS。

接口

接口列表捕获了审查范围内的接口。这包括架构图上跨越信任边界或不使用TLS或SSH等行业标准加密协议的块之间的连接。对于每个接口,捕获以下信息

  • 使用的协议

  • 通过该接口传输的任何数据资产

  • 用于连接到该接口的身份验证信息

  • 接口目的的简要描述。

这以以下格式记录

From->To [Transport]

  • 传输中的资产

  • 身份验证?

  • 描述

例如

  1. Client->API Process [TLS]

    • 传输中的资产:用户keystone凭据、明文密钥、HTTP动词、密钥ID、路径

    • 访问keystone凭据或明文密钥被认为是系统完全安全失败 - 此接口必须具有强大的机密性和完整性控制。

资源

列出与项目相关的资源,例如描述其部署和使用的wiki页面,以及指向代码仓库和相关演示文稿的链接。