【云原生kubernetes系列】--RBAC权限的使用

1.1 API网关

1.1.1 API网关介绍
  • API Server是k8s集群的网关,是能够与etcd通信的唯一入口

  • kube-controller-manager、kube-scheduler、kubelet、kube-proxy,以及后续部署的集群插件CoreDNS、ProjectCalico等,彼此间互不通信,彼此间的所有协作均经由API Server的REST API进行,它们都是API Server的客户端, 确保对API Server的安全访问至关重要。

  • 客户端对API Server的访问应经过身份验证以及权限检查

  • 为防止中间人攻击,各类客户与API Server间的通信都应使用TLS进行加密,kubelet也会监听一些套接字,提供一个小型的REST API

  • 10250是具有所在节点上Pod管理权限的读写端口,应谨慎管理

  • 10255仅提供只读操作,是REST API的子集

  • 10248是本地healthz端点使用的端口

1.1.2 API网关的访问流程

在这里插入图片描述
API Server内置一个三级别的访问控制机制
在这里插入图片描述

  • 认证:核验请求者身份的合法性
  • 授权:核验请求的操作是否获得许可
  • 准入控制:检查操作内容是否合规

插件化机制,每种访问控制机制均有一组专用的插件栈

  • 认证:身份核验过程遵循 ”或“ 逻辑,且任何一个插件核验成功后都将不再进行后续的插件验证
    1. 均不成功,则失败,或以“匿名者”身
      份访问
    2. 建议禁用“匿名者”
  • 授权:鉴权过程遵循“或”逻辑,且任何一个插件对操作的许可授权后都将不再进行后续的插件验证
    1. 均未许可,则拒绝请求的操作
  • 准入控制:内容合规性检查过程遵循 “与”逻辑,且无论成败,每次的操作请求都要经由所有插件的检验
    1. 将数据写入etcd前,负责检查内容的有效性,因此仅对“写”操作有效
    2. 校验和补全(订正)

1.2 RBAC

1.2.1用户分类
  • 普通用户(user):被外部或独立服务管理的。管理员分配私钥,常用的kubectl都是普通用户执行的
  • 服务账户(ServerAccount):是由k8s API管理的用户,它们绑定到特定的命名空间,并由API服务器自动创建或通过手动通过调用API创建。服务账户与存储为Secrets的一组证书相关联,这些凭据被挂载到pod中,以便进程与k8s API通信(登录dashboard时我们使用的就是SA)。如果是程序需求权限,将Role与ServiceAccount指定(这需要创建ServiceAccount并且在deployment中指定ServiceAccount),是给程序使用的。
    在这里插入图片描述
11.2.2k8s角色以及角色绑定
1、授权介绍

在RBAC API中,通过以下步骤进行授权:

1、**定义角色:**在定义角色时会指定此角色对于资源的访问控制的规则

2、**绑定角色:**将主体与角色进行绑定,对用户进行访问授权。

角色:

  • role:授权特定命名空间的访问权限(对命名空间)
  • clusterrole:授权集群的访问权限(对集群)

角色绑定

  • RoleBinding:将角色绑定到主体(即subject,其实就是把角色和用户、用户组、服务账户绑定)
  • ClusterRoleBinding:将集群角色绑定到主体

主体(subject)

  • 用户(user)
  • 用户组(group)
  • 服务账号(SA)
    在这里插入图片描述
2、角色介绍(Role和ClusterRole)

Role针对特定的命名空间,ClusterRole针对是整个集群范围内都生效

11.3k8s中kubeconfig的配置以及使用详解

概念:

kubeconfig文件保存了k8s集群的集群、用户、命名空间、认证的信息。kubectl命令使用kubeconfig文件获取集群的信息然后和API Server进行通信

注意:用于配置对集群的访问的文件称为 kubecconfig 文件。也就是说,kubeconfig 文件中包含的内容是集群的配置。但是,并不是必须有个文件名字叫 kubeconfig。默认情况下,kubectl命令从 $HOME/.kube 目录下查找一个名字叫做 config 的文件。可以通过 KUBECONFIG 环境变量或者–kubeconfig 参数来指定其他的 kubeconfig 文件。

kubeconfig中的组成部分:

  • Cluster:集群
  • user:用户
  • context:上下文

kubeconfig支持多集群、多用户、多认证

实际使用场景:

  • kubelet使用证书认证(kubelet和api server进行认证)
  • 用户使用token进行认证
  • 管理员为不同的用户提过不同的证书

都可以使用kubeconfig来组织集群、用户、命名空间的信息。同样也可以使用context在集群和命名空间之间进行切换

11.3实验

11.3.1 允许用户访问指定的Namespace下的资源

要求:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值