微服务安全性之简介

微服务软件架构将大型 Web 平台的每个主要功能完全实现为在云中运行的单独的、较小的服务。在安全性方面,微服务及其应用程序编程接口 (API) 的性质提供了本文总结的独特机遇和挑战。

微服务 安全

2022-04-22 31

微服务安全性之简介

微服务软件架构将大型 Web 平台的每个主要功能完全实现为在云中运行的单独的、较小的服务。在安全性方面,微服务及其应用程序编程接口 (API) 的性质提供了本文总结的独特机遇和挑战。在深入研究本主题之前,您可以先阅读本系列的早期文章: 微服务的定义和主要应用。

https://mp.weixin.qq.com/s/KdL4kYE8mXcdDUw5CN5k1w


由于微服务分布在不同的服务器上,因此与同一平台的单一实现相比,微服务通常会暴露出更大、更多样化的攻击面。这使得尽快发现和修复漏洞以避免问题变得更加困难。至少,这需要对大量异构数据进行实时分析。即使忽略安全性的考虑,以这样一种方式设计许多互连的微服务,即如果其中一个出现故障或受到损害,其他任何一个都不会破坏或丢失自己的内部数据,这可能是相当复杂的。


image (7).png        


从正面的角度来看,这些相同的特性使其对等方有任何需求下,配置和运行每一个微服务时都可以使用最适合它的安全措施。这样,如果攻击者确实成功地破坏了一个微服务,他可能无法重用相同的技术或知识来破坏其他微服务。


一般标准

设计安全微服务的起点很简单:从开发一开始就积极让安全专家参与进来,而不是在设计和实施结束时才询问他们。


基于传统网络的应用程序的标准安全技术在使用微服务时变得更加重要。我们指的是以下措施:

  • 清理输入数据以防止命令注入。

  • 加密每一次通信,因为在云中运行的微服务中,没有任何“内部”的通信。

  • 同样地,越早加密数据越迟解密。

  • 尽可能限制微服务的连接速率,以防止拒绝服务攻击

  • 在从应用程序到基础架构的各个级别设置自动化测试、部署和日志记录程序,一旦检测到异常,就会自动向管理员发出警报


除了这些基本的最佳实践之外,基于微服务的平台的一些最广泛适用的安全措施是以下部分中提到的那些。


始终保持所有的软件整洁。

无论来源或许可证如何,所有微服务的每个版本都必须有足够的版本说明,列出他们收到的安全修复程序。这可能是显而易见的,但可能不太明显且更难实现的是,您的微服务使用的所有第三方组件都同样需要相同的保证,一直到您的软件供应链。在现实世界中,除非每个组件都带有适当的软件材料清单 (SBoM),否则要以易于分析的标准格式获取具有足够详细信息的信息可能是一个很大的挑战。


容器是微服务的朋友。当他们真的很安全时,那就真是安全!

微服务的最大优势之一是:管理员可以轻松地随时升级或回滚平台的每个组件,并且对同一平台的其余部分的影响最小。


实现这种隔离和实施自定义安全措施的最简单和最常见的方法是,将每个微服务部署到自己的容器中。在实践中,只有当容器被正确地创建和管理,包含尽可能少的软件和数据,并且尽可能受到保护的图像时,这才能按预期工作。例如,您的微服务的容器映像不应包含密码或其他凭据(更多内容见下文)。此外,它们应该经过数字签署,带有后缀标签以确保管理员始终获得他们需要的确切版本,并保存在像 Harbor 这样具有安全版本控制的私有存储库中。容器的实际部署和管理可能会使用 Docker、cri-o 或 containerd 等工具进行。然而,在所有情况下,这些工具都应该以尽可能少的权限运行,例如 Docker 的无根模式,以尽量减少它们可能存在的任何漏洞。


控制所有访问。

微服务不仅应该将访问限制为只允许经过身份验证的用户,还应该让这些用户只访问他们真正需要的最小的功能和数据集。在许多情况下,这种类型的第一个保护可以而且应该是微服务 API 网关,它只给攻击者留下一个高度保护的进入整个平台的入口点。


或者在某些情况下,除了可能仅用于最大化性能而非安全性的 API 网关之外,您可以为每个微服务提供自己的授权服务器,并使用其自己的一组证书和密钥用于身份验证和加密目的。在使整个平台的管理更加复杂甚至更慢,但同时该策略大大提高了其安全性和稳健性。无论您选择何种授权策略,都应遵循久经考验的开放式身份验证和访问控制行业标准,例如 OpenID Connect OAuth 2.0


保持访问凭据和密钥安全

如上所述,微服务的容器镜像不应包含用户密码、API 授权密钥或同样敏感的信息。云中的此类数据越少,或者分散在多个存储库中,即使它们是私有存储库,它就越好。一种更安全且通常更易于管理的解决方案是将所有数据保存在一个中央保管库中,仅在它们实际启动时(例如通过环境变量)将它们传递给微服务容器。


最后但同样重要的是:多层防御

由于平台的微服务分布在云中,因此它们没有单一的、明确定义的“边界”可以受到传统防火墙的充分保护。然而,在实践中,这几乎没有什么区别,因为保护微服务平台的正确方法是始终采用零信任方法和多层保护。始终将分布式防火墙或服务网格等工具与此处提到的其他技术结合起来,从管理最敏感数据的微服务开始。


如果您想提高您或您的团队的网络安全技能,请考虑 LFOSSA提供的有关此主题的一些培训课程和认证


Kubernetes安全专家认证 (CKS)

https://training.linuxfoundation.cn/certificates/16


Linux安全性基础课程 (LFS216)

https://training.linuxfoundation.cn/courses/16


Kubernetes安全知识精要(LFS260)

LFS260: https://training.linuxfoundation.cn/courses/36


DevSecOps落地实践(LFS262)

LFS262: https://training.linuxfoundation.cn/courses/59



相关文章

Linux基金会开源软件学园 Copyright © 2019 linuxfoundation.cn, ICP license, no. 京ICP备17074266号-2