在CentOS上安裝Kubernetes(k8s)時,權限設置是一個關鍵步驟,以確保集群的安全性和穩定性。以下是詳細的權限設置步驟和最佳實踐:
配置kubeconfig文件:
KUBECONFIG
。創建ServiceAccount和Role:
apiVersion: v1
kind: ServiceAccount
metadata:
name: my-service-account
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: my-role
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch", "create", "update", "delete"]
綁定Role和ServiceAccount:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: my-role-binding
roleRef:
kind: Role
name: my-role
apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
name: my-service-account
namespace: default
驗證權限:
kubectl auth can-i create pods --namespace default
/etc/passwd
文件,檢測并鎖定不必要的超級賬戶。adm
、lp
、sync
等,以減少系統被攻擊的風險。/etc/login.defs
文件來強制執行這些要求。chattr
命令給/etc/passwd
、/etc/shadow
、/etc/group
和/etc/gshadow
文件加上不可更改屬性,以防止未授權訪問。/etc/profile
文件中的TMOUT
參數,設置root賬戶的自動注銷時限。/etc/pam.d/su
文件,限制只有特定組的用戶才能使用su
命令切換為root。/etc/security/console.apps
下的相應程序的訪問控制文件,防止普通用戶執行關機、重啟等敏感操作。/etc/inittab
文件,禁用ctrl+alt+del組合鍵重啟機器的命令。/etc/rc.d/init.d/
目錄下所有文件的權限,只有root用戶可以操作這些服務。/etc/securetty
文件,限制root用戶只能在特定的tty設備上登錄。/etc/exports
文件具有最嚴格的訪問權限設置。firewalld
或iptables
配置防火墻規則,限制對服務器的訪問,只允許必要的端口對外開放。創建命名空間:
apiVersion: v1
kind: Namespace
metadata:
name: my-namespace
配置網絡策略:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
啟用加密通信:
openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -subj "/CNmy-ca" -days 10000 -out ca.crt
kubectl create secret generic my-secret --from-file ca.crt
kubectl apply -f encrypted-service.crt
kubectl apply -f encrypted-service.yaml
通過以上步驟,您可以在CentOS上成功安裝Kubernetes并設置權限,確保系統的安全性和穩定性。建議根據實際情況調整和優化這些安全措施,以適應特定的業務需求和環境。