Introduction
La norme ISO 27001 impose aux entreprises des exigences strictes en matière de gestion de la sécurité de l’information (SMSI), visant à garantir la confidentialité, intégrité et disponibilité des données sensibles. Pour les entreprises exploitant des systèmes on-premise ou dans le cloud, le choix d’une plateforme d’orchestration de conteneurs comme OpenShift peut soulever des questions sur sa capacité à respecter ces normes.
Dans cet article, nous analyserons si OpenShift est une solution adaptée pour les entreprises cherchant à se conformer à ISO 27001, en mettant en lumière ses fonctionnalités, ses forces et ses limites.
Qu’est-ce que la norme ISO 27001 ?
La norme ISO 27001 est une référence internationale pour la mise en place d’un Système de Management de la Sécurité de l’Information (SMSI). Elle repose sur des principes clés :
- Confidentialité : Les informations doivent être accessibles uniquement aux personnes autorisées.
- Intégrité : Les données ne doivent pas être altérées ou compromises.
- Disponibilité : Les systèmes doivent être accessibles en cas de besoin.
Pour respecter ISO 27001, les entreprises doivent adopter des processus rigoureux de gestion des risques et utiliser des outils technologiques capables de répondre aux exigences suivantes :
- Contrôle des accès : Limiter les permissions aux utilisateurs autorisés.
- Traçabilité et audit : Enregistrer et analyser les activités des systèmes.
- Chiffrement : Garantir la sécurité des données sensibles, qu’elles soient stockées ou en transit.
- Gestion des mises à jour : Maintenir des environnements sécurisés en corrigeant rapidement les vulnérabilités.
Présentation d’OpenShift et ses capacités en matière de sécurité
OpenShift, développé par Red Hat, est une plateforme d’orchestration de conteneurs basée sur Kubernetes, conçue pour faciliter le déploiement, la gestion et la sécurité des applications cloud-native. Elle est disponible en version cloud, hybride et on-premise, offrant ainsi une grande flexibilité pour répondre aux besoins des entreprises soumises à des contraintes réglementaires comme ISO 27001.
Voici un aperçu des fonctionnalités d’OpenShift qui la rendent pertinente pour les entreprises cherchant à se conformer à la norme ISO 27001
Contrôle d’accès basé sur les rôles (RBAC)
- Utilisateurs : Administrateurs, développeurs, opérateurs, etc.
- Ressources : Espaces de noms (namespaces), applications, conteneurs.
Journalisation et traçabilité
-
Audit Logs : Capturent toutes les actions des utilisateurs et des applications.
-
Intégration avec SIEM : Les journaux d’audit peuvent être envoyés à des systèmes de supervision centralisés (ex. : Splunk, ELK) pour une analyse approfondie.
Gestion des vulnérabilités
-
Analyse automatique des images de conteneurs pour détecter des dépendances obsolètes ou des failles connues.
-
Mécanisme pour imposer des politiques de sécurité, empêchant l’utilisation d’images non validées.
Chiffrement des données
-
Le chiffrement au repos pour protéger les données stockées sur le cluster.
-
Le chiffrement en transit via TLS/SSL, garantissant la confidentialité des communications entre les composants.
-
L’intégration avec des gestionnaires de clés externes (HSM, AWS KMS, etc.) pour un contrôle supplémentaire.
Mise à jour et patching
Analysons les exigences de la norme et comment OpenShift y répond :
Exigences ISO 27001 | Capacités d’OpenShift | Évaluation |
Contrôle des accès | RBAC, intégration LDAP/Keycloak pour des politiques d’accès granulaires. | ✅ Conforme |
Traçabilité et audit | Audit Logs, intégration avec SIEM pour une supervision centralisée. | ✅ Conforme |
Chiffrement des données | Chiffrement natif (au repos et en transit), intégration HSM. | ✅ Conforme |
Gestion des risques | Détection des vulnérabilités dans les conteneurs, surveillance avec Prometheus/Grafana. | ✅ Conforme |
Résilience | Déploiement haute disponibilité, gestion des ressources pour éviter les pannes. | ✅ Conforme |
Conclusion partielle : OpenShift répond à la plupart des exigences techniques d’ISO 27001, à condition d’être bien configuré et intégré dans une démarche globale de sécurité.
Exemples de gestion des accès via RBAC
Use case 1 : Un développeur peut déployer une application dans un namespace donné sans accéder aux autres applications du namespace
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: dev-namespace
name: developer-role
rules:
- apiGroups: ["apps", "extensions"]
resources: ["deployments", "replicasets", "pods"]
verbs: ["get", "list", "watch", "create", "update", "delete"]
- apiGroups: [""]
resources: ["services", "configmaps", "secrets"]
verbs: ["get", "list", "create", "update"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
namespace: dev-namespace
name: developer-binding
subjects:
- kind: User
name: developer-user
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: developer-role
apiGroup: rbac.authorization.k8s.io
Use case 2 : Un lead développeur peut déployer des applications dans plusieurs namespaces donnés
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: dev1
name: lead-developer-role
rules:
- apiGroups: ["apps", "extensions"]
resources: ["deployments", "replicasets", "pods"]
verbs: ["get", "list", "watch", "create", "update", "delete"]
- apiGroups: [""]
resources: ["services", "configmaps", "secrets"]
verbs: ["get", "list", "create", "update"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
namespace: dev1
name: lead-developer-binding-dev1
subjects:
- kind: User
name: lead-developer-user
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: lead-developer-role
apiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
namespace: dev2
name: lead-developer-binding-dev2
subjects:
- kind: User
name: lead-developer-user
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: lead-developer-role
apiGroup: rbac.authorization.k8s.io
Use case 3 : Un DevOps peut déployer sur le cluster complet
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: devops-cluster-admin
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: devops-cluster-binding
subjects:
- kind: User
name: devops-user
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: devops-cluster-admin
apiGroup: rbac.authorization.k8s.io