查看当前授权信息
[root@k8smaster4 sc]# kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://192.168.0.119:6443
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
认证
kubernetes 是通过APIserver 对外提供服务,需要对访问APIServer的用户进行认证
授权
认证通过仅代表它是一个被APIServer信任的用户,能给访问APIServer;但是用户是否
具备增删改查权限,需要进行授权,即RBAC(ROLE-BASED ACCESS CONTROL)
准入控制
用户通过认证、授权,最后一步来到准入控制,8s提供多种准入控制策略
用户通过APIServer 认证、授权、持久化(即API对象存入到etcd)会经过准入控制器,
从而可以具备“变更和验证”
认证方式(一)
客户端认证,即双向TLS认证 (kubectl <-> APIServer)
Bearertoken: APIServer 通过非对称方式,将密码告诉kubectl服务,然后通过
该密码进行相互访问
以上两种都是kubect 通过kubeconfig文件配置的用户,访问APIServer
认证方式(二)
serviceaccount: 是解决内部访问认证授权方式; 通过Pod 与 APIServer交互时
采取的一种方式; serviceaccount 包含namespace、token、ca,且通过目录挂载
的方式给Pod,当Pod运行时会读取配置信息,通过配置进行与APIServer 交互
RBAC涉及配置参数
role
roleBingding
clusterRole
clusterRoleBingding
创建role Yaml
[root@k8smaster4 sa]# cat rbac-demo01.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: role-demo
namespace: rbac
labels:
environment: test
app: nginx-demo
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get","watch","list"]
标签:APIServer,name,kubernetes,admin,简介,认证,RBAC,授权
From: https://blog.51cto.com/u_11726705/6500068