0
点赞
收藏
分享

微信扫一扫

RBAC简介(一)

查看当前授权信息

[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"]

举报

相关推荐

0 条评论