RBAC简介(一)
  1D6o7E39IQo1 2023年11月02日 51 0
查看当前授权信息
[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"]
创建Rolebinding关联role
[root@k8smaster4 sa]# cat rolebinding-demo.yaml 
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: reader-pods
  namespace: rbac
subjects:
- kind: User
  name: admin
  apiGroup: rbac.authorization.k8s.io
roleRef:
  name: role-demo
  kind: Role
  apiGroup: rbac.authorization.k8s.io
查询role
[root@k8smaster4 ~]# kubectl get role -n rbac
NAME        CREATED AT
role-demo   2023-06-16T07:00:59Zk
查询rolebinding
[root@k8smaster4 sa]# kubectl get rolebinding -n rbac
NAME          ROLE             AGE
reader-pods   Role/role-demo   26s
查看rolebinding详情
[root@k8smaster4 sa]# kubectl describe rolebinding role-demo2  -n rbac
Name:         role-demo2
Labels:       environment=test
Annotations:  <none>
Role:
  Kind:  ClusterRole
  Name:  cluster-admin
Subjects:
  Kind  Name  Namespace
  ----  ----  ---------
  User  es    


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  1D6o7E39IQo1   2023年11月02日   23   0   0 UserAccountserviceaccountrbac
  1D6o7E39IQo1   2023年11月02日   30   0   0 sarbac
  1D6o7E39IQo1   2023年11月02日   52   0   0 rolerbac
1D6o7E39IQo1
作者其他文章 更多

2023-11-13

2023-11-13

2023-11-13

2023-11-13

2023-11-13

2023-11-13

2023-11-13

2023-11-13