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:通过 kubectl 插件 rakkess 查看集群 RBAC授权信息
K8s:通过 kubectl 插件 rakkess 查看集群 RBAC授权信息
K8s:通过 kubectl 插件 rakkess 查看集群 RBAC授权信息