翻译自 Google Investigates a New Approach for Workload Isolation 。
谷歌的实验性工作负载安全环将工作负载按照安全要求分类,然后在机器边界隔离并强制执行每个类别。
在基于安全要求隔离工作负载和优化计算和资源效率之间存在微妙的平衡。
机器隔离是一种可能的解决方案,但其存在局限性。Google 高级可靠性工程师 Michal Czapiński 和 Google 网站可靠性工程经理 Rainer Wolafka 正在研究如何克服“机器隔离的局限性”。在向 Usenix 提交的报告中,他们提出了一种新的隔离方法,称为“工作负载安全环”。
工作负载安全环(WSR)通过安全要求对工作负载进行分类,然后在机器边界隔离和强制执行每个类别。这种方法仍将敏感和不受信任的工作负载保持在单独的计算机上,但在两者之间引入了一个新的中间级别。敏感数据仍然可以免受硬件和软件漏洞攻击,例如零日攻击和 DDoS 攻击,但资源利用率更高。
Czapiński 和 Wolafka 在 Google 的生产环境中提出了他们的新方法,但是他们表示:“我们相信这种通用技术将适用于其他上下文,例如 Kubernetes 。
Czapiński 和 Wolafka 非常有信心,认为工作负载安全环提供了平衡计算需求和安全性之间权衡的解决方案。要求具有相似安全要求的工作负载形成环的附加调度约束使它们不会与具有不同许可级别的任务同时调度。
在最简单的情况下,存在三类工作负载:
- 敏感工作负载是关键任务或敏感信息。由于每个组织的范围从相当普遍到极其具体,因此分类是主观的。在下面列出的加固解决方案中,必须采用超越沙箱技术的二进制授权来确保数据安全并正常工作。敏感工作负载只能在可信赖机器上运行。
- 加固工作负载包括可信数据但不包括敏感数据。其余加固分类细节涉及实施的安全控制,以防止集群内部的横向移动。这包括二进制授权、沙箱和其他方法。强化工作负载的主要问题是对其他工作负载的影响。强化工作负载是可以在受信任和不受信任的机器上运行的“中等”类别。敏感工作负载可以在其他机器上启动新任务,但强化任务则不能这样做。
- 未加固的工作负载是指包括运行不受信任代码的任务在内的其他所有内容。这些工作负载只能在不受信任的机器上运行。
加固的工作负载填补了资源利用裂缝,这些裂缝是由敏感作业和未加固作业之间的调度约束造成的。强化类越大,可以吸收的资源波动就越多,而无需将任何机器从受信任切换到不受信任,反之亦然。
只要加固的水位足够大,就可以根据需要添加更多的工作负载类别。每个新类别都需要一组专用机器,因此加固类别应该保持适当的大小以继续吸收波动并有效地利用资源。
Czapiński 和 Wolafka 相信 WSR 的安全性“提供了强有力的保证,我们永远不会与不受信任的工作负载共享计划。”尽管加固工作负载可能存在风险,但禁止远程作业创建使攻击者“极其困难”地跨机器移动到可信池。
这不是一个即插即用的系统,确实需要维护,两人警告说。为了避免将机器从一个组迁移到另一个组,Czapiński 和 Wolafka 建议每周自动重新平衡以考虑完整的 7 天周期。
这是前面提到的安全保证的一个例外。总是有可能出现突然的负载峰值。这是可能导致临时解除调度限制以防止或减轻中断的一个实例。这增加了环之间横向移动的风险,“这不是一个草率的决定,”两人写道。