一文讲透丨如何破解安全应用容器架构的17大挑战!

news2025/2/27 13:57:56

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

国际云安全联盟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. 对于敏感应用程序,开发者应该加密敏感应用程序,然后通过解密创建容器入口点应用程序,并执行主应用程序。

总结

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/347301.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Keras深度学习实战——使用深度Q学习进行SpaceInvaders游戏

Keras深度学习实战——使用深度Q学习进行SpaceInvaders游戏 0. 前言1. 问题与模型分析2. 使用深度 Q 学习进行 SpaceInvaders 游戏相关链接0. 前言 在《深度Q学习算法详解》一节中,我们使用了深度 Q 学习来进行 Cart-Pole 游戏。在本节中,我们将利用深度Q学习来玩“太空侵略…

CHAPTER 2 Zabbix界面操作

Zabbix界面操作2.1 Zabbix界面操作1.zabbix的web界面安装2.添加监控信息3.查看监控内容4.查看图像2.2 自定义监控与监控报警1.自定义监控1.1 说明1.2 预备知识2.实现自定义监控2.1 自定义语法2.2 agent注册2.3 在server端注册(web操作)2.4 查看监控图形2.3 监控报警1.第三方报警…

hive实现oracle merge into matched and not matched

create database cc_test; use cc_test; table1 可以理解为记录学生最好成绩的表。 table2可以理解为每次学生的考试成绩。 我们要始终更新table1的数据 create table table1 (id string ,maxScore string );create table table2 (id string ,score string );insert into table…

用于汽车传感器的混合点云语义压缩:性能评估

Hybrid Point Cloud Semantic Compression for Automotive Sensors: A Performance Evaluation https://arxiv.org/pdf/2103.03819.pdf 在自动驾驶中,车辆与车辆之间的信息共享起着重要作用。在所有传感器中,激光雷达产生的3D点云的数据量通常较高。因…

设计模式实践示例

以下是我针对自己所掌握的知识出的设计模式题目,有不足的地方欢迎指摘。 一、设计模式原则 设计模式原则有哪些? 1.开闭原则:对扩展开放,对修改关闭 2.接口隔离原则:每个接口只完成单独业务的部分,不要将…

设计模式之工厂模式(C++)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、工厂模式是什么? 工厂模式是一种创建型的软件设计模式。定义一个用于创建对象的工厂接口,并让工厂子类…

MybatisPlus------application文件配置新增SQL打印以及测试类编写(二)

MybatisPlus------application文件配置新增SQL语句打印以及测试类编写 增加日志打印,具体打印执行的SQL语句。 操作: 只需在application配置文件中增加如下配置: mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout…

快递员配送手机卡,要求当面激活有“猫腻”吗?

咨询:快递员配送手机卡,要求当面激活有“猫腻”吗?有些朋友可能在网上看到了一些关于快递小哥激活会采集信息的文章,所以觉得让快递小哥激活流量卡并不安全,其实,哪有这么多的套路,只要你自己在…

一文看懂Java语言与Java生态圈

Java语言与Java生态圈 1、Oracle JDK与Open JDK之间的关系 Oracle JDK Java最早是由SUN公司发明,Oracle JDK之前叫SUN JDK,显而易见,这是在2009年Oracle收购SUN公司之前,收购之后被名为Oracle JDK,实际上&#xff0…

【图文教程】笔记本总是自动关机怎么办?win11自动关机问题解决方案

使用场景及环境: 日常使用,代码、文档使用。 系统:win11、win10、win8、win7笔记本都可通用 笔记本:联想ThinkPad E450 笔记本相关性能参数 设备名称 XXX 处理器 Intel Core™ i3-8145U CPU 2.10GHz 2.30 GHz 机带 RAM 8.00 GB (…

JavaEE——MyBatis的简单介绍和使用

MyBatis是什么 MyBatis是一个支持普通SQL查询,存储过程以及高级映射的持久层框架,他消除了几乎所有的JDBC代码和参数的手动设置以及对结果集的检索,使用简单的XML或注解进行配置和原始映射,将接口和Java的POJO映射成数据库中的记…

StarUML画流程图

1. 前言 工作中,在写文档总结时,对于需求的理解总有一个重要的环节,那就是画流程图,Ubuntu下我推荐使用StartUML 来画,嘎嘎好用,如果不知道这个工具,请参考笔者这篇文章下载安装: U…

关于springboot读取配置类,使用@Autowired自动注入为null的问题

问题 之前写了一个配置类,读取config.yml配置文件里写好的阿里云oss的一些参数配置。配置类读取并无问题,但是在另一个普通类里自动注入该配置类时,引用配置类属性却报NullPointer异常。然后终于发现问题原因了。 代码 1. 配置文件 appli…

GeoTools:Shapefile创建

在上一篇文章《GeoTools:Feature&Shapefile之CRUD操作》中,介绍了基于GeoTools的Shapefile文件CRUD基本操作,那么,能否使用GeoTools创建Shapefile文件呢?答案是可以的。以下,我们将深入讨论如何实现。 …

零基础机器学习做游戏辅助第十二课--原神自动钓鱼(二)

一、模拟训练环境 上节课我们已经能够判断人物的钓鱼状态,接下来我们就需要对鱼儿上钩后的那个受力框进行DQN训练。 方案有两个: 使用卷积神经网络直接输入图像对网络进行训练。使用普通网络,自己写代码模拟出图像中三个点的动态并把值给神经网络进行训练。这里我们选用第二…

IB数学课程有哪些异同?如何选课?

自从IBDP在2019年进行数学课程改革后,许多IB小伙伴们就不知该如何选课了……改革后的IB数学课程包括4门课程,也就是:● Mathematics: analysis and approaches SL & HL (first assessment 2021)● Mathematics: applications and interpr…

科技云报道:“吞金兽”ChatGPT背后:AI算力告急!

科技云报道原创。 近两个月来,全世界的网友们都在兴致勃勃的“调教”ChatGPT,但第一个受不了的却是ChatGPT的所有者。 为了更长远的发展,OpenAI宣布了付费订阅版ChatGPT Plus,每月收费20美元。 虽然OpenAI表示,将持…

Monorepo or 物料市场?结合工作实际情况对公司现有前端体系的思考

前言 去年年中基于若依vue前端框架进行了改造,加上后端的配合,我写了一套脚手架和项目中后台模板。中后台模板中包含了许多基础代码,比如登录/注册、路由、权限等等相关功能。这个中后台模板是基于我们实际开发定制的,所以跟通用…

SpringBoot——配置文件

项目中有许多公共使用的变量,例如端口号,连接数据库的配置,还有我们自己创建的变量,这些可以放到SpringBoot的配置文件中统一调配使用 properties 基本语法格式: keyvalue例如配置项目的端口号为8888: …

Bean注入到Spring方式

扒一扒Bean注入到Spring的那些姿势 配置文件的方式就是以外部化的配置方式来声明Spring Bean,在Spring容器启动时指定配置文件。配置文件方式现在用的不多了,但是为了文章的完整性和连续性,这里我还是列出来了,知道的小伙伴可以自…