OpenShift Security - 用 RHACS 为应用自动生成 NetworkPolicy

76 篇文章 6 订阅
6 篇文章 0 订阅

OpenShift / RHEL / DevSecOps / Ansible 汇总目录
说明:本文已经在 OpenShift 4.12 + RHACS 3.73.1 环境中验证

什么是 NP-Guard

NP-Guard 是 IBM 发起的一个开源项目,用来自动创建 Kubernetes (K8s) 的 network policy 以提高云原生应用网络安全。在 RHACS 3.73.1 中内置了 NP-Guard 的核心功能,使用 RHACS 的客户端可以对本地目录中的 Service, ConfigMap, Pod, Deployment, ReplicaSet, Job, DaemonSet, 和 StatefulSet 的 manifest 进行自动分析,并生成最小范围的 NetworkPolicy 配置。

用 NP-Guard 自动生成 NetworkPolicy

  1. 先下载 3.73.1 以后版本的 RHACS 客户端 roxctl
$ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.73.1/bin/Linux/roxctl
$ chmod +x roxctl
  1. 下载测试资源,然后再创建 frontend.yaml 和 backend.yaml 中的资源。
$ git clone https://github.com/stackrox/stackrox.git
$ oc new-project np-demo
$ oc apply -f stackrox/tests/roxctl/bats-tests/test-data/np-guard/scenario-minimal-service/frontend.yaml
$ oc apply -f stackrox/tests/roxctl/bats-tests/test-data/np-guard/scenario-minimal-service/backend.yaml
  1. 在 RHACS 的 Network Graph 中确认此时的 frontend 和 backend 是没有 NetworkPolicy 的。
    在这里插入图片描述
  2. 运行命令分析上面 2 个文件,并在 np.yaml 文件中生成 NetworkPlolicy。
$ roxctl generate netpol stackrox/tests/roxctl/bats-tests/test-data/np-guard/scenario-minimal-service --output-file=np.yaml
$ more np.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  creationTimestamp: null
  name: backend-netpol
spec:
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: frontend
    ports:
    - port: 9090
      protocol: TCP
  podSelector:
    matchLabels:
      app: backendservice
  policyTypes:
  - Ingress
  - Egress
status: {}

---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  creationTimestamp: null
  name: frontend-netpol
spec:
  egress:
  - ports:
    - port: 9090
      protocol: TCP
    to:
    - podSelector:
        matchLabels:
          app: backendservice
  - ports:
    - port: 53
      protocol: UDP
  ingress:
  - ports:
    - port: 8080
      protocol: TCP
  podSelector:
    matchLabels:
      app: frontend
  policyTypes:
  - Ingress
  - Egress
status: {}

---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  creationTimestamp: null
  name: default-deny-in-namespace
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress
status: {}
  1. 运行命创建 NetworkPolicy。
$ oc apply -f np.yaml
  1. 在 RHACS 的 Network Graph 中确认此时的 frontend 和 backend 已经有 NetworkPolicy 了,并且是允许从 frontend 访问 backend。
    在这里插入图片描述

参考

https://github.com/np-guard/cluster-topology-analyzer/tree/main/tests

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值