Éviter que les tests n'affectent la production.
ISO 27001:2022 A.8.31 (séparation des environnements de développement, test et production) exige que ces environnements soient maintenus distincts, afin que les travaux en développement ou en test ne puissent pas accéder, modifier ou exposer la production. Une grande partie de cette frontière réside dans la configuration : chaînes de connexion, variables d'environnement, scripts de peuplement et pipelines CI. Ce qui signifie qu'une simple modification d'un fichier de configuration peut discrètement la supprimer.
The shapes the same control failure takes.
A.8.31 s'affaiblit lorsqu'un chemin non-production obtient un accès à la production, ou lorsque des données et identifiants de production fuient vers un environnement inférieur. Les formes récurrentes :
Une configuration de test pointe vers la production
Une URL, un endpoint ou une configuration de base de données de test ou CI est définie sur une ressource de production, de sorte qu'une exécution de test lit ou écrit des données réelles.
Des secrets de production atterrissent dans un environnement inférieur
Une configuration de pré-production ou de développement reçoit des identifiants, clés ou endpoints de production, ce qui supprime la frontière dès que cet environnement est moins protégé.
Une protection contre l'accès inter-environnements est supprimée
Une vérification d'environnement qui empêchait une opération destructive, de peuplement ou de réinitialisation de s'exécuter ailleurs que dans un environnement dédié est retirée, permettant désormais son exécution sur la production.
Des données de test ou de peuplement obtiennent un accès à la production
Un script de peuplement, de données de test ou de migration qui recrée ou efface des données obtient un accès à la base de données de production au lieu d'une base isolée.
Les environnements partagent un stockage commun
Un cache, un bucket ou une file d'attente est configuré de sorte que les environnements de développement ou de test et de production lisent et écrivent dans le même stockage, permettant ainsi aux activités non-production d'affecter les données en direct.
Une suite de tests de bout en bout pointant vers la base de données de production.
Une suite de tests de bout en bout a besoin d'une base de données pour s'exécuter. La base de données de test dédiée est vide et les tests échouent en raison de données manquantes, donc la configuration est pointée vers la chaîne de connexion de production pour tester avec des données réelles. La suite tronque et réinitialise les tables à chaque exécution, et désormais elle le fait sur la production.
- const TEST_DB = process.env.TEST_DATABASE_URL+ const TEST_DB = process.env.DATABASE_URL // prod, pour tester avec des données réellesawait db.connect(TEST_DB)await resetAndSeed(db) // tronque les tables avant chaque exécutionCela pointe une suite de tests de bout en bout qui tronque et réinitialise les tables sur la base de données de production, de sorte qu'une exécution de test peut effacer et écraser des données en direct. A.8.31 exige que les environnements de développement, test et production soient séparés afin que les activités non-production ne puissent pas atteindre la production. Restaurez la base de données de test dédiée et chargez les données manquantes là-bas, plutôt que d'emprunter la production, et maintenez la frontière afin qu'une exécution de test ne puisse jamais écrire sur des données en direct.
La séparation est vérifiée à la frontière, pas seulement déclarée.
Un auditeur recherche des preuves que vos environnements sont effectivement séparés : que les environnements de test et de développement ne peuvent pas accéder aux données ou identifiants de production, et que la production n'est modifiée que par un chemin contrôlé. Une configuration de test connectée à une ressource de production, ou un environnement inférieur contenant des secrets de production, est le type de faille qui contredit la séparation décrite dans votre politique, et elle arrive généralement dans une seule modification d'un fichier de configuration ou de setup. Le diff est l'endroit où la frontière est franchie, et c'est le moyen le moins coûteux de la détecter.
Une revue, pas la topologie de votre environnement.
heygrc signale les modifications qui concernent A.8.31 et cite le contrôle afin que la correction ait lieu dans la pull request. Il ne provisionne pas vos environnements ni ne gère vos secrets. Il détecte le moment où un chemin de test ou de développement accède à la production, au niveau du diff.