云计算中的容器安全:了解概念和要求
在2010年下半年时人们对容器和容器平台的兴趣激增。容器的普及,容器已成为除Linux和Windows虚拟机(VM)之外的第三种托管应用程序运行时。
在本文中,我们分析了在云中运行容器的好处,并仔细研究了如何为容器化工作负载提供安全保护。
如何在云中运行容器
与传统应用程序相比,容器镜像不仅包含应用程序,还包含所有依赖项,包括系统库、驱动程序和配置。它们通过淘汰手动操作系统配置和虚拟机上容易出错的设备安装来简化部署。部署变得平稳、快速且无故障。
所有大型云服务提供商(CSP)都提供多种云服务来运行容器工作负载。第一种变体是客户部署自己选择的开源或第三方容器平台(例如,RedHatOpenShift或ApacheMesos)。他们自己将平台安装在云中的虚拟机上。因此,在这种情况下,云提供商不参与容器平台的设置和运行。
第二个选项是CSP提供的托管容器平台服务上的容器。例如AzureKubernetes服务(AKS)、GoogleKubernetesEngine(GKE)和AmazonElasticKubernetes服务。单击一下,Kubernetes集群就会自动启动。
在此模型下,容器和平台配置是客户的责任,这是与第三个选项的主要区别,第三个选项是云中的专注容器运行时平台,例如AzureFunctionApps或AzureWebApps(图2)。除了其他选项之外,后一种服务使工程师能够配置容器化应用程序,但隐藏底层容器平台的存在。因此,安全架构师面临的挑战是保护运行容器化应用程序的一系列平台的安全。
容器安全要求
为了有效保护容器工作负载,安全架构师需要全面了解技术层和安全相关任务。这些任务旨在强化所有相关组件、管理漏洞以及主动识别和响应整个技术堆栈的威胁和攻击。
强化需要安全地配置所有组件,特别是实施强大的访问控制和网络设计。漏洞管理包括识别自主开发和第三方组件中的安全漏洞和错误配置并对其进行修补。即使容器镜像在部署时没有漏洞,漏洞也可能在稍后被发现,如Log4j案例所示。最后,黑客可以攻击容器化应用程序和底层容器平台。因此,组织必须检测其组织容器资产中的异常和可疑行为(威胁检测)。
强化、漏洞管理和威胁检测是完整技术堆栈的必要条件:底层基础设施层(例如虚拟机、网络、存储或云租户设置)、容器平台本身(例如OpenShift或Amazon)ElasticKubernetesServiceEKS),最后是每个容器化应用程序。
平台层的职责有所不同,具体取决于云服务。对于AzureAppFunctions等容器化运行环境,客户必须确保镜像无漏洞、服务配置安全;其他一切都由CSP负责。相比之下,运行AmazonEKS集群意味着容器平台配置也是客户的责任,尽管CSP会修补平台组件。
安全架构师必须了解并定义如何为技术堆栈的每一层运行容器映像(例如AzureFunctionApp、AmazonEKS、CloudRun)的每个云服务解决安全任务(强化、漏洞管理、攻击/威胁检测)层(应用程序、平台、基础设施)——如果客户而不是CSP负责特定层。
让安全性适用于容器化工作负载
MicrosoftDefender或Google安全中心等云原生安全工具是保护公共云中容器化工作负载的绝佳首选解决方案。这些工具可以检测容器工作负载和底层平台中的漏洞和威胁。虽然当然不是免费的,但客户只需单击一两次(或很少几次)即可激活它们,并立即从改进的安全状况中受益。
在查看AzureFunctionApps(可以运行容器化工作负载的Azure服务)时,合适的Microsoft产品是DefenderforCloud。它首先提供防御者建议。他们揭示了全的参数和配置选择,例如“FunctionApp只能通过HTTPS访问”。这些建议(部分)基于CIS基准。Defender的第二个功能是攻击路径分析,着眼于更广泛的背景。它利用多种不完美的配置选择来识别攻击路径,以闯入公司的云资产。最后,Defender安全警报警告专家有关可能构成攻击的持续活动。
MicrosoftDefender适用于Azure的是适用于AWS的AmazonGuardDuty和适用于GCP的GoogleSecurityCommandCenter:良好的云原生开箱即用服务,用于保护(不仅仅是)基于容器的工作负载。除了这些云原生解决方案之外,第三方安全工具也是可行的选择。较大的组织应该将其功能和成本与云原生服务进行比较。
当CISO要求全面覆盖所有基于云的容器工作负载时,容器安全性的真正挑战就开始了。然后,安全架构师需要分别分析每个相关的云服务。在这样的分析中,他们应该特别关注三个主题:
强化是指根据具体公司的工作负载和云设置来定义细粒度的规则。何时可以接受公开暴露的虚拟机?您何时需要(或不得要求)API调用身份验证?这是一个比仅仅确保不存在明显漏洞更全面的目标。
对于容器或容器映像的漏洞扫描,存在两种模式:存储库扫描和运行时扫描。后者仅检查正在使用和存在风险的映像,其优点是:不会因已创建但从未部署的映像中的漏洞而导致误报。但是,运行时扫描并非适用于所有服务。后备方法是扫描GCPArtifactRegistry等存储库中的图像,这种模式还允许将漏洞扫描集成到CI/CD管道中。
威胁检测需要分析容器和底层平台中的活动以发现可疑行为和异常。与基于容器的漏洞扫描类似,安全架构师可能需要仔细检查此类功能是否适用于所有基于容器的环境(并且处于活动状态)。
此外,针对容器安全的第三方解决方案当然也是有效的选择。然而,必须将它们的功能和成本与云原生解决方案进行比较——至少对于大型组织来说是这样。
遏制威胁
对于CISO来说,关于容器安全的可怕现实是容器技术已经渗透到大多数IT组织中。虽然CISO和CIO通常了解他们的大型Kubernetes集群,但他们不太了解许多额外的、鲜为人知的执行容器的云服务。由于黑客的目标是找到未受保护的服务(而不是攻击受保护的服务),因此组织必须分析容器工作负载的位置并确保所有服务都是安全的。