Bank 6 – Textes à trous (Partie 2 : Configuration / Sécurité)¶
Instructions
Complétez les espaces numérotés.
Cliquez sur « Correction » pour vérifier.
Total : 10 exercices (2 faciles · 4 moyens · 4 difficiles)
Niveau Facile¶
Exercice 1 : Objets de configuration et secrets¶
Pour externaliser des données de configuration non sensibles sous forme de paires clé-valeur, on utilise l'objet Kubernetes appelé (1) ____________. Pour stocker des informations à caractère confidentiel (mots de passe, clés), on emploie un objet de type (2) ____________. Par défaut, les valeurs de ces secrets affichées dans les manifestes YAML subissent un simple encodage réversible nommé (3) ____________. Pour authentifier un processus s'exécutant à l'intérieur d'un pod auprès de l'API, on lui associe un (4) ____________.
Correction
- ConfigMap
- Secret
- Base64
- ServiceAccount
Exercice 2 : Modèle de sécurité et frontières¶
Le modèle standard de contrôle d'accès et d'autorisation dans Kubernetes est désigné par l'acronyme (1) ____________. Pour cloisonner les ressources et les environnements de travail au sein d'un même cluster physique, on utilise la notion de (2) ____________. L'utilisation d'un conteneur avec l'utilisateur privilégié par défaut (UID 0) est appelée utilisateur (3) ____________, une pratique à restreindre fortement pour des raisons de sécurité. Pour filtrer les flux réseau entre les pods comme un pare-feu applicatif, on déploie une (4) ____________.
Correction
- RBAC (Role-Based Access Control)
- Namespace
- root
- NetworkPolicy
Niveau Moyen¶
Exercice 3 : Méthodes d'injection de configuration¶
Il existe principalement deux manières d'injecter un ConfigMap dans un conteneur. La première consiste à utiliser la directive
envFromassociée à (1) ____________ pour importer toutes les clés sous forme de variables d'environnement. La seconde consiste à monter le contenu sous forme de fichiers à l'aide des blocsvolumeset (2) ____________. Contrairement aux variables d'environnement qui nécessitent un (3) ____________ du pod pour être actualisées, les volumes montés depuis un ConfigMap se mettent à jour de manière asynchrone. L'objet RBAC qui restreint les permissions à un espace de noms particulier est le (4) ____________.
Correction
- configMapRef
- volumeMounts
- redémarrage (restart)
- Role
Exercice 4 : Rôles, liaisons et permissions¶
Pour attribuer des permissions à l'échelle de tout le cluster, on définit un (1) ____________ que l'on associe à l'aide d'un (2) ____________. Si l'on souhaite réutiliser un rôle global mais limiter son application à un seul espace de noms, on utilise un (3) ____________ ordinaire. Pour vérifier si l'utilisateur actif possède les droits requis pour effectuer une action (par exemple supprimer des pods), on exécute la commande de diagnostic
kubectl auth (4) ____________.
Correction
- ClusterRole
- ClusterRoleBinding
- RoleBinding
- can-i
Exercice 5 : Sécurisation des conteneurs (SecurityContext)¶
Le durcissement des conditions d'exécution des conteneurs se configure via le bloc (1) ____________. Pour interdire le lancement d'un conteneur avec les privilèges de l'administrateur, on paramètre
runAsNonRoot: (2) ____________. Pour garantir l'immuabilité et empêcher toute modification des binaires de l'application, on peut activer un système de fichiers racine en lecture seule viareadOnlyRootFilesystem: (3) ____________. Pour stocker des secrets montés en RAM sur le nœud sans saturer ou écrire sur le disque physique, le système utilise un volume de type (4) ____________.
Correction
- securityContext
- true
- true
- tmpfs
Exercice 6 : Création et manipulation sécurisée¶
Pour générer rapidement un objet de configuration textuel à partir de fichiers en ligne de commande, on utilise la commande
kubectl create configmap <nom> --from-(1) ____________=<chemin>. Pour créer un secret contenant des données littérales directes, on emploie la syntaxe--from-(2) ____________. La section d'une politique réseau qui régule le trafic sortant des pods se nomme (3) ____________, tandis que celle qui gère le trafic entrant s'appelle (4) ____________.
Correction
- file
- literal
- egress
- ingress
Niveau Difficile¶
Exercice 7 : Politiques réseau avancées et pare-feu¶
Pour mettre en place une politique d'isolation stricte interdisant tout trafic entrant non autorisé (politique "Default Deny Ingress"), on configure le sélecteur
podSelector: (1) ____________avec une listeingressvide. Pour que ces règles de NetworkPolicy soient réellement appliquées, il est impératif que le plugin (2) ____________ installé sur le cluster les supporte nativement, car Kubernetes ne fait qu'enregistrer les manifestes sans les appliquer lui-même au niveau du noyau (viaiptablesoueBPF). Pour cibler un espace de noms entier dans une règle, on utilise un (3) ____________. Les verbes RBAC permettant de récupérer le manifeste complet d'un secret et de décoder son contenu sontgetet (4) ____________.
Correction
{}(ou vide)- CNI (Container Network Interface - ex. Calico, Cilium)
- namespaceSelector
- list
Exercice 8 : Chiffrement au repos et rétroactivité¶
Par défaut, les secrets stockés dans la base de données backend ne sont pas chiffrés. Pour activer le chiffrement au repos, on configure le mécanisme d'(1) ____________. Cependant, cette activation ne s'applique qu'aux nouvelles écritures ; pour sécuriser rétroactivement les secrets déjà existants dans la base de données, il faut procéder à une (2) ____________ de l'ensemble des secrets. Pour pallier les risques liés au stockage en clair des secrets dans les dépôts Git (GitOps), on peut utiliser des outils tiers de chiffrement comme SOPS ou (3) ____________. Enfin, le paramètre Linux permettant de supprimer toutes les capacités superflues d'un conteneur est
capabilities.drop: ["(4) ____________"].
Correction
- EncryptionConfiguration
- réécriture (replace)
- Sealed Secrets
- ALL
Exercice 9 : Immuabilité et privilèges avancés¶
L'association de
readOnlyRootFilesystem: trueavec un volume de type (1) ____________ permet à l'application d'écrire uniquement dans un répertoire éphémère désigné (comme/tmp) sans compromettre le reste du conteneur. Pour octroyer sélectivement une capacité spécifique au noyau Linux sans donner les pleins pouvoirs root (par exemple pour administrer les interfaces réseau locales), on utilisecapabilities.add: ["(2) ____________"]. À l'inverse, l'activation deprivileged: (3) ____________est à proscrire car elle désactive totalement l'isolation du conteneur vis-à-vis de l'hôte. Les autorisations de lecture et de surveillance des ressources sont accordées par les verbesget,listet (4) ____________.
Correction
- emptyDir
- NET_ADMIN
- true
- watch
Exercice 10 : Diagnostic d'accès et autorisations RBAC¶
Lorsqu'un pod subit des erreurs d'authentification lors de ses requêtes vers l'API Server, on vérifie généralement la configuration de son (1) ____________ associé. Pour auditer si l'identité courante possède les droits de suppression sur les namespaces, on utilise la commande d'autorisation
kubectl auth can-i delete (2) ____________. Dans unRoleBinding, il est tout à fait permis de lier un (3) ____________ global à condition que la portée de liaison reste cantonnée au namespace du rolebinding, ce qui aura pour effet de restreindre ses permissions à cet espace restreint. Enfin, le stockage temporaire en RAM utilisé par le kubelet pour les secrets s'appelle un système de fichiers (4) ____________.
Correction
- ServiceAccount
- namespaces
- ClusterRole
- tmpfs