保證Kubernetes生產(chǎn)環(huán)境安全七條建議
限制網(wǎng)絡(luò)暴露
Kubernetes 重要組件的網(wǎng)絡(luò)暴露必須限制:其中 Kubelet API、Kubernetes Dashboard、ETCD 上述組件不要暴露到公網(wǎng),內(nèi)部暴露也盡量限制范圍。API server 如果非要對外暴露一定是提供HTTPS證書認(rèn)證的方式。
使用 RBAC
安全領(lǐng)域的堅守的準(zhǔn)則之一:最小化權(quán)限開放。通過RBAC 開放最小化權(quán)限。因為在k8s中serviceaccount 會自動注入到 pod 中的,給予不必要的權(quán)限非常危險,尤其操作 Pod 的權(quán)限。
Secret
Secret 管理程序,商業(yè)的有如 Hashicorp Vault,開源的有 Sealed Secrets、Kamus 、Helm Secerts Plugin。原生sercet的base64 實在是太弱了。
Network Policy
Network Policy 作為在 Kubernetes 集群范圍內(nèi)控制應(yīng)用網(wǎng)絡(luò)訪問范圍的有效手段。但這個設(shè)置需要謹(jǐn)慎,否則很容易導(dǎo)致生產(chǎn)故障。
Security Context
Kubernetes 的 Security Context 定義 Pod 或 Container 的特權(quán)與訪問控制設(shè)置。包括非root運(yùn)行,開放各種capabilities等。比如,下面通過NET_ADMIN 開啟容器配置網(wǎng)絡(luò)的權(quán)限。
- apiVersion: v1
- kind: Pod
- metadata:
- name: security-context-demo-4
- spec:
- containers:
- - name: sec-ctx-4
- image: busybox
- securityContext:
- capabilities:
- add: ["NET_ADMIN"]
seccomp
過濾危險的系統(tǒng)調(diào)用。
安全容器
部分高危的應(yīng)用可用采用kata等安全容器部署,減少容器逃逸帶來的風(fēng)險。