认证:
操作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