Bota5ky

Kubernetes学习笔记(二十二):Authentication

  • 禁用基于密码的身份验证
  • 仅提供基于SSH密钥的身份验证

第一道防线:控制对API服务器本身的访问

  • 用户名+密码
  • 用户名+Token
  • 证书
  • 与LDAP等外部身份验证提供程序集成
  • 服务账户

可以做什么?

  • RBAC Authorization 基于角色的访问控制
  • ABAC Authorization 基于属性的访问控制
  • Node Authorization 基于节点的访问控制
  • Webhook Mode

kubectl create serviceaccount sa1

kubectl get serviceaccount

验证方式kube-apiserver

  • Static Password File
  • Static Token File
  • Certificates
  • Identity Services,第三方身份验证协议,如LDAP、Kerberos等

Static Password File :

user-details.csv :

password,username,userid(,groupname optional)
...

user-token-details.csv :

token,username,userid(,groupname optional)
...

定义方式:

  • --basic-auth-file=user-details.csv --token-auth-file=user-details.csv apiserver重启才能生效

  • kubeadm /etc/kubernetes/manifests/kube-apiserver.yaml

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      name: kube-apiserver
      namespace: kube-system
    spec:
      containers:
      - command:
        - kube-apiserver
        - --authorization-mode=Node,RBAC
        - --advertise-address=172.17.0.107
        - --allow-privileged=true
        - --enable-admission-plugins=NodeRestriction
        - --enable-bootstrap-token-auth=true
        image: k8s.gcr.io/kube-apiserver-amd64:v1.11.3
        name: kube-apiserver
    

访问:

  • curl -v -k https://master-node-ip:6443/api/v1/pods -u "username:password" {data...}

  • curl -v -k <link> --header "Authorization: Bearer xxxxxxxx"

注意点:

  • 不推荐使用静态储存(在v1.19已弃用)
  • Consider volume mount while providing the auth file in a kubeadm setup
  • Setup Role Based Authorization for the new users
posted @ 2022-08-26 22:18  Bota5ky  阅读(49)  评论(0)    收藏  举报