<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    Kubernetes之NetworkPolicy的實踐

    VSole2021-10-10 14:40:50

    之前做過NetworkPolicy的實踐,那個比較簡單,只驗證了同一個namespace下不同應用之間的訪問控制場景,本周實踐了一下不同namespace下應用之間的訪問控制場景,

    首先還是創建應用,一個sshd,另一個httpd,分屬于兩個不同的namespace,

    vim sshd-deployment.yaml,

    apiVersion: v1

    kind: Namespace

    metadata:

     name: sshd

     labels:

       app: sshd

    ---

    apiVersion: apps/v1

    kind: Deployment

    metadata:

     name: sshd

     labels:

       app: sshd

     namespace: sshd

    spec:

     selector:

       matchLabels:

         app: sshd

     template:

       metadata:

         labels:

           app: sshd

       spec:

         containers:

         - name: sshd

           image: docker.mirrors.ustc.edu.cn/rastasheep/ubuntu-sshd:14.04

           imagePullPolicy: IfNotPresent

           ports:

           - containerPort: 22

    vim httpd-deployment.yaml,

    apiVersion: v1

    kind: Namespace

    metadata:

     name: httpd

     labels:

       app: httpd

    ---

    apiVersion: apps/v1

    kind: Deployment

    metadata:

     name: httpd

     labels:

       app: httpd

     namespace: httpd

    spec:

     replicas: 3

     selector:

       matchLabels:

         app: httpd

     template:

       metadata:

         labels:

           app: httpd

       spec:

         containers:

         - name: httpd

           image: docker.mirrors.ustc.edu.cn/library/httpd

           imagePullPolicy: IfNotPresent

           ports:

           - containerPort: 80

    然后就是創建訪問控制策略,先給兩個namespace都搞成default deny,

    vim sshd-policy-deny-all.yaml,

    apiVersion: networking.k8s.io/v1

    kind: NetworkPolicy

    metadata:

     name: default-deny

     namespace: sshd

    spec:

     podSelector: {}

     policyTypes:

     - Ingress

     - Egress

    vim httpd-policy-deny-all.yaml,

    apiVersion: networking.k8s.io/v1

    kind: NetworkPolicy

    metadata:

     name: default-deny

     namespace: httpd

    spec:

     podSelector: {}

     policyTypes:

     - Ingress

     - Egress

    然后再給sshd和httpd分別放開訪問策略,

    vim policy-sshd-access.yaml,

    apiVersion: networking.k8s.io/v1

    kind: NetworkPolicy

    metadata:

     name: sshd-network-policy

     namespace: sshd

    spec:

     podSelector:

       matchLabels:

         app: sshd

     policyTypes:

     - Egress

     egress:

     - to:

       - namespaceSelector:

           matchLabels:

             app: httpd

    vim policy-httpd-access.yaml,

    apiVersion: networking.k8s.io/v1

    kind: NetworkPolicy

    metadata:

     name: httpd-network-policy

     namespace: httpd

    spec:

     podSelector:

       matchLabels:

         app: httpd

     policyTypes:

     - Ingress

     ingress:

     - from:

       - namespaceSelector:

           matchLabels:

             app: sshd

    最后看一下效果,

    總結來說,NeworkPolicy要實現不同namespace下應用之間的訪問控制需要做到兩點:

    1、每個namespace下要開default deny

    2、訪問雙方應用各要搞一個放開訪問策略

    3、放開訪問策略里匹配對端只能寫namespace

    NeworkPolicy最后是把策略下到iptables上的,像下面這樣,

    kubernetes
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    Kubernetes通常被稱為“K8s”,是一種非常流行的開源容器編排系統,可以自動部署、擴展和管理容器化工作負載。
    本文將引入一個思路:“在 Kubernetes 集群發生網絡異常時如何排查”。文章將引入 Kubernetes 集群中網絡排查的思路,包含網絡異常模型,常用工具,并且提出一些案例以供學習。其可能原因為Pod 的 DNS 配置不正確DNS 服務異常pod 與 DNS 服務通訊異常大數據包丟包:主要現象為基礎網絡和端口均可以連通,小數據包收發無異常,大數據包丟包。
    盡管Kubernetes的默認設置為開發人員賦予了較大的靈活性和敏捷性,但是卻沒有考慮安全防護層面的需求。為了保護Kubernetes上應用數據的安全,企業必須確保對集群配置的合理性和安全性,以獲得更充分的安全防護能力。企業在Kubernetes應用中,不能忽視保護集群網絡中的應用系統,并對重要業務系統及數據實現隔離防護。
    保留的這部分資源主要提供給系統進程使用。cpuManager 當前的限制:最大 numa node 數不能大于 8,防止狀態爆炸。策略只支持靜態分配 cpuset,未來會支持在容器生命周期內動態調整 cpuset。下文有介紹相應的提案。支持這種場景需要對 CPU 進行分組分配。
    跨節點Pod通信則是三層虛擬網絡設備Tun,也就是flannel0。同理目的主機就會有UDP解包及轉發至Pod服務。還有VXLAN模式支持DirectRouting配置,DirectRouting=true是支持在相同子網情況下數據包直接通過路由轉發,與HOST-GW模式相同。但是HOST-GW模式只支持宿主機之間二層連接,要求集群中所以節點必須處于同一個網絡中
    序從 2021 年 10 月開始,NGINX 的 Kubernetes Ingress Controller開始受到安全研究人員的關注。曾披露了CVE-2021-25742漏洞:攻擊者可以通過定制化的Snippets特性創建或修改集群中的Ingress實例,從而獲取集群中所有的Secret實例信息。
    Kubernetes 是一個開源容器編排系統,用于自動化軟件部署、擴展和管理。Shadowserver 基金會開始掃描可訪問的 Kubernetes API 實例,這些實例以 200 OK HTTP 響應對探測器進行響應。
    滿足安全與合規要求已成為部署和管理Kubernetes的頭號挑戰。缺乏對Kubernetes最佳實踐的了解以及由此產生的錯誤配置會給云原生應用安全帶來巨大的威脅。
    Kubernetes部署應用
    2022-05-11 13:36:57
    STATEMENT聲明由于傳播、利用此文所提供的信息而造成的任何直接或者間接的后果及損失,均由使用者本人負責,雷神眾測及文章作者不為此承擔任何責任。雷神眾測擁有對此文章的修改和解釋權。如欲轉載或傳播此文章,必須保證此文章的完整性,包括版權聲明等全部內容。未經雷神眾測允許,不得任意修改或者增減此文章內容,不得以任何方式將其用于商業目的。
    Kubernetes基礎環境搭建
    2022-05-09 14:47:39
    雷神眾測擁有對此文章的修改和解釋權。如欲轉載或傳播此文章,必須保證此文章的完整性,包括版權聲明等全部內容。未經雷神眾測允許,不得任意修改或者增減此文章內容,不得以任何方式將其用于商業目的。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类