共计 5599 个字符,预计需要花费 14 分钟才能阅读完成。
前言
前一篇文章中,咱们简要剖析了对于重大安全漏洞,在云原生架构下该如何疾速进行应急和修复,以及云原生架构对于这种平安应急所带来的挑战和劣势。事件过后咱们须要痛定思痛,零碎的来思考下,面对云原生架构如何进行无效的平安建设和平安经营,使得咱们在安全事件的处理上能够做到熟能生巧。
腾讯云容器服务 TKE 目前领有国内最大规模的 Kubernetes 集群,运行了包含游戏、领取、直播、金融等多个利用场景。而集群的稳固运行离不开平安能力的保驾护航,腾讯云容器平安服务 TCSS 把握了业内最前沿的云原生平安视角,为 TKE 的平安治理提供继续领导并积淀了丰盛的思考和最佳实际。
本文将联合咱们的平安建设和平安经营实际,零碎的分享咱们对于云原生架构下平安建设和平安经营的思考。
云原生架构下的平安建设与平安经营
平安经营是指标,平安能力是伎俩。平安能力的建设与平安经营有着严密的关系,平安能力建设是平安经营的根底,巧妇难为无米之炊,更好的平安能力建设能够使平安经营更加顺畅,同样平安经营也能给平安能力建设提供更好的输出和反馈,使平安检测和防护能力更加精准。
云原生架构下的平安能力建设和经营,其实是一个很大的命题,限于篇幅本文不会齐全笼罩。本文次要围绕 log4j2 破绽这个典型场景,从平安经营的视角,剖析平安能力建设的必选项。
传统的平安能力建设必不可少
首先须要阐明的是,不论是咱们当初讲的容器平安,还是云原生平安,都是一个绝对广义的概念,通常只蕴含了云原生架构下特有平安危险的检测与防护。从平安危险角度来看,咱们也始终强调,云原生架构下的平安危险是一个增量,因而在整体的平安建设上,肯定是个纵深进攻的体系,不是某个产品单打独斗所能实现的。
例如南北向流量出入口的 WAF、防火墙、抗 D 等,如果咱们的云原生是建设在 IaaS 根底之上的,那么 VPC、甚至是 underlay 层面的网络分级分域的隔离和入侵检测,这些都是云原生平安建设的根底。
在这次 log4j2 破绽的应急处理中,咱们也发现,即便是容器环境,通过降级 WAF 规定、更新防火墙出站策略等形式,也能在第一工夫实现肯定水平的破绽缓解和阻断。
腾讯云在 2021 年 11 月公布的《腾讯云容器平安白皮书》中,也提出了层次化的容器平安体系框架,其中很重要的一部分就是根底平安,这里的根底平安就是包含了原有的数据中心平安以及云平安建设所笼罩的内容。
平安经营驱动平安能力建设
对于体系化的平安建设和平安经营,一些技术组织以及标准化组织,也提出过相干的规范框架,这些框架对于咱们在平安建设上,都有着重要的领导和参考意义,这里咱们以 NIST 提出的网络安全框架 为例来作为咱们云原生平安建设的参考。
参考 NIST 网络安全框架,咱们同样将云原生平安建设划分为五个并行并且间断的步骤,别离是辨认、防护、检测、响应和复原。
平安辨认
(1)集群资产辨认
平安辨认最次要是体现在资产辨认上。这里的资产既包含 cluster、node、namespace、pod、service、container 等 Kubernetes 资源层面的资产,同样还包含镜像仓库、容器镜像等维度的利用资产信息。
云原生架构下,除了根本的资产辨认盘点之外,还须要可能发现这些资产之间潜在的资源和业务之间的逻辑关系。这样一旦检测到某个镜像蕴含新的破绽,或者检测到相应的入侵行为,须要可能疾速进行所有资产和人员的自动化关联定位,发现影响范畴,以及定位平安责任人,进而疾速进行处理。
(2)自建容器辨认
除了对于规范集群层面的资产具备上述辨认能力外,对于研发零碎等绝对简单的环境同样须要有肯定的适配能力。例如,在研发环境中,除了规范集群层面的资产外,还会呈现自建的资产,例如用户用 Docker run 等命令间接拉起运行的容器。
(3)业务危险辨认
从平安经营角度看,平安辨认还体现在业务危险辨认上。咱们须要对集群、利用进行清晰的平安危险级别划分,对于高风险利用,须要采纳更高级别的安全策略。例如,对于外围业务零碎,要有严格的网络隔离以及访问控制机制,对于间接裸露进来的服务,在容器维度要有更加严格的权限管制等。
平安防护
具备资产以及业务危险信息后,接下来就须要依赖根本的平安防护能力,实现对已知威逼的平安防护。这里的平安防护次要包含两个方面:
(1)零碎加固
• 配置检测与修复
零碎加固堪称是个陈词滥调的话题了,尤其是配置查看与平安配置加固,然而在云原生架构下,这一点是尤为重要的。因为从容器的设计理念来看,其与操作系统共享内核,给了容器用户更大的可操作空间,因而,配置的平安与否将在很大水平上影响着整个零碎的安全性。
从前文的容器环境次要入侵门路能够看出,通过主机攻打容器是其中重要的一种门路,例如通过 Docker Remote API。因而平安能力须要包含全面的配置查看。
配置加固尽管说起来是个老问题,然而在云原生环境中,真正实现残缺的平安能力还是比较复杂,这既包含 Kubernetes、Docker、Istio 等根底平台与组件的加固,还包含镜像内应用软件的配置加固,这个做起来就更简单一些。咱们在这里就不再开展。
从平安经营角度看,咱们须要可能依据配置查看失去的信息,将根本的配置进行安全性加固。同时一个重要的点就是,平安配置与业务稳固运行之间的均衡,一方面须要保障充沛实现了安全性,另一方面就是不会对业务的可用性和稳定性造成影响。这就须要在配置加固的同时,联合业务个性与平安配置要求,灵便对配置策略进行调整,这将会是一个继续的修改和欠缺的过程。
• 破绽检测与修复
已知破绽修复同样是个古老的话题,包含主机层面的破绽和镜像的破绽,对于检测进去的破绽,须要依据破绽的威逼等级以及利用难易水平等信息,确定是否须要修复以及修复的优先级。
• 镜像平安评估与修复
容器镜像作为云原生利用的源头,除了破绽之外,还须要进行更多维度的安全性评估。例如至多须要蕴含以下几个方面:镜像内敏感信息的检测,确保不会产生敏感信息泄露;镜像中病毒木马等歹意文件检测,这次要针对不确定起源的公开镜像;镜像构建的合规性检测,比方 COPY 和 ADD 的应用区别等。
除了针对上述镜像危险的检测和修复之外,在平安经营上还须要思考对僵尸镜像清理,这既包含对镜像仓库的清理,也包含对集群 node 节点的清理,这对于减小攻击面有着重要的作用。
同时,针对不同镜像须要反对自定义的检测规定,不同的组织用户或者不同类型业务的镜像,对平安的要求是不一样的,因而在镜像的平安评估上,除了基于一套通用的检测评估规定之外,还须要反对用户的自定义规定,这样能够联合前文的业务危险辨认,针对不同的镜像,灵便采纳不同的平安规定。
• 风险管理
在经营治理上,针对上述提及的配置、破绽等危险信息,须要有一套欠缺的闭环风险管理流程,确保齐全实现了危险的辨认、修复以及确认。
(2)平安防护
除了零碎加固外,在平安防护阶段,还应该在不同层面,针对已知可能产生的入侵危险,通过相干的防护能力和防护策略进行攻打的预防。
• 准入管制
准入管制顾名思义就是在云原生利用的全生命周期流程中,依据平安的要求,在不同的阶段进行管制和阻断,进而实现安全性的指标,这也是 DevSecOps 的一项根本要求。云原生架构凭借其灵便的资源管理与自动化的利用编排,给安全性的管制提供了充沛的便当。准入管制的价值,一方面体现在平安危险的预防上,另一方面,一旦 log4j 等重大 0day 暴发后,能够通过准入管制,疾速管制影响面,避免危险新增。
从生命周期流程看,准入管制须要别离从研发(dev)和运行时 (ops) 两个阶段来施行。研发阶段的准入次要指在 CI、入库等阶段,进行破绽、敏感信息之类的平安危险的检测,只有合乎平安要求后,才容许进入流水线的下一个阶段。这里的准入条件通常须要涵盖前文讲的各种加固内容。
运行时的准入管制,则次要体现在利用被部署运行的阶段,只有合乎平安要求的容器 /pod,才容许被拉起运行,这里的准入条件通常包含对资源限度的检测、对 syscall/capability 等权限限度的检测等。
同样,从经营的角度看,准入管制规定除了规范默认的之外,还须要可能依据利用进行灵便则调整和欠缺。
• 运行时拦挡
云原生架构下的容器内,承载的是微服务利用,因而实践上是不应该具备高权限指令的执行,这一点咱们在准入管制尽管做了肯定水平的预防。这里咱们基于运行时平安能力,还须要实现对容器内高危操作的拦挡,例如高危命令、高危零碎调用等,在不同维度实现平安的纵深进攻。
• 网络隔离
横向扩大是攻击者在实现第一步攻打之后的操作,也能够称为后浸透阶段。在云原生网络的设计中,通常默认是不具备任何网络隔离能力的,因而,须要设置并实现一套欠缺的网络隔离机制,实现不同业务之间的网络隔离。
云原生架构下的网络组织状态,区别于传统的基于主机或者虚拟机的网络,在 Kubernetes 中,网络的最小单位是 Pod,而 Pod 中承载的是业务容器。因而,在实现网络隔离的时候,传统的基于 IP、端口的网络策略将不再实用,咱们须要基于 label、service 等资源,实现不同粒度的网络隔离。
• 防护策略管理
在经营过程中,如何设置准入管制、操作拦挡、网络隔离等策略,这是一个令人头疼的问题,因为无论是平安管理员、运维管理员,甚至是开发人员,都很难齐全讲得分明这些规定该如何配置,能力实现绝对最平安的状态。
这是云原生架构下平安经营的一个挑战,同时云原生架构自身也提供应答这种挑战的劣势。前文提到云原生架构的一个重要个性就是不可变的基础设施,这就意味着,咱们能够通过白名单、行为模型等形式,基于业务个性以及历史运行数据,自动化的学习生成一套平安基线,这个平安基线将成为各种防护策略配置的重要参考。
平安检测
平安永远是一个攻防博弈的过程,而防守方往往处于绝对劣势的位置,甚至能够说没有攻不破的零碎。
在云原生架构下,业务变得越来越凋谢和简单,攻击者的伎俩越来越多样化,前文所述的进攻拦挡措施,总是难以应答所有的威逼,有些高级定向攻打或者是像针对 log4j2 这种 0day 破绽的攻打,总是能够轻易的绕过各种进攻伎俩,让平安威逼防不胜防。
因而,在实现了上述所有的进攻拦挡措施之后,还须要继续的对云原生零碎进行运行时监测以及平安检测。基于云原生架构的个性,这里将平安检测分为两个维度来进行。
1)零碎维度的威逼检测
次要针对容器内的行为来进行,比方容器内过程异样的检测、文件异样的检测、用户异样的检测等,通过这些细粒度的异样检测,发现诸如提权、挖矿等攻击行为。
网络维度的威逼检测。次要面向的是后浸透阶段的横向挪动,尽管咱们在防护阶段曾经设置了严格的拜访控制策略,然而在网络可达范畴内的横向挪动攻打,依然会带来重要的平安威逼。网络威逼检测次要分为两个方面:一方面是从网络行为的角度,基于 Flow 实现网络流量尤其是东西向流量的异样检测,这对于端口探测、APT 攻打,甚至是新型的网络威逼或者高级的网络威逼等检测将会起到重要的帮忙(NDR);另一方面就是从数据包的角度,剖析容器之间网络的数据包异样,实现容器网络的入侵检测(NIDS)。
2)利用维度的威逼检测
同样面向是后浸透阶段的横向挪动,云原生时代利用的微服务架构使得容器间的网络通信会存在大量的 API 调用,确保所有这些 API 之间调用都是平安的,对于云原生利用的平安有着重要的意义。例如,在已攻陷的容器中,通过 API 的形式获取其余服务的数据、或者是通过结构歹意的参数实现对关联服务的攻打。因而,须要在利用的维度实现对 API 调用异样的检测,比方调用行为、调用门路、调用参数等。
平安响应
平安响应次要是针对前一个步骤的平安检测告警所做出的处理措施。在云原生架构下的平安响应,尤其是网络安全层面的平安响应,咱们更偏向于应用旁路检测响应处理这样的操作步骤,而不是像传统网络安全中串联接入 IPS、WAF 这种间接阻断式的检测响应,这样的设计次要是从业务性能的角度登程。
威逼的响应次要也是包含两个方面:
(1)处理
通过网络隔离、暂停容器、进行异样过程、销毁容器等形式,实现对告警的响应处理。这里有一个前提,就是在平安能力的建设过程中,鉴于容器的短生命周期个性,须要实现欠缺的日志和追踪记录,以便实现处理后的溯源取证。
处理的过程中,对于某些确定性异样,能够通过一键阻断、一键隔离等形式,实现处理操作的自动化,以升高经营老本。
(2)溯源
依据容器的告警、日志、追踪等数据以及数据间的关联剖析,实现对告警的溯源剖析,明确攻打链路,确定入侵起因。
平安修复
在平安修复阶段次要包含两个方面的内容:一方面就是针对入侵起因,对相干危险进行加固性修复;另一方面,就是从加固、防护、检测等步骤,别离更新相干的安全策略,实现经营反馈。
总结
Log4j2 破绽曾经过来了一个多月,置信很多该打的补丁都曾经修复结束,这次突发的应急事件,是否让咱们须要从新思考云原生架构下的平安建设和平安经营。破绽或者入侵很难预测,不晓得下一次什么时候还会产生,痛定思痛,到那时咱们是否能够从容应对。
心愿本文的思考能给云原生平安建设带来一些思路和帮忙,如有任何倡议或疑难,欢送文末留言。
对于咱们
即刻关注【腾讯云原生】公众号,回复“虎虎生威”,支付腾讯定制红包封面~
福利:
①公众号后盾回复【手册】,可取得《腾讯云原生路线图手册》&《腾讯云原生最佳实际》~
②公众号后盾回复【系列】,可取得《15 个系列 100+ 篇超实用云原生原创干货合集》,蕴含 Kubernetes 降本增效、K8s 性能优化实际、最佳实际等系列。
③公众号后盾回复【白皮书】,可取得《腾讯云容器平安白皮书》&《降本之源 - 云原生老本治理白皮书 v1.0》
③公众号后盾回复【光速入门】,可取得腾讯腾讯云专家 5 万字精髓教程,光速入门 Prometheus 和 Grafana。
【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!