Aller au contenu principal

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