某不知名博客 某不知名博客
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carsaid

安全界的小学生
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前言

  • 学习建议

  • Docker命令大全
  • Kubernetes教程

    • Kubernetes(K8s)学习教程 - 前言
    • 第1章-Kubernetes集群部署
    • 第2章-便捷性设置以及集群插件的安装
    • 第3章-基础操作
    • 第4章-集群升级
    • 第5章-Pod
    • 第6章-Pod生命周期与资源限制
    • 第7章-Pod与节点
    • 第8章-控制器Deployment
    • 第9章-Deployment镜像变更和滚动更新
    • 第10章-其他控制器-以及标签表达式
    • 第11章-控制器与节点驱逐
    • 暂缓更新
    • 练习题

    • 常用命令及yaml配置

      • 常见的集群配置文件
      • kubectl

      • kubeadm

      • ctr

      • etcd(etcdctl)

      • yaml常用配置项

        • Pod文件常用配置项
        • LimitRange文件常用配置项
        • ResourceQuota文件常用配置项
        • 控制器(Deployment)
        • 水平自动扩缩(HPA)
        • 其他控制器(DS、RC和RS)
        • 持久卷(PV)
        • 持久卷申领(PVC)
        • 存储类(StorageClass)
        • Secret
        • ConfigMap
        • 任务(Job)
        • 周期任务(CronJob)
        • 服务(Service)
        • 路由规则(Ingress)
        • 网络策略(NetworkPolicy)
          • NetworkPolicy示例
            • (1)允许来自特定标签的客户端访问
            • (2)允许来自特定网段的客户端访问
            • (3)允许来自指定命名空间的客户端访问
            • (4)允许访问指定的目标服务端
            • (5)例外-拒绝所有访问
          • podSelector(保护哪些Pod)
          • policyTypes(策略类型)
          • ingress(具体的入口策略)
            • from(允许哪些客户端来访问)
            • podSelector(客户端白名单-标签)
            • ipBlock(客户端白名单-网段)
            • namespaceSelector(客户端白名单-命名空间的标签)
            • ports(允许访问的端口)
          • egress(具体的出口策略)
            • to(允许访问哪些目标服务器)
        • 角色(Role)
        • 角色绑定(RoleBinding)
        • 集群角色(ClusterRole)
        • 集群角色绑定(ClusterRoleBinding)
        • 证书签名请求(CertificateSigningRequest)
      • 具有特殊作用的标签或注释

  • CKS教程

  • 云原生安全
  • Kubernetes教程
  • 常用命令及yaml配置
  • yaml常用配置项
carsaid
2023-11-28
目录

网络策略(NetworkPolicy)

# NetworkPolicy 常用配置项

学习更多

官方文档-网络策略(NetworkPolicy) (opens new window)

# 1NetworkPolicy示例

注意

  • 网络策略有命名空间限制,默认只作用于当前命名空间中的 Pod。
  • 如果在某个命名空间里,没有任何策略的话,则允许所有数据包通过。
  • 如果设置了网络策略,但是策略里没有任何规则的话,则拒绝所有数据包通过。

# (1)允许来自特定标签的客户端访问

示例,只允许当前命名空间中具有xx=xx标签的 Pod,去访问具有run=pod1的另一些 Pod(限定为 TCP 协议的 80 端口)。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: mypolicy
spec:
  podSelector:
    matchLabels:
      run: pod1         # 当前策略应用到哪些 Pod 上
  policyTypes:          # 策略类型(入策略/出策略)
  - Ingress
  ingress:              # 入流量策略
  - from:               # 只允许来自(具有标签 xx=xx 的源客户端)以 TCP 协议访问被保护 Pod 的 80 端口
    - podSelector:
        matchLabels:
          xx: xx
    ports:
    - protocol: TCP
      port: 80
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# (2)允许来自特定网段的客户端访问

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: mypolicy
spec:
  podSelector:
    matchLabels:
      run: pod1
  policyTypes:
  - Ingress
  ingress:
  - from:
    - ipBlock:                  # 只允许来自网段 192.168.80.0/24 的客户端访问被保护的 Pod
        cidr: 192.168.80.0/24
    ports:
    - protocol: TCP
      port: 80
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# (3)允许来自指定命名空间的客户端访问

注:需要提前为命名空间设置标签,按标签的追踪命名空间。

kubectl label ns default name=default
1
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: mypolicy
spec:
  podSelector:
    matchLabels:            # 空标签,保护当前命名空间中的所有 Pod
  policyTypes:
  - Ingress
  ingress:
  - from:
    - namespaceSelector:    # 允许具有标签(name=default)的命名空间中的客户端进行访问
        matchLabels:
          name: default
    ports:
    - protocol: TCP
      port: 80
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# (4)允许访问指定的目标服务端

Egress 策略控制 Pod 的出口流量。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: mypolicy2
spec:
  podSelector:
    matchLabels:        # 限制当前命名空间中的所有 Pod
  policyTypes:
  - Egress
  egress:
  - to:
    - podSelector:      # 只允许访问具有特定标签的目标服务端
        matchLabels:
          run: pod2
    ports:
    - protocol: TCP
      port: 80
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

允许访问集群的 coreDNS 服务:

省略...
spec:
  省略...
  egress:
  - to:
    - namespaceSelector:
        matchLabels:
          name: kube-system
    ports:
    - protocol: UDP
      port: 53
1
2
3
4
5
6
7
8
9
10
11

只允许访问谷歌 DNS 服务:

  • 还得设置允许访问的网站,不然的话你就只能访问 DNS,永远 DNS,进不去网站
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: p3
spec:
  podSelector:
    matchLabels:
  policyTypes:
  - Egress
  egress:
  - to:
    - ipBlock:
        cidr: 8.8.8.8/32
    ports:
    - protocol: UDP
      port: 53
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# (5)例外-拒绝所有访问

此策略里没有任何的规则,则拒绝所有数据包通过。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny
spec:
  podSelector: {}
  policyTypes:
  - Ingress
1
2
3
4
5
6
7
8

# spec.podSelector(保护哪些Pod)

当前网络策略要作用于哪些 Pod 身上(要保护哪些 Pod)。保护具有指定标签的 Pod(限当前命名空间)。

# spec.policyTypes(策略类型)

当前网络策略的类型,可以是多种,但建议分开设置。

  • Ingress:入口策略
  • Egress:出口策略
spec:
  policyTypes:
  - Ingress
  - Egress
1
2
3
4

# spec.ingress(具体的入口策略)

# spec.ingress.from(允许哪些客户端来访问)

# spec.ingress.from.podSelector(客户端白名单-标签)

通过标签来定义客户端白名单。

如果 podSelector 下的字段为空,则表示允许来自所有的客户端访问。

spec:
  ingress:
  - from:
    - podSelector:
        matchLabels:          # 空标签,允许来自所有客户端的访问
1
2
3
4
5

或:

spec:
  ingress:
  - from:
    - podSelector:
        matchExpressions:     # 空表达式,允许来自所有客户端的访问
1
2
3
4
5

注意

如果spec.ingress.from.podSelector和spec.ingress.from.ipBlock同时存在,则它们是 “或” 的关系。

# spec.ingress.from.ipBlock(客户端白名单-网段)

允许来自网段192.168.80.0/24的客户端进行访问。

spec:
  ingress:
  - from:
    - ipBlock:
        cidr: 192.168.80.0/24
1
2
3
4
5

注意

如果spec.ingress.from.podSelector和spec.ingress.from.ipBlock同时存在,则它们是 “或” 的关系。

# spec.ingress.from.namespaceSelector(客户端白名单-命名空间的标签)

# spec.ingress.ports(允许访问的端口)

# spec.egress(具体的出口策略)

# spec.egress.to(允许访问哪些目标服务器)

具体配置和ingress.from策略相同。

编辑 (opens new window)
路由规则(Ingress)
角色(Role)

← 路由规则(Ingress) 角色(Role)→

最近更新
01
API测试笔记
04-30
02
msfvenom
03-29
03
Metasploit
03-29
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Carsaid | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式