Kubernetes - Authentification
Alasta 25 Août 2024 kubernetes kubernetes authentification
Description : Kubernetes, l'authentification
L’authentification
Comptes
Les utilisateurs
On ne peut pas créer d’utilisateurs dans un cluster Kubernetes.
Créer un Service Account
kubectl create serviceaccount my-sa
Afficher les Service Accounts
kubectl get serviceaccount
Les utilisateurs
Mécanisme d’authentification
kube-apiserver
- static password file
- static token file
- certificates
- identity services (ldap, kerberos ….)
Static password file
user-details.csv
password123,user1,u0001
password123,user2,u0002
Format: password, username, id
Optionnellement, on peut ajouter une 4ème colonne pour les groupes.
Pour kube-apiserver: –basic-auth-file=user-details.csv
kube-apiserver.service
ExecStart=/usr/local/bin/kube-apiserver \\
--advertise-address=${INTERNAL_IP} \\
--allow-privileged=true \\
--apiserver-count=3 \\
--authorization-mode=Node,RBAC \\
--bind-address=0.0.0.0 \\
--enable-swagger-ui=true \\
--etcd-servers=https://127.0.0.1:2379 \\
--event-ttl=1h \\
--runtime-config=api/all \\
--service-cluster-ip-range=10.32.0.0/24 \\
--service-node-port-range=30000-32767 \\
--v=2
--basic-auth-file=user-details.csv
/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
- --basic-auth-file=user-details.csv
image: k8s.gcr.io/kube-apiserver-amd64:v1.11.3
name: kube-apiserver
Authentification des utilisateurs:
curl -v -k https://master-node-ip:6443/api/v1/pods -u "user1:password123"
Static Token File
Comme pour le Static Password File mais avec des tokens.
user-token-details.csv
KpjCVbI7rCFAHYPkByTIzRb7gu1cUc4B,user10,u0010,group1
rJjncHmvtXHc6MlWQddhtvNyyhgTdxSC,user11,u0011,group1
mjpOFIEiFOkL9toikaRNtt59ePtczZSq,user12,u0012,group2
Au niveau du service et static pod/manifest, utilisation de –token-auth-file=user-token-details.csv.
Authentification des utilisateurs:
curl -v -k https://master-node-ip:6443/api/v1/pods --header "Authorization: Bearer KpjCVbI7rCFAHYPkBzRb7gu1cUc4B"