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的安全检查步骤:认证和授权. 认证解决用户是谁的问题,就是验证用户名密码;授权解决用户能做什么的问题,就是检查该用户是否拥有权限访问请求的资 ...
随机推荐
- 使用XPath爬取西刺代理
因为在Scrapy的使用过程中,提取页面信息使用XPath比较方便,遂成此文. 在b站上看了介绍XPath的:https://www.bilibili.com/video/av30320885?fro ...
- 算法——K 个一组翻转链表
给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度. 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序. 示例: 给你这个 ...
- 安卓11配置谷歌FCM推送报错
2020-12-11 11:57:50.872 15404-15464/com.sp.notify E/FirebaseInstanceId: Failed to get FIS auth token ...
- springboot配置ssl证书
springboot默认使用的是tomcat: 1.先到阿里云上注册一个证书,绑定域名:后面可以在管理中下载证书,下载tomcat对应的证书(一个*.pfx文件和*.txt文件) 2.将pfx文件拷贝 ...
- scala&&spark学习参考文章
http://www.cnblogs.com/xing901022/p/5944297.html 牛逼
- 前置机器学习(四):一文掌握Pandas用法
Pandas提供快速,灵活和富于表现力的数据结构,是强大的数据分析Python库. 本文收录于机器学习前置教程系列. 一.Series和DataFrame Pandas建立在NumPy之上,更多Num ...
- 四、LoadRunner11安装和破解
之前安装了LoadRunner12 社区版的,应为满足不了工作需求, 上网仔细查了教程下来LoadRunner11破解版 链接:https://pan.baidu.com/s/1dM8Lwf4p160 ...
- HashMap 中 Key 类型的选择
什么对象可以作为HashMap的key值? 从HashMap的语法上来讲,一切对象都可以作为Key值.如:Integer.Long.String.Object等.但是在实际工作中,最常用的使用Stri ...
- [水题日常]Luogu1113 杂务
这几天又在颓. 我的blog难度目前还比较低,主要面向像我这样子的新手(当然内容也会尽量讲得具体清楚一些)x 如果有错误还请指出~ 写完随笔之后才去翻了一下这题题解之后才注意到这题是有序的 QAQ完全 ...
- Spark性能调优篇八之shuffle调优
1 task的内存缓冲调节参数 2 reduce端聚合内存占比 spark.shuffle.file.buffer map task的内存缓冲调节参数,默认是3 ...