首页 > 其他分享 >Kubernetes集群授权管理

Kubernetes集群授权管理

时间:2023-06-21 22:32:09浏览次数:40  
标签:name Kubernetes 绑定 用户 rbac 集群 授权 k8s authorization

当客户端发起API Server调用时,API Server内部要先进行用户认证,然后执行用户授权流程,即通过授权策略来决定一个API调用是否合法。对合法用户进行授权并且随后在用户访问时进行鉴权,是权限与安全系统的重要一环。简单地说,授权就是授予不同的用户不同的访问权限。

API Server目前支持以下几种授权策略(通过API Server的启动参数“--authorization mode”设置)。

(1)AlwaysDeny:表示拒绝所有请求,一般用于测试。

(2)AlwaysAllow:允许接收所有请求,如果集群不需要授权流程,则可以采用该策略,这也是Kubernetes的默认配置。

(3)ABAC(Attribute-based Access Control,基于属性的访问控制):使用用户配置的授权规则对用户请求进行匹配和控制。

(4)Webhook:通过调用外部REST服务对用户进行授权。

(5)RBAC(Role-Based Access Control):基于角色的访问控制,是实施面向企业安全策略的一种有效的访问控制方式。

(6)Node:一种专用模式,用于对kubelet发出的请求进行访问控制。

RBAC是k8s提供的一种授权策略,也是新版集群默认启用的方式。RBAC将角色和角色绑定分开,角色是指一组定义好的操作集群资源的权限,而角色绑定是将角色和用户、组或者服务账号实体绑定,从而赋予这些实体权限。

RBAC这种授权方式十分灵活,要赋予某个实体权限,只需要绑定相应的角色即可。针对RBAC机制,k8s提供了4种API资源:Role、ClusterRole、RoleBinding和ClusterRoleBinding。

(1)Role:只能用于授予对某一单一命名空间中资源的访问权限,因此在定义时必须指定namespace。

kind: Role

apiVersion: rbac.authorization.k8s.io/v1beta1

metadata:

  namespace: default

  name: pod-reader

rules:

- apiGroups: [""] #空字符串""表明使用core API group

  resources: ["pods"]

  verbs: ["get", "watch", "list"]c

(2)ClusterRole:针对集群范围的角色,能访问整个集群的资源。

ClusterRole定义可用于授予用户对某一特定命名空间,或者所有命名空间中的secret(取决于其绑定方式)的读访问权限。

kind: ClusterRole

apiVersion: rbac.authorization.k8s.io/v1beta1

metadata:

  #鉴于ClusterRole是集群范围对象,所以这里不需要定义"namespace"字段

  name: secret-reader

rules:

- apiGroups: [""]

  resources: ["secrets"]

  verbs: ["get", "watch", "list"]

(3)RoleBinding:将Role和用户实体绑定,从而赋予用户实体命名空间内的权限,同时也支持ClusterRole和用户实体的绑定。

定义的RoleBinding对象在default命名空间中将pod-reader角色授予用户jane。这一授权将允许用户jane从default命名空间中读取pod。

#以下角色绑定定义将允许用户"jane"从"default"命名空间中读取pod

kind: RoleBinding

apiVersion: rbac.authorization.k8s.io/v1beta1

metadata:

  name: read-pods

  namespace: default

subjects:

- kind: User

  name: jane

  apiGroup: rbac.authorization.k8s.io

roleRef:

  kind: Role

  name: pod-reader

  apiGroup: rbac.authorization.k8s.io

(4)ClusterRoleBinding:将ClusterRole和用户实体绑定,从而赋予用户实体集群范围的权限。

定义的ClusterRoleBinding允许在用户组manager中的任何用户都可以读取集群中任何命名空间中的secret。

#以下"ClusterRoleBinding"对象允许在用户组"manager"中的任何用户都可以读取集群中任何命

 名空间中的secret

kind: ClusterRoleBinding

apiVersion: rbac.authorization.k8s.io/v1beta1

metadata:

  name: read-secrets-global

subjects:

- kind: Group

  name: manager

  apiGroup: rbac.authorization.k8s.io

roleRef:

  kind: ClusterRole

  name: secret-reader

  apiGroup: rbac.authorization.k8s.io

标签:name,Kubernetes,绑定,用户,rbac,集群,授权,k8s,authorization
From: https://blog.51cto.com/key3feng/6532423

相关文章

  • Kubernetes Ingress 之 Nginx Ingress
    一.引言k8s提供了一下四种方式来暴露端口,分别是:ClusterIP,仅供集群内部访问NodePort,端口映射,给node随机分配端口,然后由service进行代理LoadBalancer,负载均衡模式,一般由云服务商提供负载均衡策略Ingress,网关模式,使用自定义的http(s)路由规则对Service进行代理。这也是实......
  • kubernetes Headless Services
    HeadlessServices介绍有时不需要或不想要负载均衡,以及单独的ServiceIP。遇到这种情况,可以通过显式指定ClusterIP(spec.clusterIP)的值为"None"来创建HeadlessService。你可以使用一个HeadlessService与其他服务发现机制进行接口,而不必与Kubernetes的实现捆绑在一起......
  • docker-compose多服务器部署kafka集群
    Kafka是一个开源的分布式事件流平台,依赖Zookeeper或者KRaft,本文基于Zookeeper。服务器IP配置本文使用三个服务器来做集群搭建,IP如下:nodeNameIPnode110.10.210.96node210.10.210.97node310.10.210.98部署zookeeper工作目录为/home/zookeepernode1......
  • Windows 2008服务器远程桌面授权的120天到期了,怎么激活?
    Windows2008以上服务器版本操作系统安装了远程桌面服务后,只能免费使用120天,这就会让很多用户头疼,多界面无法正常运行了多少会影响到业务。今天我和你们分享几个解决服务器多界面120天就到期的问题,希望可以帮助到你一、重复利用120天授权超时后,在“运行”输入 "regedit",进入注册......
  • kubeadm搭建单master多node的k8s集群
    一、实验环境准备镜像选择:CentOS-7-x86_64-DVD-2009.iso配置:4核、6G内存、80G硬盘兼容性:ESXI7.0及更高版本服务器信息:k8s集群角色ip主机名安装的组件控制节点10.104.26.192hqs-masterapiserver、controller-manager、scheduler、etcd、kube-proxy、docker、ca......
  • 使用docker compose部署emqx集群
    1、docker-compose.yml文件,内容如下:version:'3'services:emqx1:image:emqx:5.0.26container_name:emqx1environment:-"[email protected]"-"EMQX_CLUSTER__DISCOVERY_STRATEGY=static"-......
  • Oracl集群裸光告警事件
    一、近期发现两台Oracle服务器提示告警日志 二、通过命令查看,一直提示lpfc链路告警。dmesg-T 三、登录到光交换机通过命令查看发现这个端口有掉包现象postshow37##查看37这个端口信息 不丢包显示图 ......
  • Nacos集群搭建
    配置Nacos集群(1)进入nacos的conf目录,修改配置文件cluster.conf.example,重命名为cluster.conf(2)添加内容:集群节点信息IP127.0.0.1:8845127.0.0.1.8846127.0.0.1.8847(3)修改application.properties文件,添加数据库配置【放开注释......
  • centos7安装portainer集群
    1、首先保证服务器都已安装上docker2、如果Docker未安装,请按照官方文档中的说明安装Docker:https://docs.docker.com/engine/install/3、安装Docker后,使用以下命令在主节点上拉取Portainer镜像:dockerpullportainer/portainer-ce在从节点上拉取agent镜像dockerpullportaine......
  • 微服务 - Spring Cloud - Eureka Server单机和集群搭建、单机服务注册和集群服务注册
    Eureka服务管理Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能Eureka服务注册与发现Eur......