Gestion des secrets et RBAC
Découvrez des stratégies avancées pour gérer les données sensibles et mettre en œuvre le contrôle d’accès basé sur les rôles (RBAC) dans les environnements de conteneurs.
Gestion des secrets et RBAC est une leçon DevOps Bootcamp gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage DevOps Bootcamp, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours DevOps Bootcamp comprend 4 leçons au total.
Sécuriser votre environnement de conteneurs
Bienvenue ! Dans cette leçon, nous allons approfondir des pratiques de sécurité essentielles pour les applications conteneurisées : la gestion des secrets et le contrôle d’accès basé sur les rôles (RBAC).
Ces concepts sont essentiels pour protéger les données sensibles et garantir que seules les entités autorisées peuvent effectuer des actions spécifiques dans vos environnements de conteneurs.

Le danger des secrets codés en dur
Inscrire directement des informations sensibles, comme des clés d’API, des mots de passe de bases de données ou des certificats privés, dans le code de votre application ou dans des Dockerfiles représente un risque de sécurité majeur.
- Exposition : Toute personne ayant accès à votre dépôt de code ou à l’image créée peut facilement les voir.
- Manque de contrôle : Modifier un secret nécessite de recréer et de redéployer toute votre application.
- Problèmes de conformité : Cette pratique enfreint de nombreuses bonnes pratiques de sécurité et exigences réglementaires.
Variables d’environnement (avec prudence)
Une manière courante, mais pas toujours sécurisée, de transmettre des secrets consiste à utiliser des variables d’environnement. Docker vous permet de les transmettre avec l’option -e, et les applications peuvent les lire.
Cependant, les variables d’environnement peuvent être facilement consultées (par exemple avec docker inspect) et peuvent rester dans l’historique du shell ou dans les journaux. Pour les données véritablement sensibles, il existe de meilleures solutions.
Les secrets Docker en pratique
Les secrets Docker vous permettent de stocker et de transmettre en toute sécurité des données sensibles aux conteneurs. Lorsqu’un secret est associé à un conteneur, il est monté en tant que fichier temporaire dans /run/secrets/.
Commencez par créer un secret (par exemple, echo "my_secure_pass" | docker secret create app_secret -). Votre application peut ensuite le lire :
import os
def main():
secret_path = "/run/secrets/app_secret"
try:
with open(secret_path, 'r') as f:
secret_value = f.read().strip()
print(f"Secret read: {secret_value}")
except FileNotFoundError:
print("Secret file not found. Make sure it's mounted.")
except Exception as e:
print(f"An error occurred: {e}")
if __name__ == "__main__":
main()Présentation des secrets Kubernetes
À l’instar des secrets Docker, Kubernetes possède son propre objet appelé « Secrets » pour stocker et gérer les informations sensibles. Ces secrets peuvent être montés en tant que fichiers dans des Pods ou exposés en tant que variables d’environnement.
Important : Par défaut, les secrets Kubernetes sont encodés en base64 et non chiffrés. Ils sont donc faciles à décoder. Pour chiffrer réellement les données au repos, une configuration supplémentaire est nécessaire (par exemple, une intégration KMS).
Déployer avec les secrets K8s
Voyons un exemple de définition d’un secret Kubernetes, puis de son utilisation dans un Pod. Vous pouvez définir les secrets en YAML ou les créer à l’aide de commandes kubectl.
Une fois créé, un Pod peut référencer le secret pour le monter en tant que volume ou injecter ses valeurs comme variables d’environnement.
apiVersion: v1
kind: Pod
metadata:
name: my-secret-pod
spec:
containers:
- name: my-app-container
image: busybox
command: ["sh", "-c", "echo Username: $(cat /etc/secrets/username) Password: $(cat /etc/secrets/password)"]
volumeMounts:
- name: secret-volume
mountPath: "/etc/secrets"
readOnly: true
volumes:
- name: secret-volume
secret:
secretName: my-k8s-secretCoffres-forts de secrets externes
Pour les données extrêmement sensibles, ou lorsque vous gérez des secrets sur plusieurs clusters et environnements, les outils externes de gestion des secrets offrent des fonctionnalités avancées telles que :
- Stockage centralisé : Une source de référence unique pour tous les secrets.
- Chiffrement au repos et en transit : Des garanties de sécurité renforcées.
- Secrets dynamiques : Des identifiants à durée de vie courte générés automatiquement.
- Audit et contrôle d’accès : Des permissions précises et une journalisation complète.
Parmi les options populaires figurent HashiCorp Vault, AWS Secrets Manager et Azure Key Vault.
Qu’est-ce que le RBAC ?
Le contrôle d’accès basé sur les rôles (RBAC) est une méthode qui limite l’accès au système aux utilisateurs autorisés. Au lieu d’attribuer directement des permissions à chaque utilisateur, les permissions sont regroupées dans des « rôles », puis les utilisateurs sont associés à ces rôles.
Dans l’orchestration de conteneurs, le RBAC garantit que les utilisateurs, les applications ou les services disposent uniquement des permissions nécessaires pour interagir avec les ressources (comme les Pods, les déploiements et les secrets).
Éléments constitutifs du RBAC K8s
Le RBAC Kubernetes utilise quelques types de ressources clés :
- Role : Définit les permissions au sein d’un espace de noms spécifique (par exemple, « peut afficher les pods » dans l’espace de noms « dev »).
- ClusterRole : Définit les permissions sur l’ensemble du cluster (par exemple, « peut afficher tous les pods » ou « peut gérer les nœuds »).
- RoleBinding : Accorde à un utilisateur, un groupe ou un compte de service les permissions définies dans un Role au sein d’un espace de noms.
- ClusterRoleBinding : Accorde à un utilisateur, un groupe ou un compte de service les permissions définies dans un ClusterRole sur l’ensemble du cluster.
Exemple de RBAC : limiter l’accès
Voyons un exemple dans lequel nous accordons à un compte de service donné la permission de répertorier et d’obtenir uniquement les pods d’un espace de noms particulier. Cela applique le principe du moindre privilège.
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: pod-reader
rules:
- apiGroups: [""] # "" indicates the core API group
resources: ["pods"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods-binding
namespace: default
subjects:
- kind: ServiceAccount
name: pod-viewer-sa # Name of the ServiceAccount to bind to
namespace: default
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.ioVérifier votre compréhension
Vous avez appris à protéger les données sensibles et à contrôler les accès. Il est temps de faire une petite vérification !
Récapitulatif : sécuriser vos applications
Excellent travail ! Dans cette leçon, vous avez découvert deux piliers essentiels de la sécurité des conteneurs :
- Gestion des secrets : Protection des données sensibles à l’aide des secrets Docker et Kubernetes, tout en comprenant leurs atouts et leurs limites.
- Contrôle d’accès basé sur les rôles (RBAC) : Mise en place de permissions précises dans Kubernetes afin de garantir le principe du moindre privilège.
En maîtrisant ces concepts, vous créez des applications conteneurisées plus robustes et plus sécurisées !
Questions Fréquemment Posées
La leçon « Gestion des secrets et RBAC » est-elle gratuite ?
Oui — le texte complet de « Gestion des secrets et RBAC » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours DevOps Bootcamp, passe à CoddyKit PRO. Le cours DevOps Bootcamp comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Gestion des secrets et RBAC » ?
Découvrez des stratégies avancées pour gérer les données sensibles et mettre en œuvre le contrôle d’accès basé sur les rôles (RBAC) dans les environnements de conteneurs. Tu pratiques DevOps Bootcamp avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer DevOps Bootcamp ?
Aucune expérience préalable n'est requise. DevOps Bootcamp sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Gestion des secrets et RBAC » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon DevOps Bootcamp ?
Oui. Chaque leçon DevOps Bootcamp inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Analyse de sécurité des images de conteneurs
- Sécurité des conteneurs à l’exécution
- Gestion des secrets et RBAC
- Politiques réseau et réseau à privilèges minimaux