k8s--基础--23.1--认证-授权-准入控制--介绍

k8s–基础–23.1–认证-授权-准入控制–介绍


1、介绍

  1. k8s对我们整个系统的认证,授权,访问控制做了精密的设置。
  2. 对于k8s集群来说,apiserver是整个就集群访问控制的唯一入口。
  3. 我们在k8s集群之上部署应用程序的时候,可以通过宿主机的NodePort暴露的端口访问里面的程序
  4. 用户访问kubernetes集群需要经历如下认证过程:认证->授权->准入控制(adminationcontroller)
  5. k8s的整体架构也是一个微服务的架构,所有的请求都是通过一个GateWay,也就是kube-apiserver这个组件(对外提供REST服务)
  6. k8s中客户端有以下两种,这两种客户端的认证机制略有不同,但无论是哪一种,都需要经历如下认证过程:认证->授权->准入控制
    1. 普通用户
    2. 集群内的Pod

2、认证

  1. 认证(Authenticating)是对客户端的认证,通俗点就是用户名密码验证
  2. 支持多种插件
    1. 令牌(token)认证
    2. ssl认证

2.1、令牌(token)认证

k8s提供了一个restful风格的接口,它的所有服务都是通过http协议提供的,因此认证信息只能经由http协议的认证首部进行传递,这种认证首部进行传递通常叫做令牌

2.2、ssl认证

对于k8s访问来讲,ssl认证能让客户端确认服务器的认证身份。我们在跟服务器通信的时候,需要服务器发过来一个证书,我们需要确认这个证书是不是ca签署的,如果是我们认可的ca签署的,里面的subj信息与我们访问的目标主机信息保持一致,没有问题,那么我们就认为服务器的身份得到认证了,k8s中最重要的是服务器还需要认证客户端的信息,kubectl也应该有一个证书,这个证书也是server所认可的ca签署的证书,双方需要互相认证,实现加密通信,这就是ssl认证

3、授权

  1. 授权(Authorization)是对资源的授权,k8s中的资源无非是容器,最终其实就是容器的计算,网络,存储资源。
  2. 当一个请求经过认证后,需要访问某一个资源(比如创建一个pod),授权检查都会通过访问策略比较该请求上下文的属性,(比如用户,资源和Namespace),根据授权规则判定该资源(比如某namespace下的pod)是否是该客户可访问的。
  3. kubernetes1.6之后开始有RBAC(基于角色的访问控制机制)授权检查机制。

4、准入控制

  1. 是一种在改变资源的持久化之前(比如某些资源的创建或删除,修改等之前)的机制。
  2. 一般情况,准入控制只是用来定义我们授权检查完成之后的后续的其他安全检查操作的,进一步补充了授权机制,由多个插件组合实行,一般而言在创建,删除,修改或者做代理时做补充;

你可能感兴趣的:(k8s,kubernetes,容器,云原生)