Valence 威胁模型
目录
Valence
Valence 是一系列功能,旨在简化对解耦的机架资源(计算、存储和网络)的使用,这些资源可通过 DMTF Redfish RESTful API 访问,从而启动云并动态扩展/缩减 OpenStack 云。Redfish API 在我们的案例中由 Intel Rack Scale Design PodManager 实现。这些功能暴露给注册用户。
Valence 由 3 个组件组成:Web-UI、API + Controller 组件以及用于 OpenStack 的插件集合,这些插件将允许动态扩展/缩减 OpenStack 云。在上面的图中,这些位于最左侧,颜色为绿色并标有“Valence”标签。
Valence 资产
- Web UI -- 提供图形用户界面的应用程序
与 Web 应用程序关联的 HTML、javascript 和样式表
- API 服务器和 Controller 组件,包括
提供 RESTful 接口以组合和分解节点并列出它们的 API 服务器
- 一个 Controller 组件,它使用 Redfish REST API 调用对 Rack Controller 实现进行适当的后端调用,验证用户身份,管理用户配额等等
- 一个数据库,用于跟踪注册用户、用户配额、资源分配、硬件风味等。
- 连接凭据和到 Rack Controller 的地址,它控制机架规模资源池。连接详细信息可以提供在配置文件中,也可以从表单输入数据中获取并存储。
- OpenStack 插件 本质上将启用现有的云(如果配置为这样做),以从解耦的资源池中获取和释放资源。特别是,这些插件将允许 OpenStack/nova 添加/释放计算主机,OpenStack/ironic 添加/释放裸机节点,以及 OpenStack/horizon。随着其发展,这方面的内容将由单独的安全审查涵盖。
组合的节点用于使用 Fuel、Kolla 或其他部署工具浮动云。在爬取阶段,云的大小/容量是静态的。OpenStack 插件将在未来的阶段开发,以允许动态添加和释放节点到现有的 OpenStack 云中,并且需要逻辑来首先确定节点是否未使用。
威胁摘要
与任何 Web 应用程序和数据库一样,标准的威胁面和处理机制。下面我们介绍一个架构概述、威胁细节和保护措施,以防止相同的情况。
主要的 Web 服务器威胁
- 剖析
- 拒绝服务
- 未经授权的访问
- 任意代码执行
- 权限提升
- 病毒、蠕虫和特洛伊木马
主要的数据库威胁
- SQL 注入
- 网络窃听
- 未经授权的服务器访问
- 密码破解
Web UI - 设计和部署策略
The Web UI application will consist of static pages and dynamic content generated using scripts (React) and making calls to the API by code (such as list of available node flavors, list of composed nodes etc)
- Web 应用程序以尽可能少的权限运行,因此降低了特权升级的威胁。
- 其文件和可执行文件由 Web 应用程序拥有,并且只能由其访问(无组或世界读取权限)
- 为了防止任意代码注入,所有用户输入都应进行清理(输入长度、在执行或保存到数据库之前中和脚本内容,例如 > 转换为 > 等)。跨站点脚本
- 将记录所有访问以帮助进行任何取证。
- 对于除应用程序以外的任何 URL 路径(例如“/”和“../”),返回错误消息以防止访问系统上的其他资源。
- 仅打开端口 443 用于 https 访问并关闭所有其他端口(如果主机上没有运行其他所需进程)以降低漏洞
- 使用 post 而不是 get/url 传递所有凭据
- 主机机器保护在下面的 API+Controller 部分中更详细地介绍
API + Controller - 设计和部署策略
- RESTful API
- 网络访问 -- 通过仅以安全方式(HTTPS/TLS、安装证书)使应用程序可访问来防止中间人攻击和窥探。使用防火墙。
- 使用 post 携带所有凭据(与 get 中的 URL 不同)
- 用户注册要求 - 强密码。应以哈希形式保存在数据库中(稍后讨论)
- 提供一个配置参数,允许我们启用/禁用日志级别。
- 日志不应泄露用户名/密码 -- 在日志中用固定长度的常量字符串替换它们。
- 主机机器保护
- 使用 iptables 规则防止拒绝服务(在某个时间窗口内接受的传入连接请求的数量、IP 地址、协议等)
- 防止恶意行为者访问 -- 在维护操作期间使用 sudo,删除不必要的帐户。应在云系统中的其他主机上保留任何密码策略以保持一致性。
- 通过仅安装所需的软件和守护程序来降低漏洞。 https://msdn.microsoft.com/en-us/library/ff648653.aspx。
- 建立一个流程/机制来应用主机上的适用安全补丁。如果安全补丁成为 Linux 内核或其他软件包的一部分,则应将其记录为代码库中的版本依赖项,以防止回归。
- 关闭不需要的协议、端口、Netbios、SMB 等(保护免受剖析攻击),即 ICMP -- 不为端口扫描、ping 扫描等提供燃料 http://www.softpanorama.org/Net/Transport_layer/hardening_tcp_stack_in_linux.shtml
数据库 - Controller 的数据持久化
- 数据库只能从 API+Controller 服务器的 IP 访问。IP 地址可以被欺骗,但作为正确的开始,限制对数据库机器的访问使用 IPTable 规则,仅允许来自有限数量的机器的访问。
- 主机机器保护与 API+Controller 相同
访问 Pod-Manager REST API 服务
Pod-Manager 已经过安全审查。使用配置的凭据从 Web UI 访问 Pod-Manager。如果这两个应用程序在同一台机器上运行,则上述所有主机保护都适用。如果它们位于单独的服务器上,我们预计这些机器将位于专用网络中,并通过防火墙从公共网络得到充分保护。
插件 - OpenStack
为了启用云的动态扩展/缩减,我们将启用仅云管理员启用的调用到 Valence Restful API。虽然插件不会影响 Valence 安全性,但它们包含在 OpenStack 和其他云解决方案中,将影响其中的攻击面。插件和客户端处理将在单独的安全审查中涵盖,因为它们会不断发展。
OpenStack 插件的一些示例:
- 一个 Valence 客户端,它使用配置的凭据并代理对 Valence API/Controller 组件的调用。
- Ironic 中的 Redfish 驱动程序/插件,用于控制/管理组合的节点,反过来利用 Valence 客户端。
- 使用规则监控,这些规则触发仅管理员批准或自动操作,这些操作扩展/缩减云,这可能会为云“缩减”发出调用,该调用会清空主机然后关闭节点,然后释放节点,而对于“扩展”则组合所需硬件风味的节点,在同一节点上部署所需的镜像,最后将其注册到云以托管云工作负载。