Lab 9.2 - Service Accounts et Permissions
Objectifs du Lab
À la fin de ce lab, vous serez capable de:
- Créer et utiliser des Service Accounts.
- Assigner des permissions à des Service Accounts.
- Utiliser des Service Accounts dans les Pods.
- Comprendre les tokens et secrets des Service Accounts.
- Tester l'accès API depuis un Pod avec un Service Account.
Durée Estimée
45-60 minutes
Prérequis
- kubectl installé et configuré.
- Cluster Kubernetes local fonctionnel.
- Connaissances sur Service Accounts (Chapitre 9.2).
Partie 1: Création d'un Service Account
Étape 1.1: Créer un Service Account
Créez un namespace de test:
kubectl create namespace sa-test
Créez un Service Account:
kubectl create serviceaccount app-sa -n sa-test
Vérifiez:
kubectl get serviceaccount app-sa -n sa-test
kubectl describe serviceaccount app-sa -n sa-test
Partie 2: Attribution de Permissions
Étape 2.1: Créer un Role avec Permissions
Créez role-app-permissions.yaml:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: sa-test
name: app-role
rules:
- apiGroups: [""]
resources: ["pods", "configmaps"]
verbs: ["get", "list", "watch", "create"]
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "list"]
Appliquez:
kubectl apply -f role-app-permissions.yaml
Étape 2.2: Créer un RoleBinding
Créez rolebinding-app.yaml:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: app-binding
namespace: sa-test
subjects:
- kind: ServiceAccount
name: app-sa
namespace: sa-test
roleRef:
kind: Role
name: app-role
apiGroup: rbac.authorization.k8s.io
Appliquez:
kubectl apply -f rolebinding-app.yaml
Partie 3: Utilisation dans un Pod
Étape 3.1: Créer un Pod avec le Service Account
Créez pod-with-sa.yaml:
apiVersion: v1
kind: Pod
metadata:
name: app-pod
namespace: sa-test
spec:
serviceAccountName: app-sa
containers:
- name: app
image: bitnami/kubectl:latest
command: ["sleep", "3600"]
Appliquez:
kubectl apply -f pod-with-sa.yaml
Vérifiez que le Pod utilise le Service Account:
kubectl describe pod app-pod -n sa-test
Partie 4: Test des Permissions
Étape 4.1: Tester l'Accès API depuis le Pod
Testez les permissions depuis le Pod:
# Tester la liste des Pods (devrait fonctionner)
kubectl exec -n sa-test app-pod -- kubectl get pods
# Tester la création d'un ConfigMap (devrait fonctionner)
kubectl exec -n sa-test app-pod -- kubectl create configmap test-cm --from-literal=key=value --dry-run=client -o yaml
# Tester la liste des Services (devrait échouer - pas de permission)
kubectl exec -n sa-test app-pod -- kubectl get services
Partie 5: Tokens et Secrets
Étape 5.1: Examiner le Token
Le Service Account a un token stocké dans un Secret:
# Lister les Secrets du Service Account
kubectl get secrets -n sa-test
# Le token est monté dans le Pod à /var/run/secrets/kubernetes.io/serviceaccount/token
kubectl exec -n sa-test app-pod -- cat /var/run/secrets/kubernetes.io/serviceaccount/token
Partie 6: Nettoyage
kubectl delete pod app-pod -n sa-test
kubectl delete rolebinding app-binding -n sa-test
kubectl delete role app-role -n sa-test
kubectl delete serviceaccount app-sa -n sa-test
kubectl delete namespace sa-test
Résumé du Lab
Dans ce lab, vous avez créé et utilisé des Service Accounts avec des permissions RBAC. Vous avez appris à assigner des permissions, à utiliser des Service Accounts dans les Pods, et à tester l'accès API.
Prochaines Étapes
Le prochain lab vous montrera comment appliquer les Pod Security Standards.
Lab 9.3: Pod Security Standards
Lab créé le: Décembre 2024