网络策略与最小权限网络
使用默认拒绝的网络策略和明确的允许规则限制容器之间的流量,并将最小权限原则应用于网络
网络策略与最小权限网络 是 CoddyKit 上的免费 Docker & DevOps Fundamentals 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Docker & DevOps Fundamentals 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Docker & DevOps Fundamentals 课程共包含 4 节课。
默认开放存在风险
默认情况下,集群中的容器通常可以相互通信。遭到入侵的容器组随后就能自由访问数据库和内部服务。网络策略可以关上这扇门。
网络中的最小权限
最小权限原则同样适用于流量:服务只应接受和发起真正需要的连接,不应有任何多余连接。
什么是网络策略?
NetworkPolicy是一个 Kubernetes 对象,它按标签选择容器组,并规定允许哪些入站和出站流量。CNI 插件(Calico、Cilium)负责执行这些规则。
您需要能够执行策略的 CNI
就像入口需要控制器一样,网络策略也需要支持它们的 CNI。在会忽略网络策略的插件上,这些规则不会报错,但会悄悄失效。
默认拒绝入站流量
先拒绝进入命名空间的所有流量,然后只开放您需要的流量。空的 podSelector 会匹配所有容器组。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-ingress
spec:
podSelector: {}
policyTypes:
- Ingress允许特定流量
现在只允许前端容器组通过 8080 端口访问 API。其他所有流量仍会被阻止。
spec:
podSelector:
matchLabels:
app: api
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
ports:
- port: 8080限制出站流量
您还可以限制出站流量,例如只允许容器组访问数据库,防止被劫持的容器组向外部主机回连。
spec:
podSelector:
matchLabels:
app: api
policyTypes:
- Egress
egress:
- to:
- podSelector:
matchLabels:
app: db命名空间选择器
规则可以通过 namespaceSelector 进行匹配,只允许来自受信任命名空间的跨命名空间流量——这对共享平台服务很有用。
from:
- namespaceSelector:
matchLabels:
team: platform允许 DNS
一个常见陷阱是:严格的默认拒绝出站策略也会阻止 DNS,导致名称解析失败。请记得允许通过 UDP/TCP 53 端口访问 kube-dns。
egress:
- to: []
ports:
- protocol: UDP
port: 53超越 Kubernetes
Docker 用户可以从用户自定义网络中获得类似好处:只有位于同一网络中的容器才能相互访问,从而隔离不相关的应用。
docker network create --internal backend零信任思维
最小权限网络会推动您走向零信任:假设网络处于敌对环境中,对每个连接进行身份验证和授权,默认不允许任何连接。
快速检查
网络策略合理的起始策略是什么?
回顾
现在您可以安全地限制流量:
- 应用默认拒绝,然后添加明确的允许规则
- 按标签/命名空间控制入站和出站流量
- 记得允许 DNS;必须使用能够执行策略的 CNI
- Docker 内部网络可以提供类似的隔离
最小权限网络可以缩小任何安全漏洞造成的影响范围。
常见问题解答
「网络策略与最小权限网络」课时是免费的吗?
是的 — 「网络策略与最小权限网络」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Docker & DevOps Fundamentals 课程的其余内容,请升级到 CoddyKit PRO。 Docker & DevOps Fundamentals 课程共包含 4 节课。
「网络策略与最小权限网络」这节课中我会学到什么?
使用默认拒绝的网络策略和明确的允许规则限制容器之间的流量,并将最小权限原则应用于网络 你通过在浏览器中直接运行的动手代码来练习 Docker & DevOps Fundamentals,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Docker & DevOps Fundamentals 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Docker & DevOps Fundamentals 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「网络策略与最小权限网络」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Docker & DevOps Fundamentals 课中编写并运行代码吗?
能。每节 Docker & DevOps Fundamentals 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 容器镜像安全扫描
- 容器运行时安全
- 密钥管理与 RBAC
- 网络策略与最小权限网络