แแแ แ แแฃ แแแแแ แแแแแกแแแแ แ แกแแกแขแแแแก แแฃแจแแแแแกแแก แแแแแ แฃแกแแคแ แแฎแแแแแก แกแแแแแฎแ: แแแแแแขแแคแแแแชแแแก แฃแแ แฃแแแแแงแแคแ, แฃแคแแแแแแแก แแแแแฏแแแ, แแฃแแแขแ แแ แกแฎแแ แแแแชแแแแแ. แฃแแแ แจแแฅแแแแแแ Kubernetes-แแกแแแแก
แแแแแแขแแคแแแแชแแ
Kubernetes-แจแ แแ แ แขแแแแก แแแแฎแแแ แแแแแแ:
- แกแแ แแแกแแก แแแแแ แแจแแแ โ แแแแแ แแจแแแ, แ แแแแแกแแช แแแ แแแแก Kubernetes API;
- แแแแฎแแแ แแแแแ โ โแแแ แแแแฃแ แโ แแแแฎแแแ แแแแแแ, แ แแแแแแกแแช แแแ แแแแก แแแ แ, แแแแแฃแแแแแแแแ แกแแ แแแกแแแ.
แแ แขแแแแแก แจแแ แแก แแแแแแ แ แแแแกแฎแแแแแแ แแกแแ, แ แแ แกแแ แแแกแแก แแแแแ แแจแแแแกแแแแก แแ แแก แกแแแชแแแแฃแ แ แแแแแฅแขแแแ Kubernetes API-แจแ (แแแ แแกแ แแซแแฎแแแ - ServiceAccounts
), แ แแแแแแแช แแแแแแจแแ แแแฃแแแ แกแแฎแแแแ แกแแแ แชแแกแแแ แแ แแแขแแ แแแแชแแแก แแแแแชแแแแแแก แแ แแแแแแแแแกแแแ, แ แแแแแแแช แแแแฎแแแ แแแแกแขแแ แจแ Secrets แขแแแแก แแแแแฅแขแแแจแ. แแกแแแ แแแแฎแแแ แแแแแแ (แกแแ แแแกแแก แแแแแ แแจแแแ) แซแแ แแแแแแ แแแแแแแฃแแแ Kubernetes แแแแกแขแแ แจแ แแแจแแแแฃแแ แแ แแชแแกแแแแก Kubernetes API-แแ แฌแแแแแแก แฃแคแแแแแแแก แแแ แแแแกแแแแก.
แฉแแแฃแแแแ แแ แแแแฎแแแ แแแแแแก แแ แแฅแแ แฉแแแแฌแแ แแแ Kubernetes API-แจแ: แแกแแแ แฃแแแ แแแ แแแ แแแ แ แแแฅแแแแแแแแแ. แแกแแแ แแแแแฃแแแแแแแ แแแแกแขแแ แแก แแแ แแ แแชแฎแแแ แแแ แแแแแแแแแแแกแแแแก แแ แแ แแชแแกแแแแกแแแแก.
แแแแแแฃแแ API แแแแฎแแแแ แแแแแแจแแ แแแฃแแแ แแ แกแแ แแแกแแก แแแแแ แแจแแแ, แแแแฎแแแ แแแแแแแ, แแ แแแแแแแ แแแแแแแฃแ แแ.
แแแแฎแแแ แแแแแก แแแแแแขแแคแแแแชแแแก แแแแแชแแแแแ แแแแชแแแก:
- แแแแฎแแแ แแแแแก แกแแฎแแแ โ แแแแฎแแแ แแแแแก แกแแฎแแแ (แจแแแแฎแแแแแ แแแ แซแแแแแแ แ!);
- UID - แแแแฅแแแแ แฌแแแแแฎแแแแ แแแแฎแแแ แแแแแก แกแแแแแแขแแคแแแแชแแ แกแขแ แแฅแแแ, แ แแแแแแช แแ แแก โแฃแคแ แ แแแแแแแแแแ แฃแแ แแ แฃแแแแแแฃแ แ, แแแแ แ แแแแฎแแแ แแแแแก แกแแฎแแแโ;
- แฏแแฃแคแแแ - แฏแแฃแคแแแแก แกแแ, แ แแแแแแกแแช แแแแฎแแแ แแแแแ แแแฃแแแแแก;
- แแแแแขแแแแแ โ แแแแแขแแแแแ แแแแแแ, แ แแแแแแ แแแแแงแแแแแ แจแแกแแซแแแแแแแ แแแขแแ แแแแชแแแก แแแฅแแแแแแแ.
Kubernetes-แก แจแแฃแซแแแ แแแแแแงแแแแก แแแแแแขแแคแแแแชแแแก แแแฅแแแแแแแแแก แแแแ แ แแแแแแแแ: X509 แกแแ แแแคแแแแขแแแ, Bearer tokens, แแแแแแขแแคแแแแชแแแก แแ แแฅแกแ, HTTP Basic Auth. แแ แแแฅแแแแแแแแแก แแแแแงแแแแแแ, แจแแแแซแแแแ แแแแแฎแแ แชแแแแแ แแแขแแ แแแแชแแแก แกแฅแแแแแ แแแแ แ แแแแแแแแแ: แกแขแแขแแแฃแ แ แคแแแแแแแ แแแ แแแแแแ OpenID OAuth2-แแแ.
แฃแคแ แ แแแขแแช, แจแแกแแซแแแแแแแ แ แแแแแแแแ แแแขแแ แแแแชแแแก แกแฅแแแแก แแ แแแ แแฃแแแ แแแแแงแแแแแ. แแแแฃแแแกแฎแแแแแ, แแแแกแขแแ แ แแงแแแแแก:
- แกแแ แแแกแแก แแแแแ แแจแแก แแแจแแแแ - แกแแ แแแกแแก แแแแแ แแจแแแแกแแแแก;
- X509 - แแแแฎแแแ แแแแแแแกแแแแก.
แกแแแแแฎแ ServiceAccounts-แแก แแแ แแแแก แจแแกแแฎแแ แกแชแแแแแแ แแ แกแขแแขแแแก แคแแ แแแแแก, แแแแ แแ แแแแแแแก, แแแกแแช แกแฃแ แก แฃแคแ แ แแแขแแแฃแ แแ แแแแชแแแก แแ แกแแแแแฎแก, แแแ แฉแแแ แแแแฌแงแแ
แกแแ แแแคแแแแขแแแ แแแแฎแแแ แแแแแแแกแแแแก (X.509)
แกแแ แแแคแแแแขแแแแแ แแฃแจแแแแแก แแแแกแแแฃแ แ แแแ แแแแชแแแก:
- แกแแแแแแซแ แแแแแ:
mkdir -p ~/mynewuser/.certs/ openssl genrsa -out ~/.certs/mynewuser.key 2048
- แกแแ แขแแคแแแแขแแก แแแแฎแแแแแก แแแแแ แแ แแแ:
openssl req -new -key ~/.certs/mynewuser.key -out ~/.certs/mynewuser.csr -subj "/CN=mynewuser/O=company"
- แกแแ แแแคแแแแขแแก แแแแฎแแแแแก แแแแฃแจแแแแแ Kubernetes แแแกแแขแฃแ แ CA แแแแแแจแแแแก แแแแแงแแแแแแ, แแแแฎแแแ แแแแแก แกแแ แแแคแแแแขแแก แแแแแแแแ (แกแแ แแแคแแแแขแแก แแแกแแฆแแแแ, แแฅแแแ แฃแแแ แแแแแแงแแแแ แแแแแ แแจแ, แ แแแแแกแแช แแฅแแก แฌแแแแแ Kubernetes แแแแกแขแแ แแก CA แแแแแแจแแ, แ แแแแแแช แแแแฃแแแกแฎแแแแแ แแแแแแ แแแแก
/etc/kubernetes/pki/ca.key
):openssl x509 -req -in ~/.certs/mynewuser.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out ~/.certs/mynewuser.crt -days 500
- แแแแคแแแฃแ แแชแแแก แคแแแแแก แจแแฅแแแ:
- แแแแกแขแแ แแก แแฆแฌแแ แ (แแแฃแแแแแ CA แกแแ แขแแคแแแแขแแก แคแแแแแก แแแกแแแแ แแ แแ แแแแแแ แแแแ แแแแแ แแขแฃแแ แแแแกแขแแ แแก แแแกแขแแแแชแแแกแแแแก):
kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/pki/ca.crt --server=https://192.168.100.200:6443
- แแ แ แแแแ แแ แแ แแกแ แแแแแแแแแแฃแแ แแแ แแแแขแ - แแฅแแแ แแ แแญแแ แแแแแ แซแแ แแฃแแ แกแแ แแแคแแแแขแแก แแแแแแแแ (แแแจแแ kubectl แแ แจแแแแแฌแแแแก แแแแกแขแแ แแก api-แกแแ แแแ แแก แกแแกแฌแแ แแก):
kubectl config set-cluster kubernetes --insecure-skip-tls-verify=true --server=https://192.168.100.200:6443
- แแแแฎแแแ แแแแแก แแแแแขแแแ แแแแคแแแฃแ แแชแแแก แคแแแแจแ:
kubectl config set-credentials mynewuser --client-certificate=.certs/mynewuser.crt --client-key=.certs/mynewuser.key
- แแแแขแแฅแกแขแแก แแแแแขแแแ:
kubectl config set-context mynewuser-context --cluster=kubernetes --namespace=target-namespace --user=mynewuser
- แแแแฃแแแกแฎแแแแ แแแแขแแฅแกแขแฃแ แ แแแแแแแแ:
kubectl config use-context mynewuser-context
- แแแแกแขแแ แแก แแฆแฌแแ แ (แแแฃแแแแแ CA แกแแ แขแแคแแแแขแแก แคแแแแแก แแแกแแแแ แแ แแ แแแแแแ แแแแ แแแแแ แแขแฃแแ แแแแกแขแแ แแก แแแกแขแแแแชแแแกแแแแก):
แแแแแแฆแแแจแแฃแแ แแแแแแฃแแแชแแแแแก แจแแแแแ, แคแแแแจแ .kube/config
แจแแแฅแแแแแ แแกแแแ แแแแคแแแฃแ แแชแแ:
apiVersion: v1
clusters:
- cluster:
certificate-authority: /etc/kubernetes/pki/ca.crt
server: https://192.168.100.200:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
namespace: target-namespace
user: mynewuser
name: mynewuser-context
current-context: mynewuser-context
kind: Config
preferences: {}
users:
- name: mynewuser
user:
client-certificate: /home/mynewuser/.certs/mynewuser.crt
client-key: /home/mynewuser/.certs/mynewuser.key
แแแแคแแแฃแ แแชแแแก แแแแแ แแจแแแกแ แแ แกแแ แแแ แแแก แจแแ แแก แแแแแชแแแแก แแแกแแแแแแแแแแแ, แกแแกแแ แแแแแแ แจแแแแแแ แฆแแแแแแแแก แแแแจแแแแแแแแแแก แ แแแแฅแขแแ แแแ:
-
certificate-authority
-
client-certificate
-
client-key
แแแแกแแแแแก แแฅแแแ แจแแแแซแแแแ แแแจแแคแแ แแ แแแแจแ แแแแแแแแฃแแ แคแแแแแแ base64-แแก แแแแแงแแแแแแ แแ แแแแ แแแแกแขแ แแ แแ แแกแแแ แแแแคแแแฃแ แแชแแแจแ, แแแแแแขแแ แกแฃแคแแฅแกแ แแแแแแจแแแแก แกแแฎแแแก. -data
, แ.แ. แ แแแแแแแช แแแแฆแ certificate-authority-data
แ.แจ.
แกแแ แแแคแแแแขแแแ kubeadm-แแ
แแแแแจแแแแแ
kubeadm alpha kubeconfig user --client-name=mynewuser --apiserver-advertise-address 192.168.100.200
NB: แแฃแชแแแแแแแแ แ แแแแแแแก แแแกแแแแ แแ แจแแแแซแแแแ แแฎแแแแ api-แกแแ แแแ แแก แแแแคแแแฃแ แแชแแแจแ, แ แแแแแแช แแแแฃแแแกแฎแแแแแ แแแแแแ แแแแก /etc/kubernetes/manifests/kube-apiserver.yaml
.
แจแแแแแแ แแแฆแแแฃแแ แแแแคแแแฃแ แแชแแ แแแแแแ stdout-แจแ. แกแแญแแ แแ แแแกแ แจแแแแฎแแ ~/.kube/config
แแแแฎแแแ แแแแแก แแแแแ แแจแ แแ แแแ แแแแก แชแแแแแจแ แแแแแแแแฃแ แคแแแแแ KUBECONFIG
.
แแแแฎแแ แ แฃแคแ แ แฆแ แแแ
แแแแแแแก, แแแกแแช แกแฃแ แก แฃแคแ แ แแแขแแแฃแ แแ แแแแแแก แแฆแฌแแ แแแ แกแแแแแฎแแแ:
-
แชแแแแ แกแขแแขแแ แแฃแแแ แแแขแแก แแคแแชแแแแฃแ แแแแฃแแแแขแแชแแแจแ แกแแ แขแแคแแแแขแแแแแ แแฃแจแแแแแก แจแแกแแฎแแ; -
แแแ แแ แกแขแแขแแ Bitnami-แแแ , แ แแแแแจแแช แกแแ แขแแคแแแแขแแแแก แแแชแแแแก แแ แแฅแขแแแฃแแ แแฃแแฎแแ แจแแแฎแ. -
แแแแแแ แแแแฃแแแแขแแชแแ แแแขแแ แแแแชแแแก แจแแกแแฎแแ Kubernetes-แจแ.
แแแขแแ แแแแชแแ
แแแแฃแแแกแฎแแแ แแแขแแ แแแแแฃแ แแแแแ แแจแก แแ แแฅแแก แแแแกแขแแ แแ แแฃแจแแแแแก แฃแคแแแแ. แแแแแ แแแแแแก แแแกแแชแแแแ, Kubernetes แแฎแแ แชแแแแแแก แแแขแแ แแแแชแแแก แแแฅแแแแแแก.
1.6 แแแ แกแแแแแ Kubernetes แแงแแแแแแ แแแขแแ แแแแชแแแก แขแแแก แ.แฌ แแแแแ (แแขแ แแแฃแขแแแแ แแแคแฃแซแแแแฃแแ แฌแแแแแแก แแแแขแ แแแ). แแแแก แจแแกแแฎแแ แแแขแแแแแ แจแแแแซแแแแ แแฎแแแแ
แแแแกแขแแ แแ แฌแแแแแแก แฃแคแแแแแแแก แแแงแแคแแก แแแแแแแแ แ (แแ แฃแคแ แ แแแฅแแแแ) แแแ แแฌแแแแแ RBAC (
RBAC-แแก แแแกแแแฅแขแแฃแ แแแแแ, แแฅแแแ แฃแแแ แแแฃแจแแแ Kubernetes api-แกแแ แแแ แ แแแ แแแแขแ แแ --authorization-mode=RBAC
. แแแ แแแแขแ แแแ แแแงแแแแแฃแแแ manifest-แจแ api-แกแแ แแแ แแก แแแแคแแแฃแ แแชแแแ, แ แแแแแแช แแแแฃแแแกแฎแแแแแ แแแแแแ แแแแก แแแแแแแก แแแกแฌแแ แแ /etc/kubernetes/manifests/kube-apiserver.yaml
, แแแแงแแคแแแแแแจแ command
. แแฃแแชแ, RBAC แฃแแแ แฉแแ แแฃแแแ แแแแฃแแแกแฎแแแแแ, แแกแ แ แแ, แกแแแแ แแฃแแแ, แแแแแ แแ แฃแแแ แแแแ แแแฃแแแ: แจแแแแซแแแแ แแแแก แแแแแแแฌแแแแ แแแแจแแแแแแแแ authorization-mode
(แฃแแแ แแฆแแแจแแฃแแจแ kube-apiserver.yaml
). แกแฎแแแแ แจแแ แแก, แแแก แแแแจแแแแแแแแแก แจแแ แแก แจแแแซแแแแ แแงแแก แกแฎแแ แกแแฎแแก แแแขแแ แแแแชแแ (node
, webhook
, always allow
), แแแแ แแ แแแ แแแแฎแแแแแก แแแกแแแแก แคแแ แแแแแก แแแ แแ แแแแขแแแแแ.
แกแฎแแแแ แจแแ แแก, แฉแแแ แฃแแแ แแแแแแแฅแแแงแแแ
แจแแแแแแ API แแ แแแฃแแแแ แแแแแแงแแแแแ Kubernetes-แจแ แฌแแแแแแก แแแกแแแแแขแ แแแแแแแ RBAC-แแ:
-
Role
ะธClusterRole
- แ แแแแแ, แ แแแแแแแช แแแกแแฎแฃแ แแแ แฌแแแแแแก แฃแคแแแแแแแก แแฆแฌแแ แแก: -
Role
แกแแจแฃแแแแแแก แแแซแแแแ แแฆแฌแแ แแ แฃแคแแแแแแ แกแแฎแแแแ แกแแแ แชแแจแ; -
ClusterRole
- แแแแกแขแแ แจแ, แแแ แจแแ แแก แแแแกแขแแ แแกแแแแก แกแแแชแแคแแแฃแ แแแแแฅแขแแแแ, แ แแแแ แแชแแ แแแแแซแแแ, แแ แแ แแกแฃแ แกแแแแก urls (แแแฃ แแ แแ แแก แแแแแแจแแ แแแฃแแ Kubernetes แ แแกแฃแ แกแแแแแ - แแแแแแแแแ,/version
,/logs
,/api*
); -
RoleBinding
ะธClusterRoleBinding
- แแแแแแงแแแแแ แจแแกแแแ แแแแRole
ะธClusterRole
แแแแฎแแแ แแแแแก, แแแแฎแแแ แแแแแแ แฏแแฃแคแแก แแ แกแแ แแแกแแก แแแแแ แแจแแ.
Role แแ RoleBinding แแ แแแฃแแแแ แจแแแฆแฃแแฃแแแ แกแแฎแแแแ แกแแแ แชแแ, แ.แ. แฃแแแ แแงแแก แแแแแ แกแแฎแแแแ แกแแแ แชแแจแ. แแฃแแชแ, RoleBinding-แก แจแแฃแซแแแ แแแแแ แแแก ClusterRole-แก, แ แแแแแแช แกแแจแฃแแแแแแก แแแซแแแแ แจแแฅแแแแ แแแแแแ แแแแแ แแแแแแก แแแแ แแแ แแ แแแแแขแ แแแแ แฌแแแแแ แแแแ แแแแแงแแแแแแ.
แ แแแแแ แแฆแฌแแ แก แฃแคแแแแแแก แฌแแกแแแแก แแแแ แแแแก แแแแแงแแแแแแ, แ แแแแแแช แจแแแชแแแก:
- API แฏแแฃแคแแแ - แแฎ
แแคแแชแแแแฃแ แ แแแแฃแแแแขแแชแแ apiGroups แแ แแแแแแแแแแkubectl api-resources
; - แ แแกแฃแ แกแแแ (แ แแกแฃแ แกแแแ:
pod
,namespace
,deployment
แแ แแกแ แจแแแแแ.); - แฒแแแแแ (แแแแแแ:
set
,update
แแ แ.แจ.). - แ แแกแฃแ แกแแแแก แกแแฎแแแแแ (
resourceNames
) - แแ แจแแแแฎแแแแแกแแแแก, แ แแแแกแแช แแฅแแแ แแญแแ แแแแแ แฌแแแแแ แแแแแ แแขแฃแ แ แแกแฃแ แกแแ แแ แแ แ แแ แขแแแแก แงแแแแ แ แแกแฃแ แกแแ.
แแแขแแ แแแแชแแแก แฃแคแ แ แแแขแแแฃแ แ แแแแแแแ Kubernetes-แจแ แจแแแแซแแแแ แแฎแแแแ แแแแ แแแ
RBAC แแ แแแฃแแแแแก แแแแแแแแแแ
แแแ แขแแแ Role
, แ แแแแแแช แกแแจแฃแแแแแแก แแแซแแแแ แแแแฆแแ แแแแแแแก แกแแ แแ แกแขแแขแฃแกแ แแ แแแแแแแ แแแ แแแ แกแแฎแแแแ แกแแแ แชแแจแ target-namespace
:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: target-namespace
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "watch", "list"]
แแแแแแแแ ClusterRole
, แ แแแแแแช แกแแจแฃแแแแแแก แแแซแแแแ แแแแฆแแ แแแแแแแก แกแแ แแ แกแขแแขแฃแกแ แแ แแแแแขแ แแแแ แแกแแแ แแแแ แแแแกแขแแ แจแ:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
# ัะตะบัะธะธ "namespace" ะฝะตั, ัะฐะบ ะบะฐะบ ClusterRole ะทะฐะดะตะนััะฒัะตั ะฒะตัั ะบะปะฐััะตั
name: secret-reader
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "watch", "list"]
แแแแแแแแ RoleBinding
, แ แแแแแแช แแแแฎแแแ แแแแแก แแซแแแแก แกแแจแฃแแแแแแก mynewuser
"แฌแแแแแฎแแ" pods in namespace my-namespace
:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods
namespace: target-namespace
subjects:
- kind: User
name: mynewuser # ะธะผั ะฟะพะปัะทะพะฒะฐัะตะปั ะทะฐะฒะธัะธะผะพ ะพั ัะตะณะธัััะฐ!
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role # ะทะดะตัั ะดะพะปะถะฝะพ ะฑััั โRoleโ ะธะปะธ โClusterRoleโ
name: pod-reader # ะธะผั Role, ััะพ ะฝะฐั
ะพะดะธััั ะฒ ัะพะผ ะถะต namespace,
# ะธะปะธ ะธะผั ClusterRole, ะธัะฟะพะปัะทะพะฒะฐะฝะธะต ะบะพัะพัะพะน
# ั
ะพัะธะผ ัะฐะทัะตัะธัั ะฟะพะปัะทะพะฒะฐัะตะปั
apiGroup: rbac.authorization.k8s.io
แฆแแแแกแซแแแแแก แแฃแแแขแ
แกแฅแแแแขแฃแ แแ, Kubernetes แแ แฅแแขแแฅแขแฃแ แ แจแแแซแแแแ แฌแแ แแแแแแแแแ แแงแแก แจแแแแแแแแแ แแ:
แแฃแแแ แแแขแแก แซแแ แแแแแ แแแแแแแแแขแ, แ แแแแแแช แแแกแฃแฎแแกแแแแแแแแ แแแแฎแแแแแแแก แแแแฃแจแแแแแแแ api-แกแแ แแแ แ. แแแแกแขแแ แแ แงแแแแ แแแแ แแชแแ แแแแแก แแแกแแ. แแ แจแแแ แแแฅแแแแแแแแแก แจแแกแแฎแแ แแแขแ แจแแแแซแแแแ แฌแแแแแแฎแแ แกแขแแขแแแจแ โ
แกแแกแขแแแแก แแฃแแแขแ แกแแแแขแแ แแกแ แคแฃแแฅแชแแแ Kubernetes-แจแ, แ แแแแแแช แแแแฃแแแกแฎแแแแแ แแแแแ แแฃแแแ. แแก แกแแจแฃแแแแแแก แแแซแแแแ แจแแฎแแแแแ แงแแแแ แแแ แแก Kubernetes API-แแ. แ แแแแ แช แแฅแแแ แแแฎแแแแ, แงแแแแ แแแฅแแแแแแ, แ แแแแแแช แแแแแแจแแ แแแฃแแแ แแแแแขแแ แแแแแแ แแ แแแแกแขแแ แแก แแแแแแแ แแแแแก แจแแชแแแแกแแแ, แฎแแ แชแแแแแแแ แแ API-แก แแแจแแแแแแ. แแแกแ แจแแกแแซแแแแแแแแแแก แแแ แแ แแฆแฌแแ แ (แ แแแแ แช แงแแแแแแแแก) แจแแแแซแแแแ แแฎแแแแ แแฅ
แแฅแแแแ แแแแแแแแแแ แ, แแฃแแแขแแก แแแกแแแฅแขแแฃแ แแแแแ, แฉแแแ แฃแแแ แแแแแแชแแ แกแแแ แกแแญแแ แ แแแ แแแแขแ แ แแแแขแแแแแ แจแ api-แกแแ แแแ แจแ, แ แแแแแแแช แฃแคแ แ แแแขแแแฃแ แแ แแ แแก แแฆแฌแแ แแแ แฅแแแแแ:
-
--audit-policy-file=/etc/kubernetes/policies/audit-policy.yaml
-
--audit-log-path=/var/log/kube-audit/audit.log
-
--audit-log-format=json
แแ แกแแแ แแฃแชแแแแแแแ แแแ แแแแขแ แแก แแแ แแ, แแ แแก แแ แแแแแ แแแแแขแแแแแ แแแ แแแแขแ แ, แ แแแแแแช แแแแแแจแแ แแแฃแแแ แแฃแแแขแแแ: แแฃแ แแแแแก แ แแขแแชแแแแแ แแแแฐแฃแแแก แแฆแฌแแ แแแแ. แแฃแ แแแแแก แแ แฃแแแแก แแแ แแแแขแ แแแแก แแแแแแแแ:
-
--audit-log-maxbackup=10
-
--audit-log-maxsize=100
-
--audit-log-maxage=7
แแแแ แแ แฉแแแ แแแแแ แฃแคแ แ แแแขแแแฃแ แแ แแ แแแกแแฃแแ แแแ - แแฅแแแ แจแแแแซแแแแ แแแแแแ แงแแแแ แแแขแแแ
แ แแแแ แช แฃแแแ แแฆแแแแจแแแ, แงแแแแ แแแ แแแแขแ แ แแแงแแแแแฃแแแ manifest-แจแ api-แกแแ แแแ แแก แแแแคแแแฃแ แแชแแแ (แแแแฃแแแกแฎแแแแแ /etc/kubernetes/manifests/kube-apiserver.yaml
), แแแแงแแคแแแแแแจแ command
. แแแแฃแแ แฃแแแแ 3 แกแแญแแ แ แแแ แแแแขแ แก แแ แแแแแแแแแแแแ แแกแแแ:
-
audit-policy-file
โ แแแ YAML แคแแแแแแแ, แ แแแแแแช แแฆแฌแแ แก แแฃแแแขแแก แแแแแขแแแแก. แแแก แจแแแแแ แกแก แแแแแแแแแแแ แแแแฃแแ แฃแแแแแแ, แแแแ แแ แแฎแแ แแฆแแแแจแแแ, แ แแ แคแแแแ แฃแแแ แแแแแฎแแแแแแก api-server แแ แแชแแกแแ. แแฅแแแแ แแแแแแแแแแ แ, แแฃแชแแแแแแแแ แแแกแ แแแแแแขแแแแแ แแแแขแแแแแ แแก แจแแแแแ, แ แแกแแแแกแแช แจแแแแซแแแแ แแแแแแขแแ แจแแแแแแ แแแแ แแแแคแแแฃแ แแชแแแก แจแแกแแแแแแก แแแแงแแคแแแแแแแจแ:volumeMounts: - mountPath: /etc/kubernetes/policies name: policies readOnly: true volumes: - hostPath: path: /etc/kubernetes/policies type: DirectoryOrCreate name: policies
-
audit-log-path
โ แแแ แแฃแ แแแแแก แคแแแแแแแ. แแแแแแ แแกแแแ แฎแแแแแกแแฌแแแแแ แฃแแแ แแงแแก api-แกแแ แแแ แแก แแ แแชแแกแแกแแแแก, แแแแขแแ แฉแแแ แแฆแแฌแแ แ แแแก แแแแขแแแก แแแแแแแแฃแ แแ:volumeMounts: - mountPath: /var/log/kube-audit name: logs readOnly: false volumes: - hostPath: path: /var/log/kube-audit type: DirectoryOrCreate name: logs
-
audit-log-format
- แแฃแแแขแแก แแฃแ แแแแแก แคแแ แแแขแ. แแแแฃแแแกแฎแแแแ แแ แแกjson
, แแแแ แแ แซแแแแ แขแแฅแกแขแแก แคแแ แแแขแ แแกแแแ แฎแแแแแกแแฌแแแแแแ (legacy
).
แแฃแแแขแแก แแแแแขแแแ
แแฎแแ แ แแช แจแแแฎแแแ แแฆแแแจแแฃแ แคแแแแก, แ แแแแแแช แแฆแฌแแ แก แฎแ-แขแงแแก แแแแแขแแแแก. แแฃแแแขแแก แแแแแขแแแแก แแแ แแแแ แแแแชแแคแชแแ แแ แแก level
, แญแ แแก แแแแ. แแกแแแ แจแแแแแแแ:
-
None
- แแ แจแแฎแแแแแ; -
Metadata
โ แแฃแ แแแแแก แแแแฎแแแแแก แแแขแแแแแแชแแแแแ: แแแแฎแแแ แแแแแ, แแแแฎแแแแแก แแ แ, แกแแแแแแ แ แแกแฃแ แกแ (แแแแ, แกแแฎแแแแ แกแแแ แชแ แแ แ.แจ.), แแแฅแแแแแแแก แขแแแ (แแแแ) แแ แ.แจ.; -
Request
โ แแฃแ แแแแแก แแแขแแแแแแชแแแแแ แแ แแแแฎแแแแแก แแ แแแแ; -
RequestResponse
โ แแฃแ แแแแแก แแแขแแแแแแชแแแแแ, แแแแฎแแแแแก แแ แแแแ แแ แแแกแฃแฎแแก แแ แแแแ.
แแแแ แแ แ แแแแ (Request
ะธ RequestResponse
) แแ แแแแ แแแแกแขแ แแ แแ แแแแฎแแแแแแ, แ แแแแแแกแแช แแ แฐแฅแแแแแ แฌแแแแแ แ แแกแฃแ แกแแแแ (แฌแแแแแ แ.แฌ. แแ แแ แแกแฃแ แกแแแแก url-แแแแ).
แแกแแแ แงแแแแ แแแแฎแแแแ แแแแแก แ แแแแแแแแ แแขแแแ:
-
RequestReceived
- แแขแแแ, แ แแแแกแแช แแแแฎแแแแ แแแฆแแแฃแแแ แแ แแชแแกแแ แแก แแแแ แแ แฏแแ แแแแแ แแ แแ แแก แแแแแชแแแฃแแ แแ แแชแแกแแ แแแแก แฏแแญแแแก แแแกแฌแแ แแ; -
ResponseStarted
โ แแแกแฃแฎแแก แกแแแแฃแ แแแ แแแแแแแแแ, แแแแ แแ แกแแแแ แ แแแแแ แแแแก แแ แแแแ แแแแแแแแแแแ. แจแแฅแแแแแแ แแ แซแแแแแแแแแ แแแแฎแแแแแแแกแแแแก (แแแแแแแแแ,watch
); -
ResponseComplete
โ แกแแแแกแฃแฎแ แแ แแแแ แแแแแแแแแ, แแแขแ แแแคแแ แแแชแแ แแ แแแแแแแแแแแ; -
Panic
โ แแแแแแแแแ แฌแแ แแแแฅแแแแแ แแ แแแแ แแแแฃแ แ แกแแขแฃแแชแแแก แแแแแแแแแแกแแก.
แแแแแกแแแแ แ แแแแแฏแแก แแแแแขแแแแแแกแแแแก แจแแแแซแแแแ แแแแแแงแแแแ omitStages
.
แแแแแขแแแแก แคแแแแจแ, แฉแแแ แจแแแแแซแแแ แแฆแแฌแแ แแ แ แแแแแแแแ แแแแงแแคแแแแแ แกแฎแแแแแกแฎแแ แแแแแก แแแแแ แแจแแแแ. แแแแแงแแแแแฃแแ แแฅแแแแ แแแ แแแแ แจแแกแแขแงแแแกแ แฌแแกแ, แ แแแแแแช แแแแแแแแ แแแแแขแแแแก แแฆแฌแแ แแจแ.
kubelet daemon แแแแแ แแแแ แแแแแคแแกแขแแก แชแแแแแแแแแก api-แกแแ แแแ แแก แแแแคแแแฃแ แแชแแแ แแ, แแฃ แ แแแแแแแ แแฆแแแฉแแแแแแ, แแแแแขแแแ แแแแก แแแแขแแแแแ แก api-แกแแ แแแ แแ. แแแแ แแ แแ แแก แแแแจแแแแแแแแแ แแแขแแแ: แแแแแขแแแแก แคแแแแจแ แชแแแแแแแแแ แแแแแ แแ แแแฃแแ แแฅแแแแ. แแแแแขแแแแก แคแแแแจแ แชแแแแแแแแแแก แจแแขแแแแก แจแแแแแ, แแฅแแแ แฃแแแ แแแแแขแแแ แแแ api-แกแแ แแแ แ แฎแแแแ. แแแแแแแแ api-แกแแ แแแ แ แแแฌแงแแแฃแแแ แ แแแแ แช kubectl delete
แแ แแแแแแฌแแแแก แแแก แแแแแขแแแ แแแแก. แฎแแแแ แแแแแฌแแแ แแแแก แแแแแแแแ docker stop
kube-masters-แแ, แกแแแแช แจแแแชแแแแ แแฃแแแขแแก แแแแแขแแแ:
docker stop $(docker ps | grep k8s_kube-apiserver | awk '{print $1}')
แแฃแแแขแแก แฉแแ แแแแกแแก แแแแจแแแแแแแแแแ แแแฎแกแแแแแ แแก แแฃแแ-แแแแกแแ แแแ แแ แแแขแแแ แแแ แแแ แแแแ. แแแ แซแแ, แแแ แแแแ แแแฎแกแแแ แแแแก แแแฎแแแ แแแ แแแแฎแแแแแก แแแแขแแฅแกแขแแก แจแแกแแแแฎแแ. แจแแกแแแ แแฌแงแแแ แแฎแแแแ แแแกแฃแฎแแก แกแแแแฃแ แแก แแแแแแแแแก แจแแแแแ. แแแขแแแ แแแ แแกแแแ แแแแแแแแแแฃแแแ แแฃแแแขแแก แแแแแขแแแแก แแแแคแแแฃแ แแชแแแแ.
แแแแแขแแแแก แแแแแแแแแแ
แแแแแ แจแแแฎแแแแ แแแแแขแแแแก แคแแแแแแแก แกแขแ แฃแฅแขแฃแ แแก แแแแแแแแแแแก แแแแแงแแแแแแ.
แแฅ แแ แแก แแแ แขแแแ แคแแแแ policy
แงแแแแแคแ แแก แแแแแแ แจแแกแแแ Metadata
:
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: Metadata
แแแแแขแแแแจแ แจแแแแซแแแแ แแแฃแแแแแ แแแแฎแแแ แแแแแแ แกแแ (Users
ะธ ServiceAccounts
) แแ แแแแฎแแแ แแแแแแ แฏแแฃแคแแแ. แแแแแแแแแ, แแกแ แฃแแฃแแแแแแแงแแคแ แกแแกแขแแแแก แแแแฎแแแ แแแแแแก, แแแแ แแ แงแแแแ แแแแแ แฉแแแก แแแแแแ แแแแฌแแ แ Request
:
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: None
userGroups:
- "system:serviceaccounts"
- "system:nodes"
users:
- "system:anonymous"
- "system:apiserver"
- "system:kube-controller-manager"
- "system:kube-scheduler"
- level: Request
แแกแแแ แจแแกแแซแแแแแแแ แแแแแแแแก แแฆแฌแแ แ:
- แกแแฎแแแแ แกแแแ แชแแแแ (
namespaces
); - แฒแแแแแ (แแแแแแ:
get
,update
,delete
แแ แกแฎแแ); - แ แแกแฃแ แกแแแ (แ แแกแฃแ แกแแแ, แจแแแแแแแแแ แแ:
pod
,configmaps
แแ แ.แจ.) แแ แ แแกแฃแ แกแแแแก แฏแแฃแคแแแ (apiGroups
).
แแแแฅแชแแแ แงแฃแ แแแฆแแแ แ แแกแฃแ แกแแแ แแ แ แแกแฃแ แกแแแแก แฏแแฃแคแแแ (API แฏแแฃแคแแแ, แ.แ. apiGroups), แแกแแแ แ แแแแ แช แแแแกแขแแ แจแ แแแแแกแขแแแแ แแแฃแแ แแแแ แแแ แกแแแแ, แจแแแแซแแแแ แแแแฆแแ แแ แซแแแแแแแแก แแแแแงแแแแแแ:
kubectl api-resources
kubectl api-versions
แจแแแแแแ แแฃแแแขแแก แแแแแขแแแ แแแฌแแแแแฃแแแ, แ แแแแ แช แกแแฃแแแแแกแ แแ แแฅแขแแแแก แแแแแแกแขแ แแ แแแ
apiVersion: audit.k8s.io/v1beta1
kind: Policy
# ะะต ะปะพะณะธัะพะฒะฐัั ััะฐะดะธั RequestReceived
omitStages:
- "RequestReceived"
rules:
# ะะต ะปะพะณะธัะพะฒะฐัั ัะพะฑััะธั, ััะธัะฐััะธะตัั ะผะฐะปะพะทะฝะฐัะธัะตะปัะฝัะผะธ ะธ ะฝะต ะพะฟะฐัะฝัะผะธ:
- level: None
users: ["system:kube-proxy"]
verbs: ["watch"]
resources:
- group: "" # ััะพ api group ั ะฟััััะผ ะธะผะตะฝะตะผ, ะบ ะบะพัะพัะพะผั ะพัะฝะพััััั
# ะฑะฐะทะพะฒัะต ัะตััััั Kubernetes, ะฝะฐะทัะฒะฐะตะผัะต โcoreโ
resources: ["endpoints", "services"]
- level: None
users: ["system:unsecured"]
namespaces: ["kube-system"]
verbs: ["get"]
resources:
- group: "" # core
resources: ["configmaps"]
- level: None
users: ["kubelet"]
verbs: ["get"]
resources:
- group: "" # core
resources: ["nodes"]
- level: None
userGroups: ["system:nodes"]
verbs: ["get"]
resources:
- group: "" # core
resources: ["nodes"]
- level: None
users:
- system:kube-controller-manager
- system:kube-scheduler
- system:serviceaccount:kube-system:endpoint-controller
verbs: ["get", "update"]
namespaces: ["kube-system"]
resources:
- group: "" # core
resources: ["endpoints"]
- level: None
users: ["system:apiserver"]
verbs: ["get"]
resources:
- group: "" # core
resources: ["namespaces"]
# ะะต ะปะพะณะธัะพะฒะฐัั ะพะฑัะฐัะตะฝะธั ะบ read-only URLs:
- level: None
nonResourceURLs:
- /healthz*
- /version
- /swagger*
# ะะต ะปะพะณะธัะพะฒะฐัั ัะพะพะฑัะตะฝะธั, ะพัะฝะพัััะธะตัั ะบ ัะธะฟั ัะตััััะพะฒ โัะพะฑััะธัโ:
- level: None
resources:
- group: "" # core
resources: ["events"]
# ะ ะตััััั ัะธะฟะฐ Secret, ConfigMap ะธ TokenReview ะผะพะณัั ัะพะดะตัะถะฐัั ัะตะบัะตัะฝัะต ะดะฐะฝะฝัะต,
# ะฟะพััะพะผั ะปะพะณะธััะตะผ ัะพะปัะบะพ ะผะตัะฐะดะฐะฝะฝัะต ัะฒัะทะฐะฝะฝัั
ั ะฝะธะผะธ ะทะฐะฟัะพัะพะฒ
- level: Metadata
resources:
- group: "" # core
resources: ["secrets", "configmaps"]
- group: authentication.k8s.io
resources: ["tokenreviews"]
# ะะตะนััะฒะธั ัะธะฟะฐ get, list ะธ watch ะผะพะณัั ะฑััั ัะตััััะพัะผะบะธะผะธ; ะฝะต ะปะพะณะธััะตะผ ะธั
- level: Request
verbs: ["get", "list", "watch"]
resources:
- group: "" # core
- group: "admissionregistration.k8s.io"
- group: "apps"
- group: "authentication.k8s.io"
- group: "authorization.k8s.io"
- group: "autoscaling"
- group: "batch"
- group: "certificates.k8s.io"
- group: "extensions"
- group: "networking.k8s.io"
- group: "policy"
- group: "rbac.authorization.k8s.io"
- group: "settings.k8s.io"
- group: "storage.k8s.io"
# ะฃัะพะฒะตะฝั ะปะพะณะธัะพะฒะฐะฝะธั ะฟะพ ัะผะพะปัะฐะฝะธั ะดะปั ััะฐะฝะดะฐััะฝัั
ัะตััััะพะฒ API
- level: RequestResponse
resources:
- group: "" # core
- group: "admissionregistration.k8s.io"
- group: "apps"
- group: "authentication.k8s.io"
- group: "authorization.k8s.io"
- group: "autoscaling"
- group: "batch"
- group: "certificates.k8s.io"
- group: "extensions"
- group: "networking.k8s.io"
- group: "policy"
- group: "rbac.authorization.k8s.io"
- group: "settings.k8s.io"
- group: "storage.k8s.io"
# ะฃัะพะฒะตะฝั ะปะพะณะธัะพะฒะฐะฝะธั ะฟะพ ัะผะพะปัะฐะฝะธั ะดะปั ะฒัะตั
ะพััะฐะปัะฝัั
ะทะฐะฟัะพัะพะฒ
- level: Metadata
แแฃแแแขแแก แแแแแขแแแแก แแแแแ แแ แแ แแแ แแ แแแแแแแแแ
แแฃแแแขแแก แแแแแแแแแแ แกแฌแ แแคแแ แ แแแแแ แแแ แจแแกแแซแแแแแแแ แแฆแฌแแ แแ แแแแฐแฃแแ. แแก แกแแแแแฎแ แแแคแแ แฃแแแ
แจแแแแแแแ
แกแขแแขแแแจแ แแแชแแแฃแแแ แฃแกแแคแ แแฎแแแแแก แซแแ แแแแแ แแแฅแแแแแแแแแก แแแแแฎแแแแ Kubernetes แแแแกแขแแ แแแจแ, แ แแแแแแแช แกแแจแฃแแแแแแก แแแซแแแแ แจแแฅแแแแ แแแ แกแแแแแแแแแฃแแ แแแแฎแแแ แแแแแก แแแแแ แแจแแแ, แแแแแงแแ แแแแ แฃแคแแแแแแ แแ แฉแแฌแแ แแ แแแแ แฅแแแแแแแแ. แแแแแแแแแแ, แ แแ แแก แกแแกแแ แแแแแ แแฅแแแแ แแแแแแแก, แแแแช แแกแแแแกแ แกแแแแแฎแแแแก แฌแแแแจแ แแแแก แแแแ แแฃแแแ แแฃ แแ แแฅแขแแแแจแ. แแกแแแ แแแ แฉแแแ, แฌแแแแแแฎแแ Kubernetes-แจแ แฃแกแแคแ แแฎแแแแแก แแแแแแ แกแฎแแ แแแกแแแแแแก แกแแ, แ แแแแแแช แแแชแแแฃแแแ "PS" -แจแ - แจแแกแแซแแแ แแแ แจแแ แแก แแแแแแ แกแแญแแ แ แแแขแแแแแ แแฅแแแแแแแก แแฅแขแฃแแแฃแ แ แแ แแแแแแแแแก แจแแกแแฎแแ.
PS
แแกแแแ แฌแแแแแแฎแแ แฉแแแแก แแแแแแ:
- ยซ
33+ Kubernetes แฃแกแแคแ แแฎแแแแแก แแแกแขแ แฃแแแแขแแแ "; - ยซ
แจแแกแแแแแ Kubernetes แฅแกแแแแก แแแแแขแแแแจแ แฃแกแแคแ แแฎแแแแแก แแ แแคแแกแแแแแแแแแกแแแแก "; - ยซ
RBAC-แแก แแแแแแ Kubernetes-แจแ "; - ยซ
9 แกแแฃแแแแแกแ แแ แแฅแขแแแ Kubernetes แฃแกแแคแ แแฎแแแแแกแแแแก "; - ยซ
11 แแแ, แ แแแ (แแ ) แแแฎแแ แแฃแแแ แแแขแแก แฐแแแแก แแกแฎแแแ แแแ ".
แฌแงแแ แ: www.habr.com