Kubernetes(K8s)作為現代雲原生利用的核心基本設備,其保險性至關重要。認證(Authentication)跟受權(Authorization)是確保K8s集群保險的關鍵戰略。本文將深刻探究K8s的認證受權機制,幫助妳控制集群保險防護之道。
認證(Authentication)
認證是確保懇求者身份的過程。K8s供給了多種認證方法,以下是一些重要的認證方法:
1. HTTP Token認證
HTTP Token認證經由過程一個Token來辨認合法用戶。Token是一個複雜的字符串,對應一個用戶名,存儲在API Server可拜訪的文件中。客戶端在發動懇求時,須要在HTTP Header中包含Token。
apiVersion: v1
kind: Config
clusters:
- cluster:
server: https://kubernetes.default.svc
name: kubernetes
users:
- name: user
user:
token: <token>
2. HTTP Base認證
HTTP Base認證經由過程用戶名跟密碼停止認證。用戶名跟密碼經由過程BASE64算法編碼後,放在HTTP懇求的Header Authorization域中發送給效勞端。
Authorization: Basic <base64-encoded-username:password>
3. HTTPS證書認證
HTTPS證書認證是最嚴格的認證方法,基於CA根證書籤名的客戶端身份認證。客戶端須要供給由CA簽發的證書。
apiVersion: v1
kind: Config
clusters:
- cluster:
server: https://kubernetes.default.svc
name: kubernetes
users:
- name: user
user:
clientCertificateData: <client-certificate-data>
clientKeyData: <client-key-data>
受權(Authorization)
受權是斷定認證過的用戶能否有權限履行特定操縱的過程。K8s供給了多種受權方法,以下是一些重要的受權方法:
1. 基於角色的拜訪把持(RBAC)
RBAC是K8s中最常用的受權方法。管理員可能定義角色跟角色綁定,以把持用戶跟效勞賬戶對集群資本的拜訪權限。
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: admin
rules:
- apiGroups: [""]
resources: ["pods", "services", "nodes"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: admin-binding
namespace: default
subjects:
- kind: User
name: user
roleRef:
kind: Role
name: admin
apiGroup: rbac.authorization.k8s.io
2. 基於屬性的拜訪把持(ABAC)
ABAC是一種基於屬性的拜訪把持機制,容許用戶定義本人的拜訪戰略。
apiVersion: abac.authorization.k8s.io/v1
kind: Policy
metadata:
name: example
spec:
evaluation:
attributeConstraints:
- key: group
operator: In
values: ["group1", "group2"]
- key: user
operator: In
values: ["user1", "user2"]
effect: Allow
准入把持(Admission Control)
准入把持是K8s集群中的一種機制,用於在東西被長久化之前攔截懇求。它可能幫助實現一些額定的保險辦法,比方驗證懇求的東西或修改懇求的東西。
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
name: validate-pod
webhooks:
- name: validate-pod.example.com
rules:
- apiGroups: [""]
apiVersions: ["v1"]
operations: ["CREATE", "UPDATE"]
resources: ["pods"]
clientConfig:
service:
name: validate-pod-service
namespace: default
path: /validate-pod
admissionReviewVersions: ["v1"]
經由過程懂得跟控制K8s的認證受權戰略,妳可能有效地保護妳的集群保險。在現實利用中,倡議根據具體須要抉擇合適的認證受權方法,並按期停止保險審計,以確保集群的保險性。