• 第一章 CIS 安全基准-网络访问控制


    • 网络策略应用场景
    • 网络策略概述
    • 网络访问控制5个案例

    网络访问控制:应用场景

    默认情况下,Kubernetes 集群网络没任何网络限制,Pod 可以与任何其他 Pod 通信,在某些场景下就需要进行网络控制,
    减少网络攻击面,提高安全性,这就会用到网络策略。
    网络策略(Network Policy):是一个K8s资源,用于限制Pod出入流量,提供Pod级别和Namespace级别网络访问控制。
    网络策略的应用场景:
    • 应用程序间的访问控制,例如项目A不能访问项目B的Pod
    • 开发环境命名空间不能访问测试环境命名空间Pod
    • 当Pod暴露到外部时,需要做Pod白名单
    • 多租户网络环境隔离

    网络访问控制:网络策略概述

    在这里插入图片描述

    网络访问控制:网络策略概述

    在这里插入图片描述

    网络访问控制案例

    案例1:拒绝命名空间下所有Pod入、出站流量

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
    name: deny-all
    namespace: test
    spec:
    podSelector: {} # 匹配本命名空间所有pod
    policyTypes: 
    - Ingress
    - Egress
    # ingress和egress没有指定规则,则不允许任何流量进出pod
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    案例2:拒绝其他命名空间Pod访问

    需求:test命名空间下所有pod可以互相访问,也可以访问其他
    命名空间Pod,但其他命名空间不能访问test命名空间Pod。

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
    name: deny-all-namespaces 
    namespace: test
    spec:
    podSelector: {} 
    policyTypes:
    - Ingress
    ingress:
    - from:
    - podSelector: {} # 匹配本命名空间所有pod
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    案例3:允许其他命名空间Pod访问指定应用

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
    name: allow-all-namespaces 
    namespace: test
    spec:
    podSelector: 
    matchLabels:
    app: web
    policyTypes:
    - Ingress
    ingress:
    - from:
    - namespaceSelector: {} # 匹配所有命名空间的pod
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    案例4:同一个命名空间下应用之间限制访问

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
    name: app-to-app
    namespace: test
    spec:
    podSelector:
    matchLabels:
    run: web
    policyTypes:
    - Ingress
    ingress:
    - from:
    - podSelector:
    matchLabels:
    run: client1
    ports:
    - protocol: TCP
    port: 80
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    案例5:只允许指定命名空间中的应用访问

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
    name: dev-web
    namespace: dev
    spec:
    podSelector:
    matchLabels:
    env: dev
    policyTypes:
    - Ingress
    ingress:
    # 满足允许prod命名空间中的pod访问
    - from:
    - namespaceSelector:
    matchLabels:
    env: prod
    # 允许pod标签为app=client1的pod访问,所有命名空间
    - from:
    - namespaceSelector: {}
    podSelector:
    matchLabels:
    app: client1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
  • 相关阅读:
    城市项目招商创业园区供需特产公益小程序开源版开发
    如何在麒麟上安装 ONLYOFFICE 桌面编辑器
    Vue 的性能优化
    Gym 104025 M -Counting in Tree
    卓越的 App UI 风格引领潮流
    【LeetCode刷题(数据结构)】:对称二叉树
    Git基本应用<一>:Git安装及GitHub连接
    懒人必备爬虫神器—playwright
    HelloWorld - 从Houdini导出HDA到UE5
    js函数参数
  • 原文地址:https://blog.csdn.net/qq_26489043/article/details/127684041