写点什么

如何理解 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:55963

评论

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

深入浅出特征工程 -- 基于 OpenMLDB 的实践指南(下)

第四范式开发者社区

数据库 sql 人工智能「 特征 特征平台

语音顶会 ICASSP 2022 成果分享:基于时频感知域模型的单通道语音增强算法

阿里云CloudImagine

阿里云 音频 论文 视频云 智能降噪

【C语言】野指针

謓泽

C语言 3月月更 野指针

TiDB Online DDL 在 TiCDC 中的应用丨TiDB 工具分享

PingCAP

selenium相对定位器

红毛丹

3月程序媛福利 3月月更

大规模异构数据的线索列表进化之路

百度Geek说

后端

Web 键盘输入法应用开发指南 (4) —— 组合键

天择

JavaScript 键盘 输入法 3月月更

Linux之ping命令

入门小站

Linux

2022年中国个人云盘行业发展年度分析

易观分析

个人云盘

iOS自动化测试驱动工具探索

字节跳动终端技术

ios 字节跳动 自动化测试 测试工具 火山引擎MARS

一个好的持续交付流水线是怎样的? | 研发效能提升36计

阿里云云效

云计算 阿里云 云原生 持续交付 持续部署

【等级保护】等级保护共分为几级?保护对象是指什么?

行云管家

网络安全 等保 等级保护 等保2.0

为什么在数据驱动的路上,AB实验值得信赖?

字节跳动数据平台

字节跳动 数据分析 AB testing实战 ab测试

老牌软件厂商亚信科技加入,携手龙蜥社区共建开源生态

OpenAnolis小助手

开源 亚信科技 互联网社区

什么是云效?通过云效体验一站式研发,实现10 倍效能提升

阿里云云效

阿里云 DevOps 云原生 研发效能 云效

无依赖单机尝鲜 Nebula Exchange 的 SST 导入

NebulaGraph

数据库 大数据 图数据库

关于 CentOS 迁移龙蜥操作系统,这里有一份详细指南,请查收!

OpenAnolis小助手

centos 开源 操作系统 龙蜥

恒源云(Gpushare)_【活动专区】已上线,没有最优只有更优

恒源云

人工智能 算法 服务器

当渲染遇上边缘计算,打造视频交互新模式

火山引擎边缘云

云原生 边缘计算 实时渲染

DevOps流水线CI 成倍提速方案

八戒技术团队

DevOps

在线HTML转PUG工具

入门小站

工具

大数据培训:Spark 性能调优详解

@零度

spark 大数据培训

NFT商城游戏系统开发技术

薇電13242772558

NFT

web前端培训:2022前端基础面试题

@零度

CSS JavaScript 前端开发

ImageView变灰、倒影、圆角、加水印

逆锋起笔

android 图片处理 3月月更 imageView

简单说明一下数据库审计能带来的价值

行云管家

数据库 数据安全 数据库审计

面向体验,助推超视频时代新增长

字节跳动视频云技术团队

音视频开发

应对EAST 5.0新挑战!索信达推出灵矩全景式监管合规平台

索信达控股

数据治理 金融 监管平台 数智化 合规性

js几种网络请求方式梳理——摆脱回调地狱

有道技术团队

谁能在第四代算力革命中脱颖而出?CPU?GPU?算法?数据?

GPU算力

网易智企发布“易+”开源计划,网易会议组件正式开源

网易云信

音视频 开发

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