kubernetes
  • Introduction
  • 安装
    • 组件端口
    • 二进制安装
    • Kubeadm
      • 安装单Master集群
      • 安装高可用集群(手动分发证书)
      • 安装高可用集群(自动上传证书)
      • 安装ETCD集群
      • 安装高可用集群(外部ETCD)
    • 启动参数解析
      • ETCD相关参数
  • 负载均衡
    • Service
    • Ingress
    • 安装MetalLB
    • Nginx-ingress-controller
      • 转发TCP与UDP服务
      • 启动参数
      • 自定义Nginx模板
  • 存储
    • Volume
    • PV与PVC
    • StorageClass
    • Local-PV
      • Static-Provisioner
    • 实践
      • Ceph-RBD
      • NFS
  • 有状态服务
    • Mysql实践
    • Operator
      • Etcd
      • Zookeeper
      • Mysql
  • 认证与授权
    • 认证
      • 实践
    • 授权
  • Helm
    • 安装
    • Chart
      • 依赖
    • Helm命令
    • Repository
  • 日志
  • 监控
    • Prometheus体系
      • Prometheus
        • 内置函数
        • 配置
          • 规则文件
        • PromQL
      • Exporter
        • Metrics
      • Grafana
        • 配置
      • AlertManager
        • 配置
    • 容器监控
      • Cadvisor的指标
      • k8s中部署Prom与Cadvisor
  • Istio
  • 资源预留
    • imagefs与nodefs
    • 总结
  • 集群联邦
    • 联邦DNS原理
    • 联邦DNS安装
    • 安装federation-v1
  • Other
    • ImagePullSecret
    • QOS
    • Apiserver的代理
    • 资源配额
Powered by GitBook
On this page
  • X509客户证书
  • 静态Token
  • 静态密码

Was this helpful?

  1. 认证与授权

认证

Previous认证与授权Next实践

Last updated 5 years ago

Was this helpful?

"认证",形象地理解就是"你是谁"。在上文中,用户A在发起API请求时,管理员如何道该请求是用户A发起的呢?所以,客户端在发起API请求时,必须要携带一个身份信息来表明"我是谁",Apiserver在收到请求后,需要对这个身份信息进行认证(“不是你说你是谁,你就是谁,而是我核实你是谁,你才是谁”)

在认证与授权中,有两个重要的概念:用户(USER)与用户组(GROUP)。客户端携带的身份凭证,最终会被apiserver认证为USER与GROUP。

接下来,我们介绍几种常见的认证方式。

X509客户证书

该认证方式下,客户端发起请求时需要携带一个证书,表明自已的身份。该证书必须是由apiserver的启动参数--client-ca-file指定的CA所签发(即能够被该参数指定的CA证书文件所验证)。如果apiserver验证客户端所携带的客户证书是client-ca-file签发的,那么认证通过。

在客户证书文件中,会包含域名/CN与组织/O字段,假设客户证书的CN为jbeta,组织为app1与app2,那么该请求会被认证为User jbeta与Group app1与app2。

根据上面的理论,客户端在访问apiserver时,需要一个ca.crt来验证apiserver的证书(建立https连接),还需要携带一个client.crt来表明自已的身份。不过在实际中,客户端还需要携带client.key,猜测应该是双向HTTPS的原因(双向HTTPS参考

关于证书的内容与制作,参考

更多实践参考下节《实践》

静态Token

apiserver可以通过启动参数--token-auth-file=/path/to/file来开启Token认证。该文件的每一行如下:第一个字段为token,第二个为用户名,第三个为用户id,后面为组名(可选,如果有多个组,则需要用双引号引起来)

token,user,uid,"group1,group2"

当客户端使用该认证方式来发起请求的时候,需在Header参数中添加以下字段

Authorization: Bearer <token>

静态密码

apiserver可以通过启动参数--basic-auth-file=/path/to/file来开启密码认证,该文件的每一行如下:第一个字段为密码,第二个为用户名,第三个为用户id,后面为组名(可选,如果有多个组,则需要用双引号引起来)

password,user,uid,"group1,group2,group3"

当客户端使用该认证方式来发起请求的时候,需在Header参数中添加以下字段

Authorization: Basic <base64encoded(user:password)>
https://pshizhsysu.gitbooks.io/computer-network/ying-yong-ceng/https/tlsshuang-xiang-ren-zheng.html)
https://pshizhsysu.gitbooks.io/computer-network/ying-yong-ceng/https/zheng-shu-qian-ming-yu-yan-zheng.html