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

上一篇:艾伟:用 C# 实现带键值的优先队列


下一篇:使用 PyCharm 添加 Django 项目