# 1.概述
- 访问一个k8s集群的时候,需要经过三个步骤完成具体操作
- 第一步:认证
- 第二步:鉴权
- 第三步:准入控制
- 进行访问的时候,在这个过程中都需要经过 api-server
- api-server做统一协调。比如门卫
- 访问过程中需要证书、token、或者用户名+密码
- 如果访问pod需要 serviceAccount
# 1.1认证
- 传输安全:
- 比如对外不暴露8080端口,只能内部访问,对外使6443
- 客户端身份认证常用方式
- https证书认证,基于ca证书
- http token认证,通过token识别用户
- http基本认证:用户名+密码 认证
# 1.2.鉴权
- 基于RBAC鉴权操作
- RABC: 基于角色访问控制
# 1.3.准入控制
就是进行准入控制的列表,如果列表中有请求内容则通过,没有就拒绝
# 2.RBAC-Role-Based Access Control:基于角色的访问控制
# 角色
role:特定命名空间访问权限 (kubectl create ns xxx)
ClusterRole:对所有命名空间访问权限
# 角色绑定
roleBinding:角色绑定到主体
ClusterRoleBinding:集群角色绑定到主体
# 主体
user:用户
group:用户组
serviceAccount:服务账号
# 举一个🌰
- 创建一个命名空间
kubectl create ns roledemo
1
- 在新创建的命名空间创建一个pod
kubectl run nginx --image=nginx -n roledemo
kubectl -n reoledemo get pods
1
2
2
- 创建角色-通过yaml配置文件创建
kubectl create -f rbac-role.yaml
kubectl get role -n roledemo
1
2
2
- 创建角色绑定
kubectl apply -f rbac-rolebinding.yaml
kubectl get role,rolebinding -n roledemo
1
2
2
- 使用证书识别身份