概述NetworkPolicy用于限制Pod间通信与外部访问。采用默认拒绝、按命名空间与标签精确放行,以及对DNS和外部API的白名单控制,可提升安全边界与合规性。关键实践与参数默认拒绝:创建禁止所有 `ingress/egress` 的策略内部互通:按命名空间与标签精确允许出口白名单:允许DNS与特定CIDR或外部服务IP段观测:使用连通性测试与日志审计示例/配置/实现apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: default-deny-all namespace: app spec: podSelector: {} policyTypes: [Ingress, Egress] --- apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-same-namespace namespace: app spec: podSelector: matchLabels: { role: api } policyTypes: [Ingress] ingress: - from: - podSelector: { matchLabels: { role: web } } --- apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: egress-whitelist namespace: app spec: podSelector: matchLabels: { role: api } policyTypes: [Egress] egress: - to: - namespaceSelector: { matchLabels: { kube-system: "true" } } ports: [{ port: 53, protocol: UDP }] - ipBlock: cidr: 203.0.113.0/24 ports: [{ port: 443, protocol: TCP }] 验证东西向:`web` Pod 访问 `api` 成功,其他命名空间访问被拒出口:`api` Pod 能解析DNS并访问白名单CIDR的外部API,其他外部目标被拒审计:结合CNI或网关日志确认拒绝与允许次数注意事项需确认CNI实现支持NetworkPolicy(e.g., Calico/Cilium)外部服务IP可能变化,建议配合网关或代理层进行域名到IP映射管理避免过度宽泛的CIDR,保持最小放行与Ingress/Egress Gateway策略协同

发表评论 取消回复