云厂商k8s认证鉴权流程介绍

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:   基于RBAC的role base鉴权是对kubernetes集群内模型资源进行访问控制的标准做法,同时各主流云厂商通常都有一套自身的访问控制引擎,就像EKS,GKE的IAM,AKS的ARM,阿里云的RAM服务;而对于普通用户来说,如何理解二者的区别和边界并做出正确的授权配置就成了一个令人头疼的问题。

  基于RBAC的role base鉴权是对kubernetes集群内模型资源进行访问控制的标准做法,同时各主流云厂商通常都有一套自身的访问控制引擎,就像EKS,GKE的IAM,AKS的ARM,阿里云的RAM服务;而对于普通用户来说,如何理解二者的区别和边界并做出正确的授权配置就成了一个令人头疼的问题。
  下面让我们来了解一下各主流云厂商k8s服务的认证鉴权流程。

AuthN & AuthZ in EKS

  EKS没有做到IAM与RBAC的统一授权,且仅支持CLI方式的集群内RBAC授权。默认使用aws-iam-authenticator完成请求的认证过程,其认证鉴权流程如下图所示:

1560344988741-7e790d5e-29ab-43ff-a7e1-eba7f81eed62.png

 1 首先用户客户端的config凭证中需要通过exec字段配置用于认证的roleARN和集群id
 2 EKS apiserver配置了认证webhook,收到认证请求后发送至aws-iam-authenticator server,server端通过IAM sts:GetCallerIdentity接口返回与指定的角色arn进行匹配完成认证,同时通过configmap中指定的arn与用户的映射关系找到k8s对应的用户或组返回

mapUsers:
  - userARN: arn:aws:iam::012345678901:user/Jane
    username: jane
  - userARN: arn:aws:iam::012345678901:user/Joe
    username: joe
AI 代码解读

 3 如果认证失败,apiserver返回401至客户端
 4 认证成功后,apiserver根据返回的用户或组进行RBAC鉴权,注意这里的RBAC鉴权所需的角色和绑定模型仍需要用户通过cli手工完成配置。

AuthN & AuthZ in GKE

  GKE在IAM中预置了几种面向k8s集群内的角色模型,用户可以通过GCP IAM控制台的绑定操作获取集群内k8s模型资源的使用权限,同时支持用户账号邮箱作为IAM和K8S认证的统一身份,从而部分实现了IAM与RBAC的授权统一,下图是GKE几种预置k8s应用角色和RBAC预置clusterrole之间的权限映射关系,在GKE文档中有对几种k8s相关预置角色的详细说明。

1560334555216-13266e4f-acc9-4ab8-8df0-0983956fb2e8.png

  这里用户需要注意的是GKE的Kubernetes Engine Admin角色相当于RBAC的cluster-admin,对集群内所有模型具有全部权限,Developer对应RBAC edit,Viewer对应RBAC view角色;而Kubernetes Engine Cluster Admin反而没有k8s集群内资源的使用权限,只有GKE cluster资源层面的管理权限,这种集群管理平面和集群内应用数据平面的权限隔离往往是令客户感到困扰的地方。

  另外,在实际的生产环境中,如果某用户在IAM控制台内被授予了内置的Kubernetes Engine Developer角色,那么他将拥有集群所有namespace的写权限,这也包括kube-system ns, 由于GKE还不支持ns粒度的一步授权,这在某些多租场景下是无法接受的。通常根据权限最小化原则,管理员只会给普通用户一个全局Viewer的权限,再通过手工配置RBAC角色绑定完成更细粒度的授权。在整个授权流程中IAM授权是基础,而通过RBAC配置可以实现上层应用的精细化权限控制。

AuthN & AuthZ in AKS

  AKS提供了Azure AD与k8s之间的认证身份集成能力,具体请参见,用户可面向Azure AD中的账号邮箱或组id在k8s集群中进行相应的RBAC角色绑定,为此AKS提供了CLI形式的绑定命令,当然这个过程仍然和Azure Resource Manager中的集群管理平面RBAC授权是分裂的两步操作。

  值得一提的是Azure AD与AKS的认证集成利用k8s原生的oidc webhook认证模式很好的弥补k8s在用户账号管理能力上的不足,同时能够更好地支持吊销AD内用户访问k8s的集群凭证。

AuthN & AuthZ in ACK&AMK

  阿里云容器服务的访问控制授权同样需要划分为管理平面授权和数据平面的授权,其中管理平面授权面向的是阿里云资源的权限控制,比如子账号在控制台对集群的可见性,集群自动伸缩,下载证书等权限都是由阿里云RAM服务来统一控制的,这也和阿里云其他云服务资源的授权模式保持一致。而对于集群内k8s模型的权限控制,仍旧通过RBAC角色配置完成,整体授权流程如下图所示,注意同GKE类似,RAM授权仍旧是整个授权流程的基础,用户需要确保首先完成RAM授权获得集群可见权限的基础上,在上层完成集群内应用资源的RBAC授权。

1560341322993-8250e130-b285-43c5-9ce7-f297c9352f37.png

  相较于其他云厂商的授权流程,阿里云容器服务控制台提供了可视化的授权管理页面,提供了如下能力:

  • 提供了四种常用预置RBAC角色模板的可视化增删配置,降低了权限管理员的rbac学习成本
  • 支持集群namespaces细粒度授权
  • 同时支持多个集群内用户自定义clusterrole的自动绑定能力
  • 支持RAM授权校验能力,同时可以根据当前授权配置帮助用户生成一个权限最小化的只读RAM策略模板方便管理员进行管理平面的RAM授权
  • 支持主账号和具有集群管理员角色子账号的分级授权配置
  • 支持所有集群维度的批量授权
  • 使用阿里云uid为RAM和RBAC授权的统一身份id,降低差异性;同时提供用户对应config凭证的一键下载能力
  • 提供了基于RAM的k8s集群联合认证支持工具

   管理平面的云平台资源授权和集群内应用资源的RBAC授权本来就是一个专业化和精细化的复杂操作,通过如上特性,阿里云容器服务希望能够帮助用户更好的理解二者的区别并降低整个授权流程的复杂度。

   在以上几个主流云厂商k8s集群已经具备的认证授权能力之外,下面的几个rbac相关的开源工具也是对整个授权流程的有效补充:

  • kubectl auth can-i - kubectl原生命令,查询指定用户是否有相应的请求权限
  • rakkess - 基于auth can-i,全局展示指定用户对资源的所有操作权限
  • kubectl-who-can - 用于查询哪些用户在该集群中有指定操作的权限
  • rbac-lookup - 查询指定用户的所有RBAC绑定权限
  • RBAC-manager - 通过CRD的方式管理用户对应的所有绑定,同时支持在满足label selectors的ns中自动配置绑定
相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
打赏
0
0
0
0
78249
分享
相关文章
单点登录云平台子系统集成方式
单点登录云平台子系统集成方式
126 0
重磅干货,免费三方网络验证[用户系统+CDK]全套API接口分享教程。
本套网络验证系统提供全面的API接口,支持用户注册、登录、数据查询与修改、留言板管理等功能,适用于不想自建用户系统的APP开发者。系统还包含CDK管理功能,如生成、使用、查询和删除CDK等。支持高自定义性,包括20个自定义字段,满足不同需求。详细接口参数及示例请参考官方文档。
宣布 freeCodeCamp 获得新的基础 C# 认证
欢迎大家来学习 .NET Conf 2023 发布的全新 C# 认证,我们与受人尊敬的 freeCodeCamp 合作,我们的认证不仅仅是一个徽章,而是优质教育的标志。它是全面的、全球可访问的、免费的。
659 3
如何做好统一身份认证账号管理及集成
传统统一身份认证系统的建设存在众多的问题,使设计实现复杂化,管理复杂化,集成复杂化。我们今天将详细讨论下统一身份认证账号设计的几个相关问题
2701 1
如何做好统一身份认证账号管理及集成
灵活多样认证授权,零开发投入保障 IoT 安全
本文将通过对EMQX客户端认证与授权机制以及5.0版本中相关优化的详细解析,为读者展示EMQX进行物联网安全保障的原理机制,帮助大家更好地使用这一功能构建更加安全可靠的物联网平台与应用。
EMQ
326 0
灵活多样认证授权,零开发投入保障 IoT 安全
秒懂云通信:号码认证H5 JSSDK版本全新上线
云通信号码认证可以一键加速改善APP用户登录体验,已经成为当下很多APP的主流选择。阿里云号码认证服务H5 JSSDK版本全新上线,可以在手机打开数据流量的情况下,校验用户输入H5页面的手机号码跟当前手机SIM流量卡是否一致,确保输入手机号为机主本人,免输入短信验证码,提升用户体验和注册转化。
1169 0
秒懂云通信:号码认证H5 JSSDK版本全新上线
阿里云开发者认证规则
阿里云开发者认证活动面向软件开发工程师、编程爱好者等,需注册账号并完成在线测试以获得开发者身份及虚拟勋章。通过测试或符合条件者可获200元代金券,邀请好友参与还可赢取更多奖励,包括实物奖品和更高额代金券。活动设有严格的规则,确保公平公正。
3180 1

相关产品

  • 容器服务Kubernetes版