iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0
自我挑戰組

馬克的 Kali Linux 與資安學習小筆記系列 第 25

30-25 Google GKE Security ( 3 ) - Network Security + workloads Security

  • 分享至 

  • xImage
  •  

Network Security


https://cloud.google.com/kubernetes-engine/docs/concepts/security-overview

這裡主要提到兩點

1. Limiting Pod-to-Pod communication

在預設的情況下, pod 與 pod 之間可以透過 pod ip 來溝通,但是以資安考量,這樣是不適合的,hacker 之要進到一個 pod 就可以連到所有的服務。

這裡建議使用 network policies 來進行限制,可以的話最好先限制所有的溝通,然後再來進行允許。

https://kubernetes.io/docs/concepts/services-networking/network-policies/

使用範例如下 :

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: default
spec:
  podSelector:
    matchLabels:
      role: db
  policyTypes:
    - Ingress
    - Egress
  ingress:
    - from:
        - ipBlock:
            cidr: 172.17.0.0/16
            except:
              - 172.17.1.0/24
        - namespaceSelector:
            matchLabels:
              project: myproject
        - podSelector:
            matchLabels:
              role: frontend
      ports:
        - protocol: TCP
          port: 6379
  egress:
    - to:
        - ipBlock:
            cidr: 10.0.0.0/24
      ports:
        - protocol: TCP
          port: 5978

然後以下為拒絕所有流量的寫法。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-all
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress

2. Filtering load balanced traffic

這裡的 load balanced 指的是 :

GCP load balancer + k8s service ( type LoadBalancer )

然後當你在使用時,建議 filtering 已經 authorized traffic,不要讓所有的請求都進到裡面,然後這裡有兩種手法 :

  • 在 service 設定 loadBalancerSourceRanges。通過這個配置參數,您可以提供一個 CIDR 範圍列表,指定您允許訪問 Service 的地址。如果不配置 loadBalancerSourceRanges,則所有地址都被允許通過其外部 IP 訪問 Service。

  • 不需要外部訪問 service 的情況使用 internal load balancer.。

Securing your workloads


https://cloud.google.com/kubernetes-engine/docs/concepts/security-overview

1. Limiting Pod container process privileges

限制每個 pod container 的 process 權限,像在 gke autopilot 就有強制限定了這件事,下面這份文件中就有提到 autopilot 為了資安,有限制那些 :

https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-security#built-in-security

然後主要的手法如下 :

  • 使用 gke 所提到的 security context,這個可以設定 pod 的 container。

  • 然後如果想要以 cluster 層級來設定,可以使用 PodSecurityAdmission controller。

2. Giving Pods access to Google Cloud resources

這個 node security 那事實上有不小心提到,我們可以用 workload identity 來進行這個的限制。

3. Using Binary Authorization ( 可以想成 CI 的安全優化 )

Binary Authorization 是 Google Cloud 上的一個服務,它可以確保我們的 application 的 software supply-chain security 的安全。

我們這裡可以強制執行 Binary Authorization,這可以幫助防止未經過安全審查的 code 進入正式環境。

而且還可以使用 Binary Authorization 持續驗證(CV 可以確保與 Pod 相關聯的 container 與 image 定期受監控,以確保它們符合您內部流程的不斷演變。這意味著容器映像會受到定期的驗證,以確保其符合安全標準。


上一篇
30-24 Google GKE Security ( 2 ) - Control plane security、Node security
下一篇
30-26 Docker - Security Best practices
系列文
馬克的 Kali Linux 與資安學習小筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言