kubernets(CKA):管理基于角色的访问控制,RBAC(一)


前言

复习CKA基本知识


一、RBAC鉴权是什么?

基于角色(Role)的访问控制(RBAC)是一种基于组织中用户的角色来调节控制对 计算机或网络资源的访问的方法。

二、基本意义

1.Role 和 ClusterRole

RBAC 的 Role 或 ClusterRole 中包含一组代表相关权限的规则。

Role 总是用来在某个namespace 内设置访问权限;在你创建 Role 时,你必须指定该 Role 所属的名字空间。

ClusterRole 则是一个集群作用域的资源。

ClusterRole 3个作用:

  1. 定义对某namespace资源的访问权限,并将在各个名字空间内完成授权
  2. 定义对namespace资源的权限,并跨namespace授予权限
  3. 定义群集范围内资源的权限。

2.Role和ClusterRole

ROLE
1.Role的yaml部分实例,摘自官方https://kubernetes.io/
2.下面是“default””命名空间中的一个示例角色,并且授予pod读取权限

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

ClusterRole

ClusterRole可用于授予与角色相同的权限。因为ClusterRoles是集群范围的,所以您还可以使用它们来授予对以下内容的访问权限:

  • node,节点
  • endpoint, 端点,健康监测等
  • pod,namespace

3.RoleBinding 和 ClusterRoleBinding

  • RoleBinding

RoleBinding将角色中定义的权限授予一个用户或一组用户。它包含一个表现对象(用户、组或服务帐户),以及对被授予角色的引用。RoleBinding授予特定namespace内的权限,而ClusterRoleBinding授予访问集群范围的权限。。

  • ClusterRoleBinding
    RoleBinding可以引用同一namespace中的任何角色。

PS:RoleBinding

RoleBinding示例

apiVersion: rbac.authorization.k8s.io/v1
# 这个角色绑定允许“jane”读取“default”namespace中的pod.
# You need to already have a Role named "pod-reader" in that namespace.
kind: RoleBinding
metadata:
  name: read-pods
  namespace: default
subjects:
# You can specify more than one "subject"
- kind: User
  name: jane # "name" is case sensitive
  apiGroup: rbac.authorization.k8s.io
roleRef:
  # “roleRef”指定Role/ClusterRole的绑定
  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
这必须与要绑定到的角色或ClusterRole的名称匹配
  apiGroup: rbac.authorization.k8s.io

ClusterRoleBinding 示例

apiVersion: rbac.authorization.k8s.io/v1
# This cluster role binding allows anyone in the "manager" group to read secrets in any namespace.
kind: ClusterRoleBinding
metadata:
  name: read-secrets-global
subjects:
- kind: Group
  name: manager # Name is case sensitive
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: secret-reader
  apiGroup: rbac.authorization.k8s.io

PS:
创建绑定后,不能更改它引用的role或ClusterRole。如果试图更改绑定的roleref,则会出现验证错误。如果确实要更改绑定的roleRef,则需要删除绑定对象并创建替换对象。

这种限制有两个原因:

  1. 使roleRef不可变允许授予某人对现有绑定对象的更新权限,以便他们可以管理主题列表,而不必更改授予这些主题的角色。
  2. 对不同角色的绑定是根本不同的绑定。要求删除/重新创建绑定以更改roleref可确保绑定中的完整主题列表将被授予新角色(而不是在未验证所有现有主题的情况下仅启用或意外修改roleref)

总结

以上就是今天要讲的内容,本文仅仅简单介绍了RBAC的概念。
详细可查看官方文档
https://kubernetes.io/docs/reference/access-authn-authz/rbac

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值