目錄
- 第九章 安全認證
- 訪問控制概述
- 認證管理
- 授權管理 RBAC
- RBAC
- Role
- rules中的參數
- RoleBinding
- 9.4 準入控制
- 其他
- K8S的TLS是什么(DeepSeek)
- 1. 加密通信
- 2. 身份認證(Authentication)
- 3. 數據完整性
- K8s 中 TLS 的具體應用
- **1. API Server 的 TLS 配置**
- **2. etcd 的 TLS 配置**
- **3. kubelet 的 TLS 配置**
- **4. Ingress 的 TLS 配置**
- **4. 證書管理**
- **為什么必須使用 TLS?**
- **總結**
第九章 安全認證
實戰內容參考
K8S 75 kubernetes-1.29 部署 ingress-nginx1.10
訪問控制概述
認證管理
HTTPS證書認證:基于CA根證書簽名的雙向數字證書認證方式。
這種認證方式是安全性最高的一種方式,但同時也是操作起來最麻煩的一種方式。
授權管理 RBAC
RBAC
Role
rules中的參數
RoleBinding
cr
實戰
創建Role和RoleBinding,為devUser用戶授權
9.4 準入控制
了解原理
當前可配置的Admission Control準入控制如下:
其他
K8S的TLS是什么(DeepSeek)
K8S的TLS是什么,怎樣使用(詢問 DeepSeek AI的問題)
Kubernetes(k8s)使用 TLS(Transport Layer Security) 是為了確保集群內外的通信安全,防止數據泄露、篡改和中間人攻擊。以下是 TLS 在 Kubernetes 中的核心作用及具體應用場景:
1. 加密通信
TLS 對 Kubernetes 組件之間的通信進行加密,保護敏感數據(如認證令牌、配置信息、Pod 日志等)不被竊取。
- 核心場景:
- API Server 與客戶端(如 kubectl):所有通過 HTTPS 的請求和響應均加密。
- API Server 與 etcd:API Server 與 etcd 存儲集群狀態數據的通信需加密。
- 節點間通信:kubelet、kube-proxy 與 API Server 的交互需加密。
- Service 流量:通過 Ingress 暴露的 HTTPS 服務(如 Web 應用)使用 TLS 證書。
2. 身份認證(Authentication)
TLS 證書用于驗證組件或用戶的身份,確保只有授權的實體可以訪問集群資源。
- 核心場景:
- 組件間認證:
- API Server 驗證 kubelet、scheduler、controller-manager 的客戶端證書。
- etcd 驗證 API Server 的客戶端證書。
- 用戶認證:
- kubectl 使用客戶端證書或 Token 向 API Server 證明身份。
- Service Account:Pod 內應用通過 TLS 證書與 API Server 安全通信。
- 組件間認證:
3. 數據完整性
TLS 確保傳輸的數據未被篡改,防止中間人攻擊(MITM)。
- 核心場景:
- 配置下發:確保 kubelet 收到的 Pod 定義來自合法的 API Server。
- Secret 傳輸:加密敏感信息(如密碼、密鑰)的傳輸過程。
K8s 中 TLS 的具體應用
1. API Server 的 TLS 配置
API Server 是集群的“網關”,所有請求必須通過 TLS 加密和認證。
- 服務端證書:API Server 使用 TLS 證書對外提供 HTTPS 服務。
- 客戶端證書:
kubectl
、kubelet 等組件需提供有效證書才能訪問 API Server。
# API Server 啟動參數示例(/etc/kubernetes/manifests/kube-apiserver.yaml)
spec:containers:- command:- kube-apiserver- --tls-cert-file=/etc/kubernetes/pki/apiserver.crt # 服務端證書- --tls-private-key-file=/etc/kubernetes/pki/apiserver.key- --client-ca-file=/etc/kubernetes/pki/ca.crt # 客戶端 CA 根證書
2. etcd 的 TLS 配置
etcd 存儲集群所有敏感數據,必須通過 TLS 保護。
- 服務端證書:etcd 使用證書對外提供加密服務。
- 客戶端證書:API Server 需提供有效證書才能訪問 etcd。
# etcd 啟動參數示例(/etc/kubernetes/manifests/etcd.yaml)
spec:containers:- command:- etcd- --cert-file=/etc/kubernetes/pki/etcd/server.crt # 服務端證書- --key-file=/etc/kubernetes/pki/etcd/server.key- --client-cert-auth=true # 要求客戶端證書認證- --trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt # 客戶端 CA 根證書
3. kubelet 的 TLS 配置
kubelet 是節點上的代理,需通過 TLS 與 API Server 通信。
- 服務端證書:kubelet 提供 HTTPS 端點供 API Server 訪問(如日志、exec 功能)。
- 客戶端證書:kubelet 使用證書向 API Server 認證自己。
# kubelet 配置示例(/var/lib/kubelet/config.yaml)
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
serverTLSBootstrap: true # 自動生成服務端證書
clientCAFile: /etc/kubernetes/pki/ca.crt
4. Ingress 的 TLS 配置
通過 Ingress 暴露的 HTTPS 服務需配置 TLS 證書。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: my-ingress
spec:tls:- hosts:- api.example.comsecretName: tls-secret # 引用存儲證書的 Secretrules:- host: api.example.comhttp:paths:- path: /pathType: Prefixbackend:service:name: gateway-serviceport:number: 80
4. 證書管理
Kubernetes 依賴證書頒發機構(CA)體系管理證書:
- 根證書(CA):集群信任的根證書(如
/etc/kubernetes/pki/ca.crt
)。 - 自動輪換:kubelet 支持自動輪換證書(通過
RotateKubeletServerCertificate
特性)。 - 工具支持:
kubeadm
:自動生成集群證書。cert-manager
:自動化管理 Ingress 證書(如 Let’s Encrypt)。
為什么必須使用 TLS?
- 默認安全要求:Kubernetes 設計時即要求所有生產環境通信必須加密。
- 合規性:滿足 GDPR、HIPAA 等數據安全法規。
- 防御攻擊:
- 防止集群內部流量被監聽(如同一 VPC 內的其他服務)。
- 防止 API Server 被未授權訪問(如公網暴露的集群)。
- 零信任架構:默認不信任任何組件,所有通信需驗證身份。
總結
Kubernetes 使用 TLS 是構建安全集群的基石,涵蓋加密、認證和完整性三大核心安全需求。無論是集群內部組件通信,還是對外暴露服務,TLS 都是防止數據泄露和未授權訪問的關鍵防線。