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的安全检查步骤:认证和授权. 认证解决用户是谁的问题,就是验证用户名密码;授权解决用户能做什么的问题,就是检查该用户是否拥有权限访问请求的资 ...
随机推荐
- 剑指offer二刷——数组专题——数字在升序数组中出现的次数
题目描述 统计一个数字在升序数组中出现的次数. 我的想法 完整的解法我只想到了遍历数组然后依次统计,但这是不聪明的解法,而且没有利用上"升序数组"的这个条件. 题目标签有提醒可以用 ...
- vertical-align什么时候使用?常用的值分别有什么作用?
设置元素的垂直对齐方式 常用的值: 1.baseline:默认.元素放置在父元素的基线上. 2.sub:垂直对齐文本的下标. 3.super:垂直对齐文本的上标 4.top:把元素的顶端与行中最高元素 ...
- 题解-Words
题面 Words 有 \(n\) 天,每天插入一个字符集大小为 \(c\) 长度为 \(l\) 的字符串,求每一天建立 \(\tt Trie\) 树的期望节点数(根节点不算)模 \(998244353 ...
- CSP-S2020复赛游记
[本文经过删改] 前一个月 没做什么 NOIP 的题,感觉这些题对我这个做黄题封顶的人不是很友好. 前一天 考了场模拟赛,全场最低分 89,感觉信心满满. 退役那天 到了 XJ,发现没人可以面基,想着 ...
- 算法——n皇后问题
n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 给定一个整数 n,返回所有不同的 n 皇后问题的解决方案. 每一种解法包含一个明确的 n 皇后问题的棋 ...
- 基于gin的golang web开发:实现用户登录
前文分别介绍过了Resty和gin-jwt两个包,Resty是一个HTTP和REST客户端,gin-jwt是一个实现了JWT的Gin中间件.本文将使用这两个包来实现一个简单的用户登录功能. 环境准备 ...
- django 取出数据库的时间与当前时间相加减
1 转换时区utc比北京时间慢八个小时 from datetime import tzinfo, timedelta, datetime ZERO = timedelta(0) class UTC(t ...
- js配合php原生代码发送ajax请求
<?php //$a = "{'id':'1'}"; //$b = '{"id":1}'; //$a = iconv('ASCII',"UTF- ...
- JavaScript之函数原型链完整版
我的上一篇文章有解释绅士原型及简单的原型链,在这里我将对原型链做完整讲述: // 函数的原型链: 把函数当对象(实例对象)来看 function Person(){} // 底层Function创建出 ...
- python lambda表达式应用
在python中有两种函数,一种是通过def得到的函数,一种是匿名函数,也就是lambda表达式.语法格式如下: lambda argument_list:expersion 语法中的argument ...