认证的几种方式

三种方式:

  • 基本basic
  • 令牌token
  • 双向tls

kubectl发出命令请求的流程

kubectl 通过以下顺序来找到 Kubeconfig 文件:

  • 如果提供了 --kubeconfig 参数, Kubectl 就使用 --kubeconfig 参数提供的 Kubeconfig 文件
  • 如果没有提供 --kubeconfig 参数,但设置了环境变量 $KUBECONFIG,则使用该环境变量提供的 Kubeconfig 文件
  • 如果 --kubeconfig 参数和环境变量 $KUBECONFIG 都没有提供,Kubectl 就使用默认的 Kubeconfig 文件 $HOME/.kube/config

每次收到请求时,Apiserver 都会通过令牌链进行认证,直到某一个认证成功为止:

  • x509 处理程序将验证 HTTP 请求是否是由 CA 根证书签名的 TLS 密钥进行编码的
  • bearer token 处理程序将验证 --token-auth-file 参数提供的 Token 文件是否存在
  • 基本认证处理程序确保 HTTP 请求的基本认证凭证与本地的状态匹配

解析完 Kubeconfig 文件后,Kubectl 会确定当前要使用的上下文、当前指向的群集以及与当前用户关联的任何认证信息。如果用户提供了额外的参数(例如: --username),则优先使用这些参数覆盖 Kubeconfig 中指定的值。一旦拿到这些信息之后, Kubectl 就会把这些信息填充到将要发送的 HTTP 请求头中:

  • x509 证书使用 tls.TLSConfig 发送(包括 CA 证书)
  • bearer tokens 在 HTTP 请求头 Authorization 中发送
  • 用户名和密码通过 HTTP 基本认证发送
  • OpenID 认证过程是由用户事先手动处理的,产生一个像 Bearer Token 一样被发送的 Token

认证

现在kubectl的请求已经成功发送了,接下来轮到 Kube-Apiserver 闪亮登场。

认证的定义

Kube-Apiserver 是客户端和系统组件用来保存和检索集群状态的主要接口。为了执行相应的功能,Kube-Apiserver 需要能够验证请求者是合法的,这个过程被称为认证。

认证的过程

当 Kube-Apiserver 第一次启动时,它会查看用户提供的所有 CLI 参数,并组合成一个合适的令牌列表。 如果提供了 --client-ca-file 参数,则会将 x509 客户端证书认证添加到令牌列表中;如果提供了 --token-auth-file 参数,则会将 breaer token 添加到令牌列表中。

每次收到请求时,Apiserver 都会通过令牌链进行认证,直到某一个认证成功为止:

  • x509 处理程序将验证 HTTP 请求是否是由 CA 根证书签名的 TLS 密钥进行编码的
  • bearer token 处理程序将验证 --token-auth-file 参数提供的 Token 文件是否存在
  • 基本认证处理程序确保 HTTP 请求的基本认证凭证与本地的状态匹配
Copyright © suredandan 2018 all right reserved,powered by GitbookUpdateTime: 2020-04-09 16:42:03

results matching ""

    No results matching ""