K8S 使用RBAC进行鉴权管理

Posted Nemo Liu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8S 使用RBAC进行鉴权管理相关的知识,希望对你有一定的参考价值。

RBAC(Role-Based Access Control, 基于角色的访问控制),允许通过Kubernetes API动态配置策略。

K8S 是通过命名空间对资源进行隔离的,我们阔以通过RBAC 对用户进行资源授权。

查看已有的命名空间

参考官方文档

https://kubernetes.io/docs/reference/access-authn-authz/rbac/


1、架构

Role:授权特定命名空间的访问权限
ClusterRole:授权所有命名空间的访问权限
RoleBinding:将角色绑定到主体(即subject)
ClusterRoleBinding:将集群角色绑定到主体
User:用户
Group:用户组
ServiceAccount:服务账号


2、创建role,并定义角色拥有命名空间为test,读取pod的权限。

vi  rbac-role.yaml


kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: test
  name: pod-reader
rules:
- apiGroups: [""] # "" indicates the core API group
  resources: ["pods"]
  verbs: ["get", "watch", "list"]

创建

kubectl apply -f rbac-role.yaml

查看角色

kubectl get role -n test

3、创建用户并进行角色绑定

vi rbac-rolebinding.yaml


kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: read-pods
  namespace: test
subjects:
- kind: User
  name: nemo # Name is case sensitive
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role #this must be Role or ClusterRole
  name: pod-reader # this must match the name of the Role or ClusterRole you wish to bind to
  apiGroup: rbac.authorization.k8s.io


创建
kubectl apply -f  rbac-rolebinding.yaml
查看角色何角色绑定

kubectl get role,rolebinding -n test

4、创建配置文件

参见之前文章创建证书章节

5、使用指定的配置进行访问

指定访问的配置文件

kubectl --kubeconfig=config get pods -n test






    


以上是关于K8S 使用RBAC进行鉴权管理的主要内容,如果未能解决你的问题,请参考以下文章

K8S 安全与RBAC

K8s:通过 kubectl 插件 rakkess 查看集群 RBAC授权信息

K8s:通过 kubectl 插件 rakkess 查看集群 RBAC授权信息

K8s:通过 kubectl 插件 rakkess 查看集群 RBAC授权信息

Golang Gin/Ace/Iris/Echo RBAC 鉴权库

Kubernetes 安全权限管理深度剖析