主要用户和用例¶
已实现架构的预期主要用户及其用例的列表。“用户”可以是参与者或OpenStack内的其他服务。
例如
最终用户将使用该系统存储敏感数据,例如密码短语加密密钥等。
云管理员将使用管理API来管理资源配额。
架构页面的目的是记录服务或项目的架构、目的和安全控制。它应该记录该项目的最佳实践部署方式。
架构页面包含一些关键部分,如下文详细说明。
标题、版本信息、联系方式
项目描述和目的
主要用户和用例
外部依赖项和相关的安全假设
组件
架构图
数据资产
数据资产影响分析
接口
本节标题为架构页面,说明审查状态(草稿、准备审查、已审查),并记录项目的发布和版本(如果相关)。它还记录项目的PTL,负责生成架构页面、图表并进行审查的项目架构师(这可能与PTL相同或不同),以及安全审查员。
本节将包含项目的一个简短描述,以向第三方介绍该服务。这应该是一两段文字,可以从wiki或其他文档中复制/粘贴。如果可用,请包含指向相关演示文稿和进一步文档的链接。
例如
“Anchor是一个公钥基础设施(PKI)服务,它使用自动证书请求验证来自动化颁发决策。证书颁发时间短(通常为12-48小时),以避免与CRL和OCSP相关的有缺陷的撤销问题。”
已实现架构的预期主要用户及其用例的列表。“用户”可以是参与者或OpenStack内的其他服务。
例如
最终用户将使用该系统存储敏感数据,例如密码短语加密密钥等。
云管理员将使用管理API来管理资源配额。
外部依赖项是服务运行所需的、服务无法控制的项目,如果这些项目受到损害或不可用,可能会影响该服务。这些项目通常不在开发人员的控制范围内,而是在部署方的控制范围内,或者可能由第三方运营。设备应被视为外部依赖项。
例如
Nova计算服务依赖于外部身份验证和授权服务。在典型的部署中,此依赖项将由keystone服务满足。
Barbican依赖于硬件安全模块(HSM)设备的使用。
已部署项目的组件列表,不包括外部实体。每个组件应命名并对其目的进行简要描述,并标明所使用的主要技术(例如,Python、MySQL、RabbitMQ)。
例如
keystone监听进程(Python):Python进程,它消耗keystone服务发布的keystone事件。
数据库(MySQL):MySQL数据库,用于存储与Barbican管理的实体及其元数据相关的数据。
架构图显示系统的逻辑布局,以便安全审查员可以与项目团队一起逐步了解架构。它是一个逻辑图,显示了组件如何交互、如何连接到外部实体以及通信如何跨越信任边界。有关架构图的更多信息,包括符号键,将在即将发布的架构图指南中提供。可以使用任何能够生成使用符号键图表的工具绘制图表,但强烈建议使用draw.io。
此示例显示了Barbican架构图
数据资产是用户数据、高价值数据、配置项、授权令牌或其他攻击者可能定位的项目。数据项的集合因项目而异,但通常应将其视为对项目预期运行至关重要的数据类别。所需的详细程度在某种程度上取决于上下文。数据通常可以分组,例如“用户数据”、“机密数据”或“配置文件”,但也可以是单个数据,例如“管理员身份令牌”或“用户身份令牌”、“数据库配置文件”。
数据资产应包括有关该资产存储位置的声明。
例如
机密数据 - 密码短语、加密密钥、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]
传输中的资产
身份验证?
描述
例如
Client->API Process [TLS]
传输中的资产:用户keystone凭据、明文密钥、HTTP动词、密钥ID、路径
访问keystone凭据或明文密钥被认为是系统完全安全失败 - 此接口必须具有强大的机密性和完整性控制。
列出与项目相关的资源,例如描述其部署和使用的wiki页面,以及指向代码仓库和相关演示文稿的链接。
除非另有说明,此文档根据 知识共享署名 3.0 许可 授权。请参阅所有 OpenStack 法律文档。