設定檔適用性:等級 1
不應使用預設服務帳戶,以確保授予應用程式的權限能夠更容易地進行審核和檢查。
Kubernetes 提供了一個預設的服務帳戶,當叢集工作負載沒有指定特定的服務帳戶給 pod 時,會使用此預設帳戶。當需要從 pod 存取 Kubernetes
API 時,應為該 pod 創建一個特定的服務帳戶,並授予該服務帳戶相應的權限。
預設服務帳戶應配置為不提供服務帳戶令牌,且不具有任何明確的權限分配。
注意預設情況下,預設服務帳戶允許其服務帳戶令牌掛載在其命名空間中的 Pod。
|
影響
所有需要訪問 Kubernetes API 的工作負載都需要創建一個明確的服務帳戶。
稽核
對於叢集中的每個命名空間,檢查分配給預設服務帳戶的權限,並確保除了預設值外,沒有其他角色或叢集角色與其綁定。
另外,請確保每個預設服務帳戶都設置了
automountServiceAccountToken: false。kubectl get serviceaccounts/default -o yaml
範例輸出:
apiVersion: v1 automountServiceAccountToken: false kind: ServiceAccount metadata: creationTimestamp: "2025-10-18T16:11:09Z" name: default namespace: default ...
補救
在 Kubernetes 工作負載需要特定訪問 Kubernetes API 伺服器的情況下,創建明確的服務帳戶。修改每個預設服務帳戶的配置以包含此值。
automountServiceAccountToken: false
