認證:
操作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