第16章 网络安全组加固 对与错

计算机软件开发 2024-9-5 21:57:51 45 0 来自 中国
阿里云容器产物K8s版本(ACK)是基于阿里云IaaS层云资源创建的。IaaS层资源包罗云服务器(ECS)、专有网络(VPC)、弹性伸缩(ESS)等。以这些资源为根本,ACK产物实现了K8s集群的节点、网络、自动伸缩等组件或功能。
一样平常来说,用户对ACK产物有很高的管理权限,包罗集群扩容、创建服务等。同时,用户可以绕过ACK产物,直接修改集群底层云资源。如开释ECS、删除SLB。如果不清晰浙西诶需改大概产生的影响,则既有大概破坏集群功能。
本章以ACK产物中安全组的设置管理为核心,深入讨论安全组在集群中饰演的角色、在网络链路中所处的位置,以及非法修改安全组会产生的各类标题。本章内容是用于专有集群和托管集群。
16.1 安全组饰演的角色

阿里云ACK产物有两种基本形态,专有集群和托管集群。这两种形态的最大差异,就是用户对Master的管理权限。对安全组来说,两种形态的集群略有差异。
专有集群利用资源编排(ROS)模板搭建集群的主框架。其中专有网络是整个集群运行的局域网,云服务器构成集群的节点,安全组构成集群节点的收支防火墙。集群利用弹性伸缩实现动态扩缩容功能,NAT网关作为集群的网络出口,SLB和EIP实现集群API Server的入口。
托管集群与专有集群类似,同样利用资源编排模板搭建集群的主框架。在托管集群中,云服务器、专有网络、SLB、EIP、安全组等饰演的角色专有集群类似。与专有集群差异的是,托管集群的Master体系组件以Pod的情势运行在管控集群里,这就是K8s管理K8s的概念。
由于托管集群在用户的VPC里,而管控集群在阿里云管控账号的VPC里,以是如许的架构须要办理的一个核心标题,就是跨账号、跨VPC通讯标题。
为了办理这个标题,此处用到类似传送门的技能。托管集群会在集群VPC里创建两个弹性网卡,这两个弹性网卡可以像普通云服务器一样通讯。但是这两个网卡被挂载到托管集群的API Server Pod上,这就办理了跨VPC通讯标题。
16.2 安全组与集群网络

上一节总结了两种形态ACK集群的构成原理,以及安全组在集群中所处的位置。简单来说,安全组就是管理网络收支流量的防火墙。
安全组规则对出方向的数据包基于目的地点来做限定,而对入方向的数据包则基于源地点来做限定。ACK集群内部的通讯对象包罗集群节点和摆设在集群上的容器组,而外部通讯对象可以是恣意外网地点。
云服务器没有太多特殊的地方,只是简单地链接在VPC局域网内的ECS上,而容器组Pod链接在基于Veth网口对。假造网桥、VPC路由表所搭建的和VPC相互独立的假造三层网络上。
总结一下,有两种通讯实体和三种通讯方式,共6种通讯场景,如下表所示。
钱三种场景如图16-1所示,以节点为实体通讯之一。第一种场景是接线与其上的Pod通讯,这种场景和安全组无关;第二种场景是节点与其他节点或Pod通讯,与安全组无关,在这种场景下,由于节点在相同VPC下,且Pod访问Pod网段以外的地点都会颠末SNAT;第三种场景是节点与VPC之外的实体通讯,这种情况下收支方向通讯都与安全组有关。
2.png 别的三种场景如图16-2所示,以容器组Pod为通讯实体之一。第四种场景是Pod在节点内部与Pod和ECS通讯,这种场景和安全组无关;第五种场景是Pod跨节点与其他节点或Pod通讯,这种场景下,如果源地点和目的地点都是Pod,则须要安全组入规则方向,其他情况与场景二(节点与其他节点或Pod通讯,与安全组无关)类似;第六种场景是Pod与VPC之外的实体通讯,这与场景三(节点与VPC之外的实体通讯,这种情况下收支方向通讯都与安全组有关)类似。
固然以上场景有些复杂,但是颠末总结后发现,与安全组有关的通讯,从根本上说只有两种情况:一种是Pod之间跨节点通讯,另一种是节点或Pod与外网互访。这里的外网可以是公网,也可以是集群互联互通的IDC(Internet Data Center,互联网数据心)或其他VPC。
16.3 怎么管理安全组规则

设置ACK集群的安全组,只需思量两种情况,一种是Pod之间跨节点通讯,一种是集群和外网互访。
ACK集群在创建之初,默认添加了Pod网段放行入规则,与此同时,保持出规则对全部地点全开放。这使得Pod之间互访没有标题,同时Pod或节点可以随意访问集群以外的网络。
而在默认规则的根本上对集群安全组的设置管理,实在就是在不影响集群功能的情况下,收紧Pod或节点访问外网的本领,和放松集群集群以外网络对集群的访问限定。
分三个场景分析,怎样在默认规则的根本上进一步管理集群的安全组规则。
-限定集群访问外网
-IDC与集群互访
-利用新的安全组管理部分节点
16.3.1 限定集群访问外网

为了限定集群访问外网的同时不影响集群本身的功能,设置需满足3个条件:
-不能限定出方向Pod网段
-不能限定集群访问阿里云云服务器的内网地点段100.64.0.0/10
-不能限定集群访问一部分阿里云云服务的公网地点,比方:
ecs.cn-hangzhou.aliyuncs.com
第1、2挑是为了群宝集群可以通过内网访问DNS大概OSS这类服务,第3条是由于集群在实现部分功能的时间,会通过公网地点访问云服务。
16.3.2 IDC与集群互访

对于IDC与集群互访这种场景,假设IDC和集群VPC之间已经通过底层的网络产物买通,IDC内部呆板和集群节点大概Pod之间,可以通过地点找到对方。那么在这种情况下,只须要在确保出方向规则放行IDC呆板网段的情况下,对入规则设置放行IDC呆板地点段即可。
16.3.3 利用新的安全组管理节点

偶然间,用户须要新增一些安全组来管理集群节点。比力典范的用法包罗把集群节点同时参加到多个安全组里,以及把集群节点分配给多个安全组管理。
但是,如果把节点参加到多个安全组里,那么这些安全组会依据优先级,从高到低依次匹配规则,这会给设置管理增长复杂度。而把节点分配给多个安全组管理,则会出现脑裂(partition)标题,须要通过安全组之间授权大概增长规则的方式,确保集群节点之间互通。
16.4 典范标题与办理方案

先容一些典范的与安全组错误设置有关系的标题和办理方案
16.4.1 利用多个安全组管理集群节点

托管集群默认把节点ECS和管控ENI(弹性网卡)放在同一个安全组里,根据安全组的特性,这包管了ENI和ECS的网卡之间在VPC网络平面上的互通。如果把节点从集群默认安全组移除并纳入其他安全组的管理中心,就会导致集群管控ENI和节点ECS之间无法通讯。
这个标题导致的征象比力常见的有,利用kubectl exec下令无法进入Pod终端做管理,利用kubectl logs下令无法查察Pod日志等。其中,kubectl exec下令所返回的报错比力清晰,即从API Server毗连对应节点10250端口超时,这个端口的监听者就是kubectl。
[root@]# kubectl exec  -ti -n kube-system nginx-ingress-controller-xxxxxxx-xxxx sh
Error from server: erroe dialing backend: dial tcp 192.168.0.xxx:10250: i/o timeout
办理方案有三种:
-将集群节点重新参加集群创建的安全组
-让节点地点的安全组和集群创建的安全组之间相互授权
-在两个安全组里利用规则让节点ECS和管控ENI的地点段相互放行
16.4.2 限定集群访问公网或运营商级NAT保存地点

专有或托管集群的体系组件(如cloud controller manager、metrics server、cluster auto scaler等)利用公网地点或运营商级NAT保存地点(100.64.0.0/10)访问阿里云云产物,这些产物包罗但不限于负载均衡、弹性伸缩(ESS)、对象存储(OSS)。如果安全组限定了集群访问这些地点,则会导致体系组件功能受损。
标题常见导致征象为,在创建服务的时间,Cloud Controller Manager无法访问集群节点Metadata并获取Token值。集群节点以及其上的体系组件通过节点绑定的授权角色访问云资源,如访问不到Token,会导致权限标题。另一个是集群无法从阿里云镜像堆栈下载容器镜像,导致Pod无法创建。
报错:failed to pull image...
此标题的办理方案是,在限定集群出方向的时间,确保运营商级NAT保存地点100.64.0.0/10网段以及阿里云云服务公网地点被放行。其中运营商保存地点比力轻易处理,云服务公网地点比力难处理,缘故起因有2个,一个是集群会访问多个云服务地点且这些云服务的公网地点有大概会更改,另一个是这些云服务大概利用DNS负载均衡,以是须要多次解析浙西而服务的URL找出全部IP地点并放行。
16.4.3 容器组跨节点通讯非常

集群创建的时间,会在安全组添加容器组网段入方向放行规则。有了这个规则,纵然容器组网段和VPC网段不一样,容器组在跨节点通讯的时间,也不会受到安全组的限定。如果这个默认规则被移除,那么容器组跨节点通讯会失败,进而使得多种集群根本功能受损。
这个标题导致的征象比力常见的是,容器组DNS解析失败、容器组访问集群内部其他服务非常等。在容器组网段规则被移除之后,从磁盘控制器里访问阿里云主页则无法解析域名,telnetCoreDNS的地点不通。地点之以是可以访问,是由于安全组默认方向了全部ICMP数据。
此标题的办理方案比力简单,就是重新把容器组地点段参加安全组。这类标题的难点在于,其引起的标题非常多,征象光怪陆离,以是从标题的现场定位到容器组跨节点通讯,是办理标题的关键一步。
16.5 总结

ACK产物安全组设置管理的三个重点,分别是集群的外网控制访问、集群容器组之间跨节点访问,以及集群利用多个安全组管理。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-19 06:21, Processed in 0.161257 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表