爬坑系列之解读kubernetes的认证原理&实践

shuiguizi shuiguizi     2022-12-14     807

关键词:

 

       对于访问kube-apiserver模块的请求来说,如果是使用http协议,则会顺利进入模块内部得到自己想要的;但是如果是用的是https,则能否进入模块内部获得想要的资源,他会首先要进行https自有的tls握手,进而进入kube-apiserver的三大控制,接下来,就让我一起研究下.....

一,对Kubernetes API访问的三大控制

  • Authentication:认证,确认“你是不是你",包括多种方式,如 Client Certificates, Password, and Plain Tokens, Bootstrap Tokens, and JWT Tokens等
  • Authorization:鉴权,确认“你是不是有权利做这件事”。怎样判定是否有权利,通过配置策略
  • Admission Control:一个软件模块,经过配置,它可以访问正在创建或更新的对象的内容,即当已经"放行"的请求进入apiserver后开始真正操作资源的时候,对这份资源的控制。

       参考:https://kubernetes.io/docs/reference/access-authn-authz/controlling-access/

 

API服务器在2个端口上都对外提供服务:

1,Localhost Port:默认8080端口,通过这个端口的请求会绕过认证和鉴权两个控制模块,一般用于集群内部的组件之间的交互。

2,Secure Port:默认6443端口,通过这个端口的请求会经过三大控制模块,用于对外提供服务。

 

二,https协议的tls握手

只要你是通过Secure Port来方位api,那么你必然要建立https要求的tls链接,这是一个怎样的交互呢?让我们细细道来

1,数字证书以及网络传输加密

           假设,有两个人,一个叫 小起,一个叫 小终,小起想给小终发送数据,可是怕别人截取,篡改等等一些不安全的行为,于是经历了如下的演变过程,直到最后得到了最完美的加密过程。

          stage1: 对称加密

                       小起     ----------将数据加密,并带着能解密的钥匙,一起交给小终   -----------> 小终

                       问题:传输的过程中,钥匙可能被盗

          stage2:非对称加密

                      小终:自己有一个秘钥对,公钥:对外公开;    私钥:自己保留;    由公钥加密的数据只能由私钥解密,由私钥加密的内容只能由公钥解密

                      小起     ----------将数据用小终的公钥加密,交给小终   -----------> 小终(由小终私钥加密的数据,用小终的公钥解密)

                      问题:传输的过程中,有人将数据截获,搞一堆烂七八糟的内容重新用小终的公钥加密,再发给小终。

         stage2进阶:签名技术的应用

      利用hash算法不可逆的特性,将正文数据进行hash计算得到摘要,当小终收到正文后同样hash计算,如果二者相同说明数据是完整的。
      同时,小起还要告诉小终,这个摘要是我计算的,可不是别人计算的的。

                    小起     ----------将数据用小终的公钥加密,将数据用hash算法计算出摘要,并用小起的私钥对摘要进行加密(签名) -----------> 小终(用自己的公钥解密数据,用小起的公钥解密摘要)

                    问题:有人冒充是小起给小终发数据

        stage3:数字证书         

                     前面说了公钥/私钥都是自己家搞出来的东西,就算是被仿造了也不知道,于是将公钥"贴在第三方出具的正式文件上"(我们所说的签发数字证书)。
                     这样就显得有保障,因为这个正式文件上可是有第三方盖章的。但同样还要能够识别这个"章"是真正权威机构的。具体原理是:

                     小起,小终    <-----------从ca那里获取两样:根证书(“印章”图样),公钥(数字证书)私钥对---------CA中心(证书颁发机构)

                     小起 (用根证书校验小终的数字证书)   <---------交换数字证书 -----------> 小终(用根证书校验小起的数字证书)

       整合:对称加密结合非对称加密

     考虑到效率问题,真正的业务数据是用对称加密算法加密的。所以综合以后,过程是这样的
     通过stage3,我们现在互相已经有了对方准确的公钥,然后通过stage2的数据交换协商出对称加密秘钥自己保存好,再用stage1的对称加密算法(此时不需要携带解密要是)加密数据

 

                   小起   --------- 用对称加密算法加密的数据-----------> 小终

      2,tls的握手前的准备 

            所谓的握手,其实就是我们在上一节讲述的“对称加密秘钥”的协商过程,所以再协商之前双方要先去             

首先,

参考:https://baijiahao.baidu.com/s?id=1616211978225668389&wfr=spider&for=pc

---恢复内容结束---

dnn原理探究系列之目录与序章篇

...的,所以想一窥DNN成功背后的数学原理。通过DNN原理探究系列博文,希望能总结归纳已经理解的知识点,梳理清楚知识点之间的关系结构,同时探讨各种流派对于DNN原理的解读。目录会随着自己掌握的知识量逐渐 查看详情

kubernetes之pod超详细解读--第一篇(代码片段)

  小编在这里向各位博友道个歉,上篇文章确实写的有些应付,但怎么说,部署确实因人而异,而且很少有刚刚进公司就让你搭建一个集群,一般公司都有自己的集群,所以小编觉得,侧重点不应该在安装,应该在维护!... 查看详情

django自定义认证系统原理及源码分析解读

疑问Django在​​如何自定义用户登录认证系统的时候​​,大家都会里面立马说自定义一个或者多个backend,比如通过账号+密码、邮箱+密码,邮箱+验证码、手机号+短信验证码等等。然后设置在settings中配置一个​​AUTHENTICATION_BA... 查看详情

标准解读系列之六:车联网网络安全标准进展

文章版权所有,未经授权请勿转载或使用全文3700字,预计阅读10分钟文| 董志国、吴冬升车联网(智能网联汽车)网络安全标准体系框架包括总体与基础共性、终端与设施安全、网联通信安全、数据安全、应用服... 查看详情

一文解读无人配送标准进展|标准解读系列之十二

关注公号回复“221123”可提供相关标准原文下载末端物流配送,即物流配送“最后一公里”,是指送达给消费者的物流,是以满足配送环节的客户为直接目的的物流活动。在物流整个运作流程中,大体指包裹从物... 查看详情

2-volcano架构和设计原理解读

...器技术的发展,越来越多的批量计算应用正在迁移到Kubernetes平台上,从早期的AI应用到大数据应用,再到近期的基因,转码,科学计算等HPC应用。在迁移过程中,高性能应用对Kubernetes平台提出了新的要求&#... 查看详情

kubernetes资源编排系列之五:oam篇

作者雪尧(郭耀星)炯思(钟炯恩)前文我们提到了Helm/Kustomize/CRD+Operator这些方式,都可以在各自的领域很好的承载一个组件(Component)的概念。但是都没有解决一个完整的面向业务场景的应用(Application)的问题。OAM(OpenApplicationModel)是2019... 查看详情

kerberos系列之flink认证配置

大数据安全系列的其它文章https://www.cnblogs.com/bainianminguo/p/12548076.html-----------安装kerberoshttps://www.cnblogs.com/bainianminguo/p/12548334.html-----------hadoop的kerberos认证https://www.cnblogs.com/bainianminguo/p/12548175.html-----------zookeeper的kerberos认证https://w... 查看详情

kerberos系列之spark认证配置

 大数据安全系列的其它文章https://www.cnblogs.com/bainianminguo/p/12548076.html-----------安装kerberoshttps://www.cnblogs.com/bainianminguo/p/12548334.html-----------hadoop的kerberos认证https://www.cnblogs.com/bainianminguo/p/12548175.html-----------zookeeper的kerberos认证htt... 查看详情

ml:mlops系列讲解之《基于ml的软件的三个层次》解读

ML:MLOps系列讲解之《基于ML的软件的三个层次》解读导读:您将了解基于ML的软件的三个核心元素——数据、ML模型和代码。特别地,我们会将讨论:(1)、数据工程管道(2)、ML管道和ML工作流。(3)、模型服务模式和... 查看详情

kubernetes之k8s核心原理--第二篇(代码片段)

六、共享存储原理  Kubernetes对有状态或者对数据需要持久化的应用,不仅需要将容器内的目录挂载到宿主机的目录或者empDir临时存储卷,而且需要更加可靠的存储来保存应用产生的重要数据,以便于容器应用重建以后,... 查看详情

cas5.3.1系列之自定义jdbc认证策略

CAS5.3.1系列之自定义JDBC认证策略(三)CAS官方文档是介绍基于配置实现jdbc认证的,可以参考我博客:CAS5.3.1系列之支持JDBC认证登录(二),不过我们也可以通过自定义认证策略的方式实现jdbc认证,pom先加入相关jar<!--CustomAuthen... 查看详情

kubernetes学习14—dashboard搭建和认证(代码片段)

原文:kubernetes学习14—Dashboard搭建和认证本文收录在容器技术学习系列文章总目录一、介绍  KubernetesDashboard是Kubernetes集群的基于Web的通用UI。它允许用户管理在群集中运行的应用程序并对其进行故障排除,以及管理群集本身。&... 查看详情

anr系列之二:input类型anr产生原理讲解(代码片段)

序言触发ANR的场景有几种,比如输入超时,Boradcast长时间无响应等等,具体场景和超时时间如下:本文以最常见的Input类型事件导致的ANR为例,带读者们进行详细的解读以下内容:1.介绍输入事件的ANR的判... 查看详情

jdk源码解读之integer

        本系列文章使用的JDK版本为jdk1.8.0_131,一些基础的知识储备:原码、反码、补码,移位,建议参考文章:《原码,反码,补码详解》《Java源码学习系列(三)——Integer》    &nbs... 查看详情

k8s入门系列之介绍篇

?Kubernetes介绍1.背景介绍  云计算飞速发展    -IaaS    -PaaS    -SaaS  Docker技术突飞猛进    -一次构建,到处运行    -容器的快速轻量    -完整的生态环境2.什么是kubernetes  Kubernetes(k8s)是Google... 查看详情

《云原生入门级开发者认证》学习笔记之云原生基础设施之kubernetes(代码片段)

写在前面嗯,报了考试,整理课堂笔记记忆学习的原因:虽然考了CKA,了解了一些K8s相关的知识但是对云原生整个体系一直都很模糊希望对云原生有一个基本的认识通过学习实现云原生相关入门博文主要内容涉及:... 查看详情

kubernetes之k8s核心原理--第一篇(代码片段)

...,好吧,只能通过两篇文章向大家介绍K8s核心原理。一、KubernetesAPIServer原理分析1.kubernetesAPIServer介绍  kubernetesAPIserver的和核心功能是提供了kubernetes各类资源对象(pod、RC、service等)的增、删、改、查以及watch等HTTP 查看详情