k8s之API Server认证
集群安全性
在生产环境中,必须保障集群用户的角色以及权限问题,不能给所有用户都赋予管理员权限。
1、集群的安全性必须考虑如下几个目标
(1)保证容器与其所在宿主机的隔离
(2)限制容器给基础设置或其他容器带来的干扰
(3)最小权限原则:合理限制所有组件的权限,确保组件只执行它被授权的行为,通过限制单个组件的能力来限制它的权限范围
(4)明确组件间边界的划分
(5)划分普通用户和管理员的角色
(6)在必要时允许将管理员权限赋给普通用户
(7)允许拥有Secret(Keys、Certs、Passwords)数据的应用在集群中运行
API Server认证管理
k8s集群提供了三种级别的客户端身份认证方式:
1、HTTPS证书认证
基于CA根证书签名的的双向数字认证方式,CA机构是第三方证书权威机构,认证步骤如下图:

1、服务器端向CA机构申请证书,CA机构下发根证书、服务端证书、私钥给申请者
2、客户端向CA机构申请证书,CA机构下发根证书、客户端证书、私钥给申请者
3、客户端向服务端发起请求,服务端下发服务端证书给客户端,客户端通过私钥进行解密,并利用服务端证书中的公钥认证证书信息比较证书中的信息,如果一致,则客户端认可服务端身份
4、客户端向服务端发送证书,服务端使用私钥进行解密,获得客户端证书公钥,并用公钥认证证书信息,确认客户端是否合法
5、两端协商好加密方案后,客户端产生一个随机密钥,通过协商好的方案加密该密钥,并发送该密钥给服务端,服务端收到密钥后,双方使用这个随机密钥进行信息传输。
2、HTTP Token认证
通过一个Token来识别合法用户,就像HTTP请求的Cookie一样,只不过Cookie是浏览器端,Token是服务端。

用一个很长的特殊编码方式并且难以被模仿的字符串--Token,Token对应用户信息,存储在API Server中能访问的一个文件夹中,客户端只需在请求时的HTTP Header中放入Token,API Server就可以识别用户信息。
3、HTTP Base认证
通过用户名加密码的方式认证,把(用户名+冒号+密码)用Base64编码后放到HTTP Request中的Header Authorization域中发给服务端,服务端收到后进行解密,获取用户名和密码,然后进行用户授权验证
API Server授权管理
当API Server被调用时,需要先进行用户认证,然后通过授权策略执行用户授权。
API Server支持以下几种授权策略(通过API Server启动参数--authorization-mode设置)

(1)AlwaysDeny:拒绝所有请求
(2)AlwaysAllow:允许接收所有请求
(3)ABAC(Attributed-Based Access Control):基于属性的访问控制,表示使用用户配置的授权规则对用户请求进行匹配和控制
(4)Webhook:通过调用外部REST服务对用户进行授权
(5)RBAC:Role-Based Access Control,基于角色的访问控制
(6)Node:一种专用模式,用于对kubelet发起的请求进行访问控制
API Server在接收到请求后,会根据请求中的数据生成一个访问策略对象,如果请求中不带某些属性,则会为这些属性根据类型设置默认值,然后将这个访问策略对象和授权策略文件中的所有访问策略对象逐条匹配,如果至少一个匹配上,则请求被鉴权通过,否则终止调用流程。
===============================
我是Liusy,一个喜欢健身的程序员。
欢迎关注微信公众号【上古伪神】,一起交流Java技术及健身,获取更多干货,领取Java进阶干货,领取最新大厂面试资料,一起成为Java大神。
来都来了,关注一波再溜呗。
k8s之API Server认证的更多相关文章
- 033.Kubernetes集群安全-API Server认证及授权
一 Kubernetes集群安全 1.1 安全机制 Kubernetes通过一系列机制来实现集群的安全控制,其中包括API Server的认证授权.准入控制机制及保护敏感信息的Secret机制等.集群 ...
- K8S Api Server认证
目录 认证类型 基于CA证书的双向认证 apiserver端配置 生成客户端私钥和证书 master核心组件与apiserver的认证方式 HTTP Token认证 HTTP Basic认证 kube ...
- k8s使用自定义证书将客户端认证接入到API Server
自定义证书使用kubectl认证接入API Serverkubeconfig是API Server的客户端连入API Server时使用的认证格式的客户端配置文件.使用kubectl config v ...
- k8s 组件介绍-API Server
API Server简介 k8s API Server提供了k8s各类资源对象(pod,RC,Service等)的增删改查及watch等HTTP Rest接口,是整个系统的数据总线和数据中心. kub ...
- 拿nodejs快速搭建简单Oauth认证和restful API server攻略
拿nodejs快速搭建简单Oauth认证和restful API server攻略:http://blog.csdn.net/zhaoweitco/article/details/21708955 最 ...
- k8s中的api server的ca证书,可以和front proxy ca证书一样么?
答案是: 绝对不可以! 因为请求先验证的是 --requestheader-client-ca-file CA 然后才是--client-ca-file. . 那获取的用户名就会通不过了. 所以会影响 ...
- k8s api server ha 连接配置问题
常见的lb 负载有硬件的f5 big-ip ,同时对于互联网公司大家常用的是nginx haproxy 了解k8s 集群高可用的都知道 api server 是无状态的(etcd 解决了),但是 ...
- 资深专家深度剖析Kubernetes API Server第1章(共3章)
欢迎来到深入学习Kubernetes API Server的系列文章,在本系列文章中我们将深入的探究Kubernetes API Server的相关实现.如果你对Kubernetes的内部实现机制比较 ...
- kubernetes API Server安全
用户访问API Server(以下简称Server),K8S的安全检查步骤:认证和授权. 认证解决用户是谁的问题,就是验证用户名密码;授权解决用户能做什么的问题,就是检查该用户是否拥有权限访问请求的资 ...
随机推荐
- 权威部门接连下发文件,Panda交易所带你走进区块链概念股
Panda交易所获悉,7月21日,北京市地方金融监督管理局发文<北京股权交易中心获得首批开展区块链试点建设资格>,文中表示证监会7月7日发布<关于原则同意北京.上海.苏州.浙江.深圳 ...
- 题解-CF1239D Catowice City
CF1239D Catowice City 有 \(n\) 个人和 \(n\) 只猫.有 \(m\) 对人猫友谊,即第 \(u_i\) 个人认识第 \(v_i\) 只猫,保证第 \(i\) 个人和第 ...
- 终于不再对transition和animation,傻傻分不清楚了 --vue中使用transition和animation
以前写页面注重在功能上,对于transition和animation是只闻其声,不见其人,对于页面动画效果心理一直痒痒的.最近做活动页面,要求页面比较酷炫,终于有机会认真了解了. transition ...
- 如何使用交易开拓者(TB)开发数字货币策略
更多精彩内容,欢迎关注公众号:数量技术宅.想要获取本期分享的完整策略代码,请加技术宅微信:sljsz01 为何使用交易开拓者(TB)作为回测工具 交易开拓者(后文以TB简称)是一个支持国内期货市场K线 ...
- RocketMQ源码分析 broker启动,commitlog、consumequeue、indexfile、MappedFileQueue、MappedFile之间的关系以及位置说明
目录 1.MappedFile类属性说明 1.1.MappedFile类属性如下 1.2.MappedFile构造器说明 2.MappedFileQueue类说明 2.1.属性说明 2.2.Mappe ...
- 容器编排系统K8s之Volume的基础使用
前文我们聊到了k8s上的ingress资源相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14167581.html:今天们来聊一下k8s上volum ...
- 服务器安装ESXI6.7
1 从官网下载ESXI镜像文件到本地 https://my.vmware.com/web/vmware/details?downloadGroup=ESXI670&productId=7 ...
- [.NET] - 初步认识AutoMapper
初步认识AutoMapper AutoMapper 初步认识AutoMapper 前言 手动映射 使用AutoMapper 创建映射 Conventions 映射到一个已存在的实例对象 前言 通常 ...
- wpf窗体项目 生成dll类库文件
我想把一个wpf应用程序的输出类型由windows应用程序改为类库该怎么做,直接在项目属性里改的话报错为 库项目文件无法指定applicationdefinition属性 wpf窗体项目运行之后bin ...
- [Python] iupdatable包使用说明
iudatable包是我对常用函数进行的封装后发布的一个python包. 安装 iupdatable 包 pip install iupdatable 更新 iupdatable 包 pip inst ...