写点什么

如何理解 Kubernetes 认证和授权

  • 2020-03-12
  • 本文字数:1854 字

    阅读完需:约 6 分钟

如何理解Kubernetes认证和授权

当设置产品 Kubernetes 集群的时候,认证和授权是两个很重要的基本需求。在这篇文章中,让我们来浏览一些细节,这些细节可以帮助 Kubernetes 环境做好方案。



比如说,你现在已经引发了通过输入 yaml 文件到 kubectl(kubectl create-f pod.yaml)创建 POD 的命令。这个命令被发送到有安全保障的 api-server 端口(http://),然后身份验证流就开始生效了。注意,如果你正在为 api-server 使用不安全的端口(http://),那么验证就无法应用。(http://)理想情况下生产环境设置中应该避免不安全端口(http://)。


以下是这篇文章中会提到的在 Kubernetes 中可使用的验证途径。

客户证书验证

为了使用这个方案,api-server 需要用-client-ca-file=<PATH_TO_CA_CERTIFICATE_FILE>选项来开启。


CA_CERTIFICATE_FILE 肯定包括一个或者多个认证中心,可以被用来验证呈现给 api-server 的客户端证书。客户端证书的/CN 将作为用户名。

基于令牌的身份验证

为了使用这个方案,api-server 需要用-token-auth-file=<PATH_TO_TOKEN_FILE>选项来开启。TOKEN_FILE 是个 csv 文件,每个用户入口都有下列格式:token,user,userid,group。


Group 的名字是随意的。


令牌文件的例子:



生成 tokens 的一个非常简单的方法就是运行以下命令:



基于令牌的身份验证面临的挑战就是,令牌是无期限的,而且对令牌清单做任何的修改都需要重新启动 api-server。

基本认证

为了使用这个方案,api-server 需要使用-basic-auth-file=<PATH_TO_HTTP_AUTH>选项来开启。HTTP_AUTH_FILE 是个 csv 文件,每个用户入口都有下列格式:password,user name,userid。目前,对 AUTH_FILE 的任意修都需要重新启动 api-server。

Open ID

Open ID 支持也是可用的,但是还在试验阶段。

Keystone

Keystone 支持也是可用的,但是还在试验阶段。如果你想要将 keystone 跟 LDAP 或者动态目录服务整合到一起,那么就要使用 keystone 认证方法。为了使用这个方案,api-server 需要用-experimental-keystone-url=<KEYSTONE_URL>选项来开启服务。


验证成功之后,下一步就是找出对于验证用户来说,哪些操作是允许的。目前来讲,Kubernetes 支持 4 种验证策略方案。api-server 需要使用-authorization-mode=<AUTHORIZATION_POLICY_NAME>选项来开启。

始终否认

这个策略否认所有的请求。

始终允许

这个策略允许所有的请求。

基于属性的访问控制

ABAC 允许灵活的用户特定授权策略。当使用-authorization-policy-file=<PATH_TO_ABAC_POLICY_FILE>选项开启 api-sever 的时候,ABAC 的策略文件需要指定。目前,对策略文件有任何的修改都需要重启 api-server。


ABAC 策略文件样本如下所示:



在以上例子中,策略文件中的每一行都是 JSON 对象,且指定一个策略。这是从 Kubernetes 文档页面上对策略对象的简要描述。


  • 版本控制特性——允许多版本和策略的转换格式。

  • api 版本,字符串类型:有效值就是“abac.authorization.kubernetes.io/v1beta1”。

  • kind,字符串类型:有效值是“policy”。

  • 规格属性——是一个用以下属性的映射:

  • 面向对象匹配属性:

  • 用户,字符串:用户字符串不是从-token-auth-file,就是从证书文件的普通名字(CN)而来。如果你指定用户,那么它就肯定跟经过身份验证的用户匹配。*跟所有请求都匹配。

  • group,字符串:如果你指定 group,那么它肯定跟 groups 中经过身份验证的用户相匹配。*跟所有请求都匹配。

资源匹配属性

apiGroup,字符串类型:API group,比如拓展版本。*跟所有 APIgroup 相匹配。


命名空间,字符串类型:命名空间字符串。*跟所有的资源请求相匹配。


资源,字符串类型:资源,比如 pods。*匹配所有的资源请求。

非资源匹配属性:

nonResourcePath,字符串类型:跟所有的非资源请求路径相匹配(比如/version,/apis)。*跟匹配所有非资源请求。/foo/*跟/foo/,以及它的子路径。


只读,布尔型:当为真,也就意味着策略只应用于获取,列出和监测操作。

Webhook

调出一个外部 RESTful 授权服务。


身份验证和授权机制的选择取决于你的要求。然而在我的经验看来,我发现基于证书的身份验证方法,基于身份验证方法的 keystone(LDAP),基于身份验证策略的 ABAC,这三种方法的灵活结合提供了所需的功能,来培养 Kubernetes 环境。


想要了解更多关于认证和授权的信息,建议浏览一下两个链接:


认证:http://kubernetes.io/docs/admin/authentication/


授权:http://kubernetes.io/docs/admin/authorization


本文转载自才云 Caicloud 公众号。


原文链接:https://mp.weixin.qq.com/s/wSMDcQpySKFV7xkbC5wJlw


2020-03-12 22:55816

评论

发布
暂无评论
发现更多内容

微前端框架MicroApp 1.0正式发布

京东零售技术

开源 前端 微前端 提效

分钟级实时数据分析的背后——实时湖仓产品解决方案

袋鼠云数栈

大数据 湖仓一体 实时湖仓

10 个值得分享给你前端低代码项目

互联网工科生

低代码

构建以平衡计分卡为框架的全面预算管理体系

智达方通

全面预算管理 平衡计分卡 全面预算管理体系

小游戏选型(二):第三方社交小游戏厂家对比,即构/声网/融云/云信等

音视频开发_AIZ

游戏开发 音视频开发 小游戏 小游戏开发 直播间

DAPP二二复制矩阵公排合约系统开发丨源码详情

l8l259l3365

纯血鸿蒙来了,企业开发者应该关注什么

不在线第一只蜗牛

华为 架构 企业开发 鸿蒙系统

湖仓新范式的造浪者 | StarRocks 2023 年度总结(文末福利)

StarRocks

数据库 StarRocks #数据分析

听GPT 讲Rust源代码--compiler(32)

fliter

聚道云软件连接器助力某半导体行业公司实现访客管理自动化

聚道云软件连接器

案例分享

软件测试学习笔记丨Linux命令 wc统计

测试人

软件测试

听GPT 讲Rust源代码--compiler(34)

fliter

听GPT 讲Rust源代码--compiler(33)

fliter

软件测试学习笔记丨Selenium常见控件定位方法(八大定位方式)

测试人

软件测试

DDD技术方案落地实践

京东零售技术

后端 DDD 系统架构 开发 提效

软件测试|从零到一:我的测试开发工程师之路

霍格沃兹测试开发学社

精通 VS 调试技巧,学习与工作效率翻倍!

快乐非自愿限量之名

工作效率 企业开发 数字转型

以赛促教以赛促学:和鲸赋能暨大经管落实赛训一体,培养应用型数据人才!

ModelWhale

人工智能 大数据 高等教育 暨南大学 以赛促教

Easysearch:语义搜索、知识图和向量数据库概述

极限实验室

向量数据库 语义搜索 easysearch 知识图 知识概述

喜报|「云原生数据库PolarDB」、「阿里云瑶池一站式数据管理平台」揽获“2023技术卓越奖”

阿里云瑶池数据库

数据库 云计算 阿里云 云原生

云手机哪一款好用?

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机

万界星空科技注塑行业MES解决方案

万界星空科技

mes 万界星空科技 注塑MES 注塑行业

适用于跨境电商的海外云手机

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机

您有一份OpenHarmony开发者论坛2023年度总结,请查收~

OpenHarmony开发者

OpenHarmony

高德地图携手HarmonyOS NEXT,开启智能出行新篇章

Geek_2d6073

一次开发,多端部署︱小红书携手HarmonyOS NEXT引领行业新风向

Geek_2d6073

低代码助力企业转型可视化

EquatorCoco

低代码 数字转型

三个方面浅析数据对大语言模型的影响

快乐非自愿限量之名

AI 数据 大语言模型

华为云DTSE携手“灵康宜”构造一站式智慧健康检测云平台

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 华为云DTSE

测试管理| 从零到一:我的测试开发工程师之路

测吧(北京)科技有限公司

测试

海外云手机三大优势

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机

如何理解Kubernetes认证和授权_语言 & 开发_才云科技_InfoQ精选文章