美文网首页
K8S之权限管理

K8S之权限管理

作者: david161 | 来源:发表于2022-03-25 08:35 被阅读0次

RBAC

使用 RBAC 鉴权。基于角色(Role)的访问控制(RBAC)是一种基于企业中用户的角色来调节控制对计算机或网络资源的访问方法。 RBAC 使用 rbac.authorization.k8s.io API 组 来驱动鉴权操作,允许管理员通过 Kubernetes API 动态配置策略。
在 1.8 版本中,RBAC 模式是稳定的并通过 rbac.authorization.k8s.io/v1 API 提供支持。
要启用 RBAC,在启动 API 服务器时添加 --authorization-mode=RBAC 参数。

Role 和 ClusterRole

在 RBAC API 中,一个角色包含一组相关权限的规则。权限是纯粹累加的(不存在拒绝某操作的规则)。 角色可以用 Role 来定义到某个命名空间上, 或者用 ClusterRole 来定义到整个集群作用域。
一个 Role 只可以用来对某一命名空间中的资源赋予访问权限。 下面的 Role 示例定义到名称为"default" 的命名空间,可以用来授予对该命名空间中的 Pods 的读取权限:

apiVersion: rbac.authorization.k8s.io/v1 
kind: Role 
metadata: 
  namespace: default 
  name: pod-reader 
rules: 
- apiGroups: [""] # "" 指定核心 API 组 
  resources: ["pods"] 
  verbs: ["get", "watch", "list"]

ClusterRole 可以授予的权限和 Role 相同, 但是因为 ClusterRole 属于集群范围,所以它也可以授予以下访问权限:
集群范围资源 (比如 nodes)
非资源端点(比如 /healthz )
跨命名空间访问的有名字空间作用域的资源(如 Pods),比如运行命令 kubectl get pods --all- namespaces 时需要此能力
下面的 ClusterRole 示例可用来对某特定命名空间下的 Secrets 的读取操作授权, 或者跨所有命名空间执行授权(取决于它是如何绑定的):

apiVersion: rbac.authorization.k8s.io/v1 
kind: ClusterRole 
metadata: 
  # 此处的 "namespace" 被省略掉是因为 ClusterRoles 是没有命名空间的。 
  name: secret-reader 
rules: 
- apiGroups: [""] 
  resources: ["secrets"] 
  verbs: ["get", "watch", "list"]
RoleBinding 和 ClusterRoleBinding

角色绑定( RoleBinding )是将角色中定义的权限赋予一个或者一组用户。 它包含若干主体(用户,组和服务账户)的列表和对这些主体所获得的角色的引用。 可以使用 RoleBinding 在指定的命名空间中执行授权, 或者在集群范围的命名空间使用 ClusterRoleBinding 来执行授权。
一个 RoleBinding 可以引用同一的命名空间中的 Role 。 下面的例子 RoleBinding 将 pod-reader角色授予在 "default" 命名空间中的用户 "jane"; 这样,用户 "jane" 就具有了读取 "default" 命名空间中 pods 的权限。
roleRef 里的内容决定了实际创建绑定的方法。kind 可以是 Role 或 ClusterRole , name 将引用你要指定的 Role 或 ClusterRole 的名称。在下面的例子中,角色绑定使用 roleRef 将用户 "jane" 绑定到前文创建的角色 Role ,其名称是 pod-reader 。

apiVersion: rbac.authorization.k8s.io/v1 
# 此角色绑定使得用户 "jane" 能够读取 "default" 命名空间中的 Pods 
kind: RoleBinding 
metadata: 
  name: read-pods 
  namespace: default 
subjects: 
- kind: User 
  name: jane # Name is case sensitive 
  apiGroup: rbac.authorization.k8s.io 
roleRef: 
  kind: Role #this must be Role or ClusterRole 
  name: pod-reader # 这里的名称必须与你想要绑定的 Role 或 ClusterRole 名称一致 
  apiGroup: rbac.authorization.k8s.io

RoleBinding 也可以引用 ClusterRole ,对 ClusterRole 所定义的、位于 RoleBinding 命名空间内的资源授权。 这可以允许管理者在 整个集群中定义一组通用的角色,然后在多个命名空间中重用它们。

相关文章

  • K8S之权限管理

    RBAC 使用 RBAC 鉴权。基于角色(Role)的访问控制(RBAC)是一种基于企业中用户的角色来调节控制对计...

  • Mysql 用户权限管理

    MYSQL 用户权限 MySQL之权限管理 用户权限管理 SQL脚本 1.创建用户 PARAMETER'scorp...

  • 数据库 权限设计

    数据库 权限设计 -系统权限管理设计-通用权限管理设计 之 数据库结构设计 权限 用户 角色 组 用户表

  • Kubernetes 权限控制介绍

    K8s的用户和权限管理包括两个方面:认证和授权。认证解决用户是谁的问题,授权解决用户能做什么的问题。通过合理的权限...

  • 基于Feign初探Ranger Api

    Ranger Api之User管理 在大数据平台之权限管理组件 - Aapche Ranger[https://w...

  • Android6.0动态权限笔记

    参考: Android Training之权限管理 Android 6.0 RuntimePermission--...

  • [Android]USB开发

    声明:主要参照文档:Android开发之USB数据通信安卓USB通信之权限管理 第一:请求权限和请求权限回调(通过...

  • shell命令整理(三)之文件权限管理(上)

    文件权限 chown 更改文件的属主、属组 chmod 更改权限 使用数字的方法 文件权限管理之ACL getfa...

  • Linux权限管理之基本权限

    (Linux权限管理之基本权限-慕课网 http://www.imooc.com/learn/481) 第1章 ...

  • java

    linux:环境部署学习建议:1、权限管理之基本权限https://www.imooc.com/learn/481...

网友评论

      本文标题:K8S之权限管理

      本文链接:https://www.haomeiwen.com/subject/qdatjrtx.html