天天看點

kubernetes認證

認證:

操作k8s的步驟:

認證操作(通路k8s的正确賬号和安全認證)

授權檢查

準入控制(級聯到的其他資源的權限)

可由使用者控制使用何種“插件”實作認證

認證方式:

token-令牌認證

SSL認證

無序通過串行認證

授權檢查:

RBAC基于角色的通路控制

準入控制:

本身隻是用來定義對應授權檢查完成以後的安全檢查操作的

用戶端--> API server

user: username, uid
group:
extra: 額外資訊

用來請求某個特定的API資源
Request path
    /apis/apps/v1/namespace/default(name)/deployments/myapp-deploy
    (URL)
    
```
kubectl proxy --port=8080
curl http://localhost:8080/api/v1/namespace 
```

HTTP request verb--http請求動作
    get, post, put, delete
    
API request verb:
    get, list, create, update, patch, watch(get -w監視變動), proxy, deletecollection
Resource:
Subresource(子資源)
Namespace
API group
           

Object URL:

/apis/<GROUP>/<VERSION>/namespace/<NAMESPACE_NAME>/<KIND>[/OBJECT_ID]/


           

====

有哪些用戶端需要和api server互動?

kubectl create serviceaccount mysa -o yaml --dry-run
apiVersion: v1
kind: ServiceAccount
metadata:
  creationTimestamp: null
  name: mysa
#
kubectl create serviceaccount admin

kubectl get sa

kubectl describe sa admin

# pod中定義sa賬号

spec:
  containers:
  serviceAccountName: admin           

RBAC的實作

基于角色的通路控制

[root@k8s-master1 ~]# kubectl config view 
apiVersion: v1
clusters:
- cluster:    # 叢集
    certificate-authority-data: DATA+OMITTED    # 認證方式
    server: https://10.0.0.100:6443    # API Server服務的路徑
  name: kubernetes    # 多個叢集不能同名
contexts:
- context:
    cluster: kubernetes    # 指定了哪個叢集
    user: kubernetes-admin    # 被哪個使用者通路
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:    # 使用者
- name: kubernetes-admin    # 叢集的管理者
  user:
    client-certificate-data: REDACTED    # 用戶端證書
    client-key-data: REDACTED    # 證書的私鑰           

rolebinding

clusterrolebinding

繼續閱讀