iT邦幫忙

2025 iThome 鐵人賽

DAY 26
0
自我挑戰組

30 天工程師雜學之旅系列 第 26

Kubernetes × HIPAA Part2 參考架構藍圖:網段、節點池、mTLS、KMS 與備份

  • 分享至 

  • xImage
  •  

1) 目標藍圖(概要)

  • 網路
    • 控制面/節點走私網,Bastion 或 VPN 才能管控;叢集對外以 API Gateway + Ingress,Egress 經 Egress Gateway 白名單。
    • 命名空間與節點池對應業務域:ns: ephI-core(處理/儲存 ePHI)、ns: ai-infer(模型推論)、ns: anon-analytics(去識別化分析)。
  • 服務間通訊:Service Mesh(Istio/Linkerd)開 STRICT mTLS;外露端點走 API Gateway/WAF。
  • 身分與授權:雲身分整合(OIDC/OAuth / AAD/OIDC),人/機器分離,Workload Identity 掛接。
  • 機密管理:Secrets 不入 Git;使用 Secrets Store CSI Driver 從雲 KMS 或 Vault 掛載;K8s Secrets 僅作為引用指標。
  • 加密:etcd 啟用 EncryptionConfiguration;PV 以雲硬碟/儲存層原生加密;備份(含 etcd、PVC、資料庫)加密並離線保存。
  • 供應鏈:私有 Registry + 簽章驗證,CI/CD 完整掃描與制品保存(Artifacts + SBOM)。

2) 關鍵組件設定範例

(a) Namespace 與 Pod Security Admission(PSA)

apiVersion: v1
kind: Namespace
metadata:
  name: ephi-core
  labels:
    pod-security.kubernetes.io/enforce: "restricted"
    pod-security.kubernetes.io/audit: "restricted"
    pod-security.kubernetes.io/warn: "restricted"

(b) 預設拒絕的 NetworkPolicy(東/西向全封,再逐步放行)

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-all
  namespace: ephi-core
spec:
  podSelector: {}
  policyTypes: ["Ingress", "Egress"]

範例:只允許 app=apiapp=db 的 5432 連線:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-api-to-db
  namespace: ephi-core
spec:
  podSelector:
    matchLabels:
      app: db
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: api
    ports:
    - protocol: TCP
      port: 5432

(c) Istio 嚴格 mTLS

apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: default
  namespace: ephi-core
spec:
  mtls:
    mode: STRICT

(d) API Server 靜態加密(etcd)

需在控制面設定 kube‑apiserver --encryption-provider-config

encryption-config.yaml

apiVersion: apiserver.config.k8s.io/v1
kind: EncryptionConfiguration
resources:
  - resources: ["secrets"]
    providers:
    - aescbc:
        keys:
        - name: key1
          secret: <base64-encoded-32-byte-key>
    - identity: {}

(e) Secrets Store CSI Driver(以雲 KMS 或 Vault)

apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: ephi-secrets
  namespace: ephi-core
spec:
  provider: azure
  parameters:
    usePodIdentity: "true"
    keyvaultName: "kv-prod"
    objects: |
      array:
        - | 
          objectName: db-password
          objectType: secret
    tenantId: "<tenant-guid>"

Pod 掛載:

volumeMounts:
- name: secrets-store
  mountPath: "/mnt/secrets"
volumes:
- name: secrets-store
  csi:
    driver: secrets-store.csi.k8s.io
    readOnly: true
    volumeAttributes:
      secretProviderClass: ephi-secrets

(f) 備份策略(方向與原則)

  • etcd、控制平面組態、Helm release、Namespace‑scoped 秘密、PVC/資料庫——全都要備份
  • 備份檔與金鑰分離保存;物件儲存啟用不可變(Object Lock/WORM)。
  • 每季進行還原演練,產出 RTO/RPO 佐證報告。

3) 供應鏈安全(CI/CD)

  • 建置步驟:原始碼 → SAST → 依賴漏洞掃描 → 建鏡像(最小化 Base)→ SBOM(CycloneDX/SPDX)→ 簽章(Cosign)→ Registry 強制驗簽 → 部署前 OPA/Kyverno 驗證。
  • 針對 ePHI 系統,禁止 latest 浮動,固定版本與雜湊。

4) 相關連結(Part 2)


上一篇
Kubernetes × HIPAA Part1 基礎觀念與威脅建模:K8s 與 HIPAA 的「共同責任」怎麼落地?
下一篇
Kubernetes × HIPAA Part3 控制與政策:RBAC、PSA、Admission、鏡像驗簽與審計
系列文
30 天工程師雜學之旅27
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言