shx
作者shx2022-09-06 15:38
开发工程师, 光大科技

如何保障云原生集群安全

字数 8638阅读 3429评论 0赞 4

本文为云原生应用创新实践联盟—— 容器云安全方向课题组线上交流活动总结,相关协作专家如下所示, 更多内容可点击此处进入云原生应用创新实践联盟 进行查看。

执笔专家:
孙洪轩 容器云安全用户委员会委员
云原生应用创新实践联盟—— 容器云安全方向课题组专家。 光大科技自动化专家,多年IT研发经验,近几年一直深耕区块链,云原生等前沿技术领域。先后为集团设计并建设了区块链云服务平台,容器云PaaS平台等中大型项目。具备丰富的软件架构设计,项目落地经验

顾问专家:
rechen 容器云安全用户委员会委员
twt社区云原生应用创新实践联盟——容器云安全方向课题组组长,某银行云计算架构师,当前从事银行私有云和公有云基础设施、以及混合云架构的建设,参与包括容器云等相关云服务的规划、技术选型、架构设计和实施,以及业务连续性等保障体系的建设工作。

陈建军 容器云安全用户委员会委员
云原生应用创新实践联盟—— 容器云安全方向课题组专家。 泰康保险集团的资深工程师,10年以上网络安全行业从业经验。拥有甲方乙方的工作经历,对传统IDC安全和混合云安全都有实践经验。擅长网络安全架构规划、落地建设和优化运营。

张立 容器云安全用户委员会委员
云原生应用创新实践联盟—— 容器云安全方向课题组专家。 现就职于某银行信息科技部系统管理中心,容器云平台技术负责人,负责行内容器云平台建设以及应用容器化改造规范制定。
( 更多参与专家可见下方具体内容)

随着容器化技术的不断成熟、在生产环境中落地的案例不断增多,越来越多的金融机构选择通过采用容器云做为基础设施的方式来进行数字化转型,提升科技服务响应速度和效率,提升行业竞争力。目前 Kubernetes 已是容器应用编排与管理的事实标准,金融行业因稳定性 和安全性要求的行业特点,在使用 Kubernetes 时需要部署多套集群,但是 Kubernetes 原生的管理能力目前仍然停留在单集群级别。采用传统的运维方式, 对多套集群的节点、网络、存储单独维护给运维人员带来了较大的工作量,而且 工作量随着集群的增加而增加,这给容器云的多集群大规模推广使用带来了一定 的影响,多集群的管理已成为了大规模使用容器云的一个常见痛点和迫切的需求。 因此很多企业都在使用容器云,都建设统一的容器云 paas 管理平台,实现统一 的多集群管理、集群高可用、应用编排、故障自动迁移等目标。

本期的容器集群安全探讨活动主要围绕:容器集群划分原则、容器集群安全分类以及如何进行规避、容器集群节点的安全是如何保障等等,具体交流总结如下:

1、容器云集群安全有哪些具体分类?每个安全分类下如何预防及解决?

容器云集群安全有哪些具体分类?每个安全分类下如何预防及解决?
如果预防后还是发生了,应急措施是什么?

嘉宾回复
rechen 云计算架构师 , 某银行
1 容器云安全可细分为:平台和基础设施安全、应用安全、运行安全三类。
--- 平台和基础设施安全:加固宿主机节点的主机安全、容器引擎的技术安全、容器集群各组件的技术安全、容器平台的访问管控安全。
--- 应用安全:解决镜像仓库安全、应用系统的镜像安全问题
--- 运行安全:解决基于安全闭环的合规审计。运行态的南北流量中的入侵检测、入侵拦截等安全防护问题,以及东西流量中的网络微隔离和网络阻断安全问题。 还需要在检测和监控中提供资产管理,补丁管理,提供统一日志、监控、可视化、故障定位等支持能力。

2 在预防后还是发生问题时,应急措施可以分问题场景,譬如对南北流量做入侵拦截,在东西流量中做网络阻断。对业务应用系统CVE漏洞进行镜像安全补丁加固升级或运行降级。对集群进行CI S审计和安全加固处理。

嘉宾解答:shx 开发工程师 , 光大科技
容器云集群安全涉及到的层面较多,覆盖的范围较广,自下而上梳理主要有以下几点:
<1>基础设施资源安全。基础设施资源主要涉及到网络安全和存储安全,容器云平台要能够灵活的定义各种网络策略,对pod的流量进行限制,隔离。同时容器的数据不能放在容器内的存储上,包括日志数据。数据要及时采集备份到外部的数据中心。数据中心要有完善的安全措施。
<2>基础组件安全。容器云平台需要实现统一认证中心和权限中心等基础组件,这是建立企业级微服务平台和微服务生态系统的要求,也是实现单点登录、基于角色的权限管理、授权认证、访问控制等安全能力的要求。
<3>容器安全。作为使用k8s的开发或者运维人员,主要关注点应该是如何防止在容器中运行的进程逃离容器的隔离边界并获得对宿主机的访问权限,应尽可能避免使用以特权身份(privileged)运行Pod,同时为每个容器设置请求和资源限制,避免资源争夺或DoS攻击。
<4>镜像安全。容器是镜像的运行时,镜像安全直接影响着容器的安全。如果镜像存在安全隐患,容器云平台就面临着威胁。所以镜像仓库的镜像安全扫描能力就显得尤为重要。容器云集群要具备完善的漏洞扫描修补机制。
<5>devops流程安全。持续集成代码安全,包括安全的代码存储,编码的安全,预防编码中潜在的漏洞和Sql注入等。实现自动的代码质量检查和代码漏洞检查,自动化测试等能力。同时,devops流程中一些关键的环节,比如生产环境部署要建立审批机制。
<6>日志和审计能力。在容器云集群中,建立完备的日志审计能力,可以帮助集群管理人员记录或追溯不同用户的日常操作,发现异常操作及时告警,及时处理,是集群安全运维中重要的环节。

2、关于容器云上集群划分原则?

请教各位专家个关于容器云的问题,容器云上的集群划分都是依据的什么原则?是一个大集群还是按业务系统的业务连续性级别或者按系统进行划分的?或者其他原则?欢迎大家交流经验

嘉宾回复

actor168 研发工程师 , 中国联通软件研究院
就企业的实践来看,容器云集群建议按照系统的规模和业务连续性级别划分。
针对于业务连续性较强的集群,单独建立集群,并由上一级的管理平台进行管理;
针对于小规模、业务连续性要求不高的集群,直接混合部署至一个集群即可,按照集群本身的隔离原则和隔离能力,实现划分。
对于我们而言,在设计云平台时考虑到多租户的实现,多租的实现方式有基于逻辑的隔离、基于物理的隔离。我们实现的高密度集群管理,即可以基于单个主机部署多套K8S(基于虚拟网络、虚拟存储)实现了小集群的自治和大集群的统管,这样减少了整体大量小集群的管理、运维工作,是一种不错的体验,但会增加一部分的资源占用。主要考虑各个租户对于隔离性的要求,选择合适方案即可。

dean25 软件架构设计师 , 民生银行
如果是共享计算节点的集群,建议按照计算类型和内存使用类型做区分。绝大部分应用都可以共享集群节点,但是一些计算或者网络I/O非常密集型的应用(如ES,Spark),建议还是用单独集群承载。此外,对于网络模型有特殊要求,需要使用宿主机本地存储的,建议也用独立的集群或者节点承载。

不同重要级别的应用共用集群,要做好准入控制,避免一些低级别应用的问题影响到节点的状态,对同节点上的高级别应用产生影响。

nameless 技术总监
1、根据自己的业务需求,如果对业务隔离性、性能要求没那么高,可以所有业务在同一个k8s集群,不同namespace;
2、如果业务有强制隔离需求,如金融行业,不同分区强制物理隔离,那只能在不同的环境部署k8s集群;
3、如果业务仅对性能有不同需求,可以根据不同的业务属性,部署同一套k8s集群,只是work节点根据不同的硬件配置分区管理。

lych370 系统运维工程师 , 某公司
除去k8s的管理集群,剩下的节点一般都用来做业务集群,为不同的应用或系统分配不同的资源,绑定不同的名称空间,容器天生就是集群模式,又不是集群,只能说逻辑上集群,物理位置上相对打散,保持集群或者容器的高可用性

rechen 云计算架构师 , 某银行
银行容器云的规划中,集群划分依据2个原则:(1)满足监管要求,匹配基础设施的规划,譬如两网隔离下的生产环境、开发测试环境,需单独搭建不同的集群。生产环境中的安全要求下,DMZ区和BIZ内区也需单独搭建不同的集群。 (2)根据不同的平台类型的隔离要求,搭建不同的集群,譬如Serverless平台、总行应用平台和分行应用平台、信创应用平台也是单独搭建不同的集群。

3、企业如果不做容器云集群安全会带来哪些具体危害?出现的具体症状是什么?

嘉宾回复

shx 开发工程师 , 光大科技
任何事物都有两面性,容器云集群也不例外;它虽然实现了运维自动化,极大的提高了研发运营的效率,但是容器云集群包含了很多层级和组件,它比其他基础平台更接近业务,这就带来了更多的风险点。容器云安全涉及到的范围很广,很复杂,是信息安全中的新兴领域,类似于网络安全的拓展。如果不做容器云集群安全,带来的风险是显而易见的。下面我列举一些常见的风险:
<1>软件安全层面风险。容器云集群如果没有建立完善的容器镜像安全扫描,漏洞检测等机制,很容易造成恶意镜像启动,病毒入侵等。黑客可以轻松利用应用层的漏洞入侵容器,并在容器中进行后续的渗透和横向传播行为,造成难以估量的损失。
<2>通信安全层面风险。容器编排引擎k8s的apiserver是整个容器平台的入口,任何用户和程序对集群资源的增删改查操作都要通过apiserver实现。如果api-server没有完备的安全认证机制和信息加密手段,攻击者一旦找到漏洞,无需认证就可以访问到容器数据,恶意删改数据,从而造成敏感信息泄露,甚至瘫痪整个集群。
<3>网络安全层面风险。企业在构建容器云集群的时候要考虑增强网络访问控制,提升网络安全。如果采用默认的网络模型,比如flannel,这种扁平化的网络,在横向网络访问隔离方面缺少必要的安全保障,一旦某个节点被攻破,黑客很容易通过横向渗透瘫痪整个集群的业务。

4、容器集群是如何建设审计能力的,集群管理员可以轻松的分析集群的安全风险,并采取应对策略?

容器集群是如何建设审计能力的,通过高效的审计工具,集群管理员可以轻松的分析集群的安全风险,并采取应对策略;

嘉宾回复

nameless 技术总监
一般分为平台和业务安全风险;
平台审计主要是平台操作记录,用于审计;
业务安全风险包括镜像安全(静态和运行态)、服务安全等,国内大厂一般都有镜像安全方案,一些初创公司也有。

shx 开发工程师 , 光大科技
容器集群的审计是通过采集相关的审计日志来建设的,审计日志主要来源于k8s集群中的api-server,部署节点,以及重要敏感的云上业务等。 审计日志可以帮助集群管理人员记录或追溯不同用户的日常操作,是集群安全运维中重要的环节。
基于采集的审计日志,要开发审计报表功能,审计报表主要内容可以包含以下几方面:

  1. 各类资源的详细操作;
  2. 用户和组件对集群执行的操作;
  3. 重要或者敏感业务的详细操作;
  4. 重要操作(登录容器、访问保密字典、删除资源等)的详细列表 ;
  5. 非法的,有安全隐患的网络资源请求记录等;

choukongbai 系统架构师 , test
基于您的问题:我会分为从开源安全工具合国内商业工具两个方面来回答。
一、开源容器安全:

  1. Docker Bench for Security 用于根据安全基准审核容器额度脚本
    2、Anchore 使用cve数据和用户定义策略检查容器安全性工具
    3、Dagda 用于扫描docker容器中的漏洞、病毒和漏洞的工具
    如上是我用过的开源容器安全产品
    二、国内商业化
    接下来说正在用的商业化产品 青藤云的,现在上的他家全套,包括主机安全和容器安全,对运维人员来说,简单省事。

lych370 系统运维工程师 , 某公司
可以使用一些第三方的审计工具。谷歌的Grafeas为关于容器的元数据提供了一个公共API,包含从镜像、构建细节到安全漏洞

5、容器集群节点的安全是如何保障的?

嘉宾回复

choukongbai 系统架构师 , test
基于您的问题:我会分为从开源安全工具合国内商业工具两个方面来回答。
一、开源容器安全:

  1. Docker Bench for Security 用于根据安全基准审核容器额度脚本
    2、Anchore 使用cve数据和用户定义策略检查容器安全性工具
    3、Dagda 用于扫描docker容器中的漏洞、病毒和漏洞的工具
    如上是我用过的开源容器安全产品
    二、国内商业化
    接下来说正在用的商业化产品 青藤云的,现在上的他家全套,包括主机安全和容器安全,对运维人员来说,简单省事。

qingkong2022 容器云运维 , 光大科技

  • 使用指定用户运行容器
  • 阻止容器以root用户运行
  • 在容器中禁止使用内核功能
  • 阻止对容器根文件系统的写入
  • 允许为特定的容器添加指定的内核功能

shx 开发工程师 , 光大科技
1、及时修复集群节点的软件漏洞;
2、集群节点尽量不要暴露到公网,并通过合理配置防火墙或者安全组规则,限制非必要的端口和IP访问;
3、禁止容器获取节点宿主机的元数据;

6、企业应该如何最大限度的保障etcd集群的安全?

kubernetes集群的重要数据都存在etcd集群中,比如token,secret,config等;etcd集群如果被攻破,可瞬间造成容器集群瘫痪,企业应该如何最大限度的保障etcd集群的安全?

嘉宾回复

shx 开发工程师 , 光大科技
部署 etcd 集群的各个节点应该被授予最小的访问权限,同时还要尽量避免这些节点被用作其他用途。另外etcd 对数据的读写要求很高,这里磁盘最好是 SSD 类型。
etcd 集群要配置双向TLS认证(mTLS),用于Etcd 各个节点之间的通信。同时 APIServer 对 etcd 集群的访问最好也要基于mTLS。通过 Kubeadm 搭建出来的集群,默认已经采取这种配置方式。

qingkong2022 容器云运维 , 光大科技

  • 在启动Etcd时,使用client-cert-auth参数打开证书校验;
  • Etcd数据加密存储,确保Etcd数据泄露后无法利用;
  • 正确的配置listen-client-urls参数,防止外网暴露;
  • 尽量避免在Etcd所在的节点上部署Web应用程序,以防通过Web应用漏洞攻击Etcd localhost地址。

actor168 研发工程师 , 中国联通软件研究院
1、定期备份
2、高可用模式
3、做好监控

7、从安全管理、性能优化、应用发布等角度,生产实践中容器云ingress集中管理好,还是按业务或功能拆分好?

嘉宾回复

shx 开发工程师 , 光大科技
一般情况下,外部访问内部的流量称为南北向流量, 内部服务之间的流量称为东西向流量。有些企业为了节省机器成本和运维压力,会选择将南北向流量和东西向流量共用一个Ingress Provider。这种部署方式无法针对外部流量或者内部流量做精细化的流量治理,也会扩大故障影响面。最佳的做法是针对外网、内网的场景分别独立部署 Ingress Provider,并且根据实际请求规模控制副本数以及硬件资源,在缩小爆炸半径的同时尽可能提供资源利用率。从整个集群业务的稳定性角度来说,不建议对ingress采用集中式管理。

8、企业在建设容器集群的时候,需要如何设计网络策略保障集群资源的安全?

集群网络也是是Kubernetes的一个核心概念,涉及到容器、Pod、服务和外部服务之间的通信。默认情况下,几乎没有网络策略来隔离资源,防止集群失陷时的横向移动或权限提升。企业在建设容器集群的时候,需要如何设计网络策略保障集群资源的安全;

嘉宾回复

rechen 云计算架构师 , 某银行
1 建议对集群做一下规划,譬如部署在DMZ区、内网区、办公区中应用系统的安全要求是不同的。
2 对单集群,启用命名空间的机制隔离不同租户的资源。
3 对集群的管理权限严格控制,防止重要凭证泄露造成非法变更集群的策略。
4 网络流量一般对南北流量可延用传统安全,以及IAAS的VPC能力进行控制,东西流量在内网环境通常不限制。
5 是否启用K8S的 网络 策略(Network Policy)策略,需要综合评估单位的安控要求,上述措施有效性、团队的运维能力和管理成本再决策。

lych370 系统运维工程师 , 某公司
管理集群和工作集群本身就隔离的,应用部署使用不同的名称空间自然也是隔离的,如果一味地追求安全,那便利性就会存在问题,比如服务端口的暴露,云上云下的网络开通等,所以没有绝对的好的或者安全的方案,综合平衡就好,绝对的安全也是有代价的

9、容器云平台内部集群的网络隔离问题?

容器云平台主要分集群控制平面、管理平面和业务pod平面,各平面之间有无用防火墙隔离?各安全区域之间的不同集群用防火墙隔离,那么在同一个安全区域内的多个集群之间、单个集群内部的多种业务pod之间怎么做安全隔离?如需隔离一般依据什么原则?采用硬件防火墙隔离还是network-policy等等?

嘉宾回复

rechen 云计算架构师 , 某银行
1 容器云平台的建设,通常是采用分层模式规划设计的。
--- 面向应用的管理平面,是统一的一个,实际在生产环境、开发测试环境是单独且不同的二个管理平台。
--- 容器云平台是需要纳管多个K8S集群,也就是一个管理平台对应有多个K8S集群控制平面。不同的K8S集群视其部署的网络分区所在,网络分区之间会有防火墙。也即管理平面和K8S 集群控制平面中间是有防火墙。
--- 业务POD平面:容器云平台是集中管控模式下,业务应用系统通常是以命名空间进行隔离的。也即一个业务POD平面,逻辑上是由多个K8S集群中的多个命名空间组成的。所以视K8S集群部署所在的网络分区不同,业务POD平面中也有防火墙。
2 同一个安全区域内的多个集群之间的安全隔离性,需要看各个单位的IAAS、基础网络的情况而定。譬如K8S集群只使用传统的Underlay网络,在同一网络分区(或可称同一安全区域),集群之间是不加防火墙。 另外譬如在overlay网络的VPC环境中,根据管控半径或K8S用户群隔离的要求的话,不同K8S集群部署在不同的VPC中,则集群之间就有VPC的安全隔离性了。
3 硬件防火墙隔离,通常用在容器云平台的管理平面和在不同的网络分区间的 集群控制平面之间的访问。 而启用network-policy 指的是在一个K8S集群中, 实现业务pod平面的安全隔离性。

twt352 se , tk
单个集群内部的多种业务pod之间目前从原生k8s来看还没有比较好的方式,而且与使用的网络插件有关,这块我们的思路是看一些新兴的安全厂商在这块的一些解决方案。有一些从技术原理上看还不错。

qingkong2022 容器云运维 , 光大科技

  • 不同安全区域内使用防火墙隔离,遵照企业的主机网络隔离策略,开通需要业务访问的端口;
  • 同一安全区域内多个集群之间没有安全隔离;
  • 单个集群内部使用namespace和NetworkPolicy隔离。

10、不同安全区域之间应用访问安全策略?

跨防火墙隔离的安全区域中,不同容器云集群之间的网络安全策略怎么做到不同应用的ip,端口等级别的细粒度控制?不同集群的服务暴露怎么规划更安全?

嘉宾回复

rechen 云计算架构师 , 某银行
1 做好容器云的K8S集群的网络地址规划。对不同网络分区(或安全区域)中的K8S集群的网络安全策略和传统安控方式一样。
2 如果容器云的K8S集群的容器网络技术选型,支持固定IP,则可以做到不同应用的ip,端口等级别的细粒度控制 。譬如 公有云厂商当前都支持pod的网络模式为vpc-cni的固定ip模式 。
3 根据服务是4层还是7层,以及服务的使用范围而定。譬如集群内部的pod之间通信使用ClusterIP. 从集群外部访问 用nodeport方式。从集群外部的7层访问也有用Ingress这类HTTP方式的路由转发方式。另外,还有一些做负载均衡厂商提供了基于负载均衡产品和K8S集成的产品,可以将K8S集群的服务,以传统的且安全的VIP方式暴露。

lych370 系统运维工程师 , 某公司
按照物理机的策略即可,虚机的网络地址建议尽量固定或者限制在刚好够用的网段范围内,防火墙策略可以按照网段去划分,因为容器ip的迁移特性

11、有没有按照安全等保级别针对k8s集群的一些标准化策略或配置?

有没有按照安全等保级别针对k8s集群的一些标准化策略或配置?

嘉宾回复

rechen 云计算架构师 , 某银行
1 安全等保不同级别,有不同的评估项的要求, K8S集群安全只是是等保内容的一部分。 建议应全面对K8S集群进行安全加固和审计。譬如在审计方面, Kube-Bench是Aqua发布的一款开源的K8s安全审计工具。
2 国内公有云厂商,提供了一些安全等保的服务。譬如腾讯容器安全服务(Tencent Container Security Service, TCSS)产品符合等级保护2.0标准体系主要标准。在一般测评实施过程中能够帮助企业满足 容器、镜像、主机、Kubernetes 资产层面 的杀毒、主动入侵防御、定期漏洞扫描等方面要求。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

4

添加新评论0 条评论

Ctrl+Enter 发表

本文隶属于专栏

活动总结
活动总结是社区交流活动内容的总结及延伸,为大家提供了社区专家们丰富且高水平的理论知识、实践经验以及常见问题的最佳解决方法,非常值得大家收藏学习。

作者其他文章

相关文章

相关问题

相关资料

X社区推广