当前位置:网站首页>容器网络硬核技术内幕 (22) 安全与自由兼顾
容器网络硬核技术内幕 (22) 安全与自由兼顾
2022-07-29 20:35:00 【用户8289326】
在上一期《矛盾论与实践论》中,我们提到,网络的正确转发包(路由交换)和正确丢弃包(安全),是矛盾的一体两面。
我们在前期专题也阐述了,在容器网络中,通过cni插件和service机制,能够实现容器网络的互联互通。今天,我们要介绍容器网络的基础安全机制,它描述了容器网络的安全框架。
这种基础的安全机制叫做:networkpolicy。
我们知道,在默认情况下,容器之间只要网络可达,是可以自由互通的,也就是说,从一个pod的任意端口,允许向目的pod的任意端口发起访问。而networkpolicy就是对这种访问做限制。
以下图的容器网络为例子:
图中有两类容器,分别带有db和frontend的标签。
db的容器运行的是数据库mysql,IP地址均属于10.0.10.0/24网段,均监听3306端口。
frontend的容器运行的是前端apache httpd,IP地址均属于10.0.20.0/24网段,会采用随机的端口向mysql发起连接。
使用yaml方式描述的networkpolicy如下:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
namespace: default
spec:
podSelector:
matchLabels:
role: db
#数据库角色的容器,运行mysql
policyTypes:
- Ingress
- Egress
# 双向policy
ingress:
- from:
- ipBlock:
cidr: 10.0.20.0/24
#允许来自10.0.20.0/24网段的访问,端口不限
- namespaceSelector:
matchLabels:
project: myproject
- podSelector:
matchLabels:
role: frontend
#匹配带有frontend标签的pod,运行的是apache httpd前端
egress:
- to:
- ipBlock:
cidr: 10.0.10.0/24
#允许的目的地址为10.0.10.0/24网段(CIDR)
ports:
- protocol: TCP
port: 3306
#允许的目的端口
读完了上面的networkpolicy,我们会发现,yaml描述的networkpolicy实际上类似交换机/路由器/防火墙等网络设备的ACL:
根据入方向的IP/端口、出方向的IP/端口,对容器进行访问控制。
当然,networkpolicy有一点增强的部分:它可以通过podSelector对容器的标签进行选择,而不是只能对容器所在的IP网段(CIDR)进行访问控制。
如ingress段中,podSelector下,matchLabels的描述中,就选定了带有frontend标签的描述。也就是说,如果我们创建所有运行apache httpd的容器的时候,给它们带上frontend的role标签,实际上我们可以只通过podSelector来确定,这条networkpolicy的源容器,而不需要指定它所在的IP网段(CIDR)。
这样一来,我们对比networkpolicy和交换机/路由器/防火墙的ACL,可以发现,networkpolicy有更强大的灵活性,它可以基于标签,而不是基于具体的IP地址或IP地址段。即使发起访问的源,与被访问的目的容器均散落在非连续的网段,也可以通过一条networkpolicy来描述它们之间的互访策略。这就大大增加了容器网络部署的灵活性和自由度。
那么,这种灵活的访问策略是如何实现的呢?
实际上,networkpolicy和service类似,是一种规约(specification),真正的实现由CNI插件来实现。当然,也并不是所有的CNI插件均可以实现networkpolicy。
在接下来的专题中,我们将详解一些CNI插件对networkpolicy的实现。
敬请期待。
边栏推荐
- OAuth,JWT ,OIDC你们搞得我好乱啊
- 7 行代码搞崩溃 B 站,原因令人唏嘘!
- 剑指 Offer II 097. 子序列的数目
- 【无标题】
- 1. Promise usage in JS, 2. The concept and usage of closures, 3. The difference between the four methods and areas of object creation, 4. How to declare a class
- 叶酸&适配体修饰DNA纳米载体|CdS纳米颗粒修饰DNA|科研试剂
- 解析掌握现代化少儿编程实操能力
- Panorama Tutorial丨How to shoot sunrise and sunset scenes in VR panoramic shooting?
- 带你刷(牛客网)C语言百题(第四天)
- 酷客导航助你商场轻松购物,业务办理不迷茫
猜你喜欢

关于论青少年尽早学少儿编程之说

带你刷(牛客网)C语言百题(第四天)

MySQL数据查询 - 联合查询

尿素偶联Urea-siRNA Conjugates|Cyclodextrin-siRNA-β-CD环糊精修饰RNA核酸(解析说明)

378. The Kth Smallest Element in an Ordered Matrix

探索创客教育在线管理实施体系

单壁碳纳米管-DNA复合物(SWCNT-DNA)|作用机理

The Ministry of Human Resources and Social Security announced that "database operation administrator" has become a new occupation, and OceanBase participated in the formulation of occupational standar

第二好PyTorch新手课程;论文写作指南;使用µGo语言开发迷你编译器;超高效使用Transformer的扩展库;前沿论文 | ShowMeAI资讯日报

SAG1-MIC8复合DNA基因疫苗|新型脂质-HAP-DNA复合体|实验要求
随机推荐
回归——岭回归
微博账号奇葩逻辑产品设计
Huawei laptop keyboard locked (how does the laptop keyboard light up)
QT安装、创建项目与调试,在VS中的使用:手把手教程
点击返回顶部
探索创客教育在线管理实施体系
全自动化机器学习建模!效果吊打初级炼丹师!
C#笔记 之 Oracle.ManagedDataAccess包的安装及配置
VR直播营销需求增加,数据模块为我们铺路
ALBERT:A Lite BERT for Self-supervised Learning of Language Representations
【593. 有效的正方形】
MySQL - 设计游戏用户信息表
磁性层状双金属氢氧化物和酶-DNA复合物|聚乙烯亚胺-DNA复合物(PEI/DNA)|作用机理
打破原则!MongoDB 引入 SQL?
南华早报 | 助力亚洲最具公信力报章实现AD域自动化管理
MySQL数据查询 - 简单查询
336. Palindromic Pairs
ALBERT: A Lite BERT for Self-supervised Learning of Language Representations
惠普服务器硬盘指示灯不亮或显示蓝色
无文件落地免杀的初尝试思考(上)