一文讲透丨如何破解安全应用容器架构的17大挑战!
2023-2-15 18:26:14 Author: www.freebuf.com(查看原文) 阅读量:6 收藏

众所皆知,云计算/云原生技术因能极大地提高云上资源利用率以及应用交付效率而被广泛采用。然而,云计算/云原生技术的发展也让用户遭受了更多高级威胁与攻击。如何构建有效的云原生安全管理体系应对层出不穷的安全威胁这一问题也一直受到千行百业用户的关注与热议。

国际云安全联盟CSA发布报告《实现安全应用容器架构的最佳实践》该报告旨在成为《保护应用容器和微服务所面临的挑战》文档的配套文档。《保护应用容器和微服务所面临的挑战》文档从开发者、运营者和架构师的视角定义了保护应用容器和微服务所面临的挑战,而该报告则提供了应对挑战的建议和最佳实践。图片

(微信搜索“国际云安全联盟CSA”,回复关键词“云安全”即可获取报告完整版)

云原生是云计算的下半场。在这场技术变革中,业界对技术链、工具链、交付体系不断进行探索、升级、改造,研发出一系列的云原生技术和产品,比如微服务、容器、容器编排管理平台;通过这些云原生技术和产品对旧的应用进行改造,可构建弹性、稳定、松耦合的云原生应用,并更好地利用云的能力,提高云上资源利用率以及应用交付效率。然而,当用户在享受云原生技术带来的安全便利之际,却也面临了一些新的安全威胁与风险。

云原生容器全生命周期的重点安全问题包括:

·容器的全生命周期:配置安全

·项目构建阶段:镜像安全、CI/CD安全

·容器的运行环境:计算、网络、存储以及应用等方面的安全问题

IT基础架构持续迭代,而应用从始至终贯穿整个架构变革,因而应用安全仍是云原生时代的重要需求。在全新的技术环境下,应用运行的环境边界逐步模糊化,针对应用内生性安全的要求不断提升。因而,推进“安全左移”,全面覆盖安全需求、安全设计、安全开发、安全测试、安全发布等系统开发全生命周期,全方位赋能应用安全开发管理具有重要的意义。

保护应用容器安全的建议和最佳实践

该报告详细地提出了实现安全应用容器架构的17项建议,下面对这17项建议进行简介(原报告中的解读更为详细。建议想要更具体地了解详情的读者朋友进一步做阅读)

1.跨环境的代码提升

针对跨环境(开发、质量保证、测试、生产)的代码提升所固有的挑战,建议的缓解措施包括以下几点:

1. 开发者应建立信任根;

2. 运营者应利用容器管理平台安全地跨环境移动镜像。

2.主机安全

针对主机安全所面临的挑战提出的缓解措施包括以下观点:

1. 多租户或数据敏感性需求必须通过容器技术(如标签)记录,实现容器部署和审计的自动化;

2. 容器运行时与远程服务(容器仓库、容器编排)间必须使用加密通信;

3. 除非绝对必要,容器不能运行在特权模式下;

4. 容器运行时应该只在绝对必要时挂载容器内的数据卷(例如,不要挂载/proc、/etc、运行时套接字等);

5. 用户应该删除所有功能,仅显式保留进程必需项。使用白名单而非黑名单机制。

3.平台或宿主机侧的容器持续监控

在平台或宿主机侧的容器持续监控中,推荐采取这些缓解措施应对挑战:

1. 开发者需要使用清晰的版本模式以识别运行容器中的应用程序版本;

2. 对运营者而言,应配置容器运行时,向中心化日志系统传输日志;

3. 对于运营商而言,监控服务的容器不能运行在特权模式下,也不能访问宿主机。

4.容器网络-宿主机与容器通信

建议通过以下措施缓解宿主机与容器通信的挑战:

1. 建议应用程序使用安全的网络通信协议;

2. 运营者应提供身份认证和访问控制的基础设施;

3. 运营者还应提供网络监控的基础设施。

5.容器网络-容器间的通信

针对容器间通信存在的挑战,提出以下建议的缓解措施:

1. 应用程序必须使用安全的网络通信协议;

2. 运营者必须提供身份认证和访问控制的基础设施;

3. 运营者必须提供网络监控的基础设施;

4. 运营者必须使用容器化解决方案支持不同粒度的开放服务访问控制。

6.验证镜像的完整性和安全性

针对验证镜像的完整性和安全性方面存在的挑战,建议的缓解措施包括:

1. 开发者应在镜像构建过程中对镜像签名,并在使用前校验镜像;

2. 开发者应在开发过程中使用漏洞扫描工具;

3. 开发者应该在镜像中仅包含必要的组件;

4. 运营者应在基础设施设计中确保仅允许使用已签名和已验证的镜像;

5. 运营者应在基础设施设计中保障可持续识别新公布的漏洞。

7.容器取证

针对容器取证中存在的挑战提出以下几点缓解措施:

1. 对于新应用程序,开发者应创建并遵循编码规范,在规划和设计阶段涵盖日志记录功能;

2. 对于现有应用程序,开发者应该从身份认证日志开始,实现记录应用程序日志的计划;

3. 运营者应将容器环境的取证功能引入规划;

4. 对于新的基础设施,运营者应实现已规划的取证能力;

5. 对于现有的基础设施,运营者应该从捕获数据(即网络流量、磁盘和内存工件)开始,逐步具备相应的能力。

8.跨容器的信任链

以下是通过跨容器信任链的建议缓解措施:

1. 开发者应确保镜像签名是镜像构建过程的一部分,并应在使用前验证镜像;

2. 开发者应在开发过程中使用漏洞扫描工具;

3. 开发者应确保镜像中只包含必要的组件;

4. 在设计镜像完整性验证、漏洞扫描和修复的基础设施时借鉴3.1.6(验证镜像的完整性和安全性)中向运营者的建议;

5. 运营者应使用安全加固的受信任的宿主机存储镜像和运行容器,其中宿主机的容器引擎被安全地配置;

6. 运营者应使用身份认证和访问控制机制(即基于TLS的双向鉴权),以确保容器之间以及管理平台与容器之间的信任;

7. 运营者应根据用户角色限制对容器和镜像的访问;

8. 运营者应监控容器配置参数和运行时完整性。

9.容器卷管理

针对容器卷管理中存在的挑战提出的缓解措施包括以下建议:

1. 开发者应接受足够的培训,确保开发的应用程序能够最大限度地减少使用共享容器卷并且不需要访问主机目录;

2. 运营商应提供支持资源管理、访问控制和容器卷监控的基础设施;

3. 运营者应提供隔离不同用户和应用程序网络流量的基础设施;

4. 运营者应提供一个接口,允许一个实体(例如,工作负载)拥有的容器之间进行网络通信。

10.容器秘密(Secret)管理

在容器秘密管理中,建议针对挑战提出或采用以下缓解措施:

1. 为开发者提供培训和最佳实践指导;

2. 为开发者创建公共库,以处理后端应用程序代码中的敏感数据和秘密;

3. 运营者应通过集成部署工具或脚本以及容器编排工具设计秘密管理体系结构。

11.平台管理-生命周期事件通知

针对生命周期事件通知平台管理中存在的挑战提出的缓解措施包括以下建议:

1.容器的生命周期(开始/停止/伸缩)由CMP(容器管理平台)管理。从开发者的角度来看,如果容器化应用程序不知道容器的状态转换,那么应用程序可能处于未知状态。

12.平台管理-资源请求

针对平台管理中存在的挑战提出的缓解措施(适用于生命周期事件通知)包括以下建议:

1. 开发者应通过平衡系统资源帮助确保可持续的系统性能;

2. 在多租户环境中,运营者应保证资源消耗均衡;

3. 在多租户环境中,运营者应确保 CMP 优化集群资源消耗。

13.平台管理-容器资源管理

1. 运营者应在 CMP 和单个应用程序资源管理对象之间找到并实现可接受的平衡。

14.容器管理-容器资源伸缩

针对容器管理中存在的挑战建议采用如下方式伸缩容器资源:

1. 在创建容器部署配置时,开发者或运营者应利用其 CMP 的资源控制功能编排容器内资源利用率、优先级,并分配阈值;

2. 运营者需要与开发者合作,了解容器化应用的资源需求,适当设置约束,并监控性能挑战。

15.容器管理-数据备份与复制

在适用于数据备份和复制的容器管理中,建议采用以下措施应对挑战:

1. 运营者必须确保数据备份系统能够在容器内的任何新数据被销毁之前备份。

16.容器管理-不同容器管理平台主机间容器迁移

容器管理过程中,为了应对容器在主机间迁移这个挑战,并通过容器管理平台进行容器的主机重新托管,推荐按照以下步骤执行:

1. 作为拥有敏感数据的合法应用运营者,需要做一些工作来创建和管理实用工具,这些工具在主机迁移的过程中可以帮助自动导出或导入与容器有关的敏感数据。

17.容器加密

针对容器加密中存在的挑战提出的应对措施包括以下一些建议:

1. 开发者和运营者应同意使用标准的、通用的鉴权系统;

2. 开发者需要确定他们将使用哪些静态数据(DAR)解决方案,并考虑该解决方案是否经过公正的第三方验证,以及该解决方案在预期的操作环境中是否操作;

3. 对于敏感应用程序,开发者应该加密敏感应用程序,然后通过解密创建容器入口点应用程序,并执行主应用程序。

总结

安全是一个整体,应用安全与基础设施安全是相互影响的。因此,为了实现安全应用容器架构,须对应用本身及其依托的基础设施进行综合的考虑与实践。该报告的内容也能体现共同承担安全责任、安全左移、纵深防御等方面的云原生安全策略。希望读者朋友在阅毕后可对安全应用容器架构有更为清晰的理解,能更快、更好地开展应用实践。


文章来源: https://www.freebuf.com/articles/network/357723.html
如有侵权请联系:admin#unsafe.sh