NCC Group技术Leader:怎样提高Docker与微服务的安全

2024-02-08 22:20

本文主要是介绍NCC Group技术Leader:怎样提高Docker与微服务的安全,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

译者 周元昊

Aaron Grattafiori在美国西雅图举办的DockerCon 2016上发表了“金色门票:Docker与高安全性的微服务”的演讲。其中主要对运行基于容器的安全微服务方案建议:启用用户命名空间、配置应用特定的AppArmor、SELinux及seccomp白名单、加固宿主系统(包括运行一个满足要求的最小操作系统)、限制宿主机的访问以及考虑加入网络安全策略。

身为NCC Group的技术负责人以及《理解及加固Linux容器(PDF)》的作者,Grattafiori以全面防御原则的介绍开启了他的演讲,这个原则是由分层的防御措施,并通过减少攻击面,加固剩余的攻击面组成。虽然微服务会增加系统架构的总体复杂度(特别是针对伸缩性方面),但相对一个典型的整体应用,微服务对避免单点安全故障是有一定优势的。

最小权限原则对于系统安全极为重要,比如避免使用root权限运行应用。一个整体的应用往往使用单一的流程来提供大部分的功能,这使得它很难应用这个原则。最小意外原则——“合理的默认值,基于信任的隔离”——以及最小访问原则也对全面防御起着至关重要的作用。Grattafiori指出这些原则的共同点是“最小”,这能防止过度性和复杂性,并能让系统构筑师:

1.建立信任边界  
2.识别、最小化及加固攻击面  
3.降低作用域和访问权限  
4.分层的保护与防御

整体应用安全(AppSec)的好处包括其构建和维护的易于理解及“已知的已知”。这种架构往往相对简单,并且在开发、业务、合规等过程中通常有着根深蒂固的现有习惯(及相关责任分工)。整体应用安全的劣势包括向单点的妥协,往往也意味着对整个应用及网络的妥协、全局的认证需求以及安全机制往往很难协调。

微服务应用安全的好处包括:

  • 广为接受的Unix单一职责原则;

  • 普遍减少的公开暴露的攻击面;

  • 服务可以被单独打补丁;

  • 应用(和相关的运行时容器)更方便地应用最小权限和适应服务特性的安全机制;

  • 更方便地建立可信计算基(TCB)。

相应地,劣势包含:

  • 微服务安全是一种“已知的未知”;

  • 成功的维护会需要习惯上的改变(如DevOps和DevOpsSec);

  • 需要对整个系统的功能有一个很好的理解;

  • 遗留项目很难适用;

  • 复杂性(伸缩性方面)带来的不安全。

Grattafiori接下来深入分析了微服务系统各个区域的安全影响,首先是在网络安全方面。虽然大部分软件系统在OSI模型7层(应用层)提供身份认证,这点常被争论为只能提供有限的优势,最好是通过在4/5层的TLS来实现,如果需要额外的网络安全那么可以实现3层的IPSEC。

许多组织使用Linux容器如Docker、rkt或LXC来包装微服务,这两者之间在安全方面有明显的相似之处:

0?wx_fmt=jpeg

减少应用和容器的威胁模型攻击树很有必要。这包括通过利用防御性代码和容器安全(如能力(capabilities)、用户命名空间、只读根文件目录(rootfs)、不可变文件、mount标记(mount flags)和强制访问控制(MAC))来限制由应用弱点所造成的危害。

容器逃逸所造成的伤害可以被用户命名空间限制,它可以让容器中的root用户对应到容器外的非root(uid-0)用户。虽然Docker守护进程支持Docker 1.10用户命名空间,但是默认是没有开启的。seccomp、kernel加固和MAC可以限制kernel和syscall的调用。受限的kernel或主机操作所造成的破坏能进一步被网络加固、信任隔离、最低权限、最小访问、日志和报警所限制。

Grattafiori表示容器安全始于宿主机的操作系统,并极力推荐使用最小的Linux发行版如CoreOS、alpine Linux、Project Atomic或RancherOS。对操作员来说理解发行版如何升级、二进制包编译、默认安全配置(如MAC)和默认kernel参数及sysctl配置也是非常重要的。

容器镜像也应该保持最小化,典型的如“FROM debian:jessie”或“FROM debian:wheezy”来创建镜像。然而这可能还不够小,就算在用apt-get安装应用所需软件之前,已有许多应用用不到的类库、可执行文件和语言文件,这意味着更多的补丁、更多的磁盘空间、更多的攻击面以及更多的攻击方法。

演讲中演示了使用Docker和runC来构建最小容器的例子,以及几个使用scratch容器来运行静态编译的二进制程序(如Golang构建的应用)。

0?wx_fmt=jpeg

Grattafiori强烈建议使用强制访问控制(MAC),从操作系统角度应用最小访问原则。MAC引用一种操作系统限制主体(特别是进程或线程)访问或操作对象(如文件、TCP/UDP端口、共享内存段)的访问控制。MAC作为一种Linux安全组件(LSM)是由AppArmor和SELinux(还推荐使用grsecurity,它内部包含了一套MAC解决方案,是一组强调安全增强的Linux kernel补丁)实现的。在Mac OSX上MAC通过TrustedBSD实现,微软平台有强制完整性控制(MIC)。

默认的Docker AppArmor策略已经非常好了,但是鉴于这个策略是通用的,它一定包含了大量的文件、权限授权和复杂性。微服务更适合使用自定义安全描述文件的实践。基于Docker的应用的自定义AppArmor的描述文件可以通过aa-genprof或Jessie Frazelle的Bane项目来生成。然而这需要分析目标应用(因为需要理解和使用这个应用)、常见错误如提供过多权限、通配符的使用和基于路径的访问控制列表(ACLs)。

Grattafiori提醒应该避免使用AppArmor的拒绝列表(黑名单),因为它们只能提供有限的值。其他的易混淆的地方包括描述文件必须先被AppArmor加载,在描述文件中太过大量地运用抽象,这导致很难在生产环境中充分验证所有的功能是有效的(虽然单元测试和回归测试会有帮助)。

虽然MAC很有价值,但是它还是无法避免kernel攻击,不巧kernel攻击的攻击面是巨大的。“安全计算模式(seccomp)”是一个计算机安全设备,它在Linux kernel提供应用的沙箱机制(虽然seccomp本质上不是沙箱)。seccomp允许进程单向转变进入“安全”态,在其中只能对已经打开的文件描述符使用exit、sigreturn、read、write这些系统调用。如果它尝试其他的系统调用,kernel会使用SIGKILL终止进程。seccomp-bpf是seccomp的一个扩展,它使用伯克利封包过滤器允许使用一个配置的策略来过滤系统调用。

0?wx_fmt=jpeg

Docker引擎1.10后seccomp默认过滤器默认启用,但是由于通用需求,内部启用了304个系统调用(占所有系统调用大约75%)。最小权限原则建议微服务应用只应该拥有最小的系统调用集,相应地可以创建自定义描述文件。创建seccomp描述文件的方法包括strace/ltrace、kernel帮助(sysdig或systemtap)、auditd/auditctl或seccomp自己通过SECCOMPRETTRACE和PTRACEOTRACESECCOMP。在Docker中可以通过使用“–security-opt seccomp=”标记来指定自定义的seccomp描述文件。Grattafiori强调seccomp配置文件是对架构依赖的,所以会限制移植性。

Grattafiori开始总结演讲时,陈述了运行安全的基于Docker的微服务的高层次建议:

  • 启用用户命名空间

  • 尽可能地使用应用特定的AppArmor或SELinux

  • 尽可能地使用应用特定的seccomp白名单

  • 加固宿主机系统

  • 限制宿主机访问权限

  • 考虑使用网络安全策略

  • 使用不可变的容器

管理构建和运行时秘钥(secrets)的问题可以通过临时绑定mount来进行临时秘钥注入,再加载秘钥到内存,然后unmount;或者理想地使用开源秘钥管理工具如HashiCorp Vault或Square Keywhiz。秘钥不应该通过环境变量或普通文件注入,因为这很容易导致秘钥泄露到容器层、日志或错误报告中。

最后的安全建议包括创建一个安全规格书、生成应用特定和全局的威胁模型、确保任何应用/服务的安全性、确保协调框架和相关服务发现的安全性。

如果应用自身是脆弱的,那么容器和微服务也无能为力

微服务的日志和可计量也很重要,日志应该被统一收集保存,并定期复审。如果把安全融入到软件的开发周期,同时使用OWASP的ZAP、bdd-security、Brakeman或gauntlt等工具将核实的过程作为标准构建链的一环,这样就更容易达成安全性目标了。

Grattafiori在DockerCon的视频“金色门票:Docker与高安全性的微服务”可以在YouTube的会议频道找到,幻灯片可以在Docker的SlideShare账号找到。Grattafiori也是NCC Group白皮书《理解及加固Linux容器(PDF)》的作者,这本书对每个正要详细理解容器安全的人是必不可少的。

号外:9月7日在北京国际饭店,AWS将邀请十余位海外技术专家带来深度技术分享和前沿趋势介绍。感兴趣的请点击阅读原文报名参会。

0?wx_fmt=jpeg

这篇关于NCC Group技术Leader:怎样提高Docker与微服务的安全的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/692370

相关文章

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

客户案例:安全海外中继助力知名家电企业化解海外通邮困境

1、客户背景 广东格兰仕集团有限公司(以下简称“格兰仕”),成立于1978年,是中国家电行业的领军企业之一。作为全球最大的微波炉生产基地,格兰仕拥有多项国际领先的家电制造技术,连续多年位列中国家电出口前列。格兰仕不仅注重业务的全球拓展,更重视业务流程的高效与顺畅,以确保在国际舞台上的竞争力。 2、需求痛点 随着格兰仕全球化战略的深入实施,其海外业务快速增长,电子邮件成为了关键的沟通工具。

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

2024网安周今日开幕,亚信安全亮相30城

2024年国家网络安全宣传周今天在广州拉开帷幕。今年网安周继续以“网络安全为人民,网络安全靠人民”为主题。2024年国家网络安全宣传周涵盖了1场开幕式、1场高峰论坛、5个重要活动、15场分论坛/座谈会/闭门会、6个主题日活动和网络安全“六进”活动。亚信安全出席2024年国家网络安全宣传周开幕式和主论坛,并将通过线下宣讲、创意科普、成果展示等多种形式,让广大民众看得懂、记得住安全知识,同时还

键盘快捷键:提高工作效率与电脑操作的利器

键盘快捷键:提高工作效率与电脑操作的利器 在数字化时代,键盘快捷键成为了提高工作效率和优化电脑操作的重要工具。无论是日常办公、图像编辑、编程开发,还是游戏娱乐,掌握键盘快捷键都能带来极大的便利。本文将详细介绍键盘快捷键的概念、重要性、以及在不同应用场景中的具体应用。 什么是键盘快捷键? 键盘快捷键,也称为热键或快捷键,是指通过按下键盘上的一组键来完成特定命令或操作的方式。这些快捷键通常涉及同

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时