Les applications Web nécessitent souvent des secrets tels que des clés API, des mots de passe et des certificats privés pour fonctionner, mais le stockage et l'accès à ces ressources peuvent exposer les développeurs à des risques de sécurité.
Dans cet article, vous découvrirez les défis de la gestion des secrets ainsi que certaines des meilleures pratiques pour gérer, stocker et lire les secrets dans les applications Web.
Les secrets sont des informations d'identification numériques utilisées pour l'authentification et l'autorisation. Ils gèrent les droits d'accès aux niveaux humain-application et application-application.
Les types de secrets courants incluent :
Les secrets permettent aux utilisateurs et aux applications d'accéder à des données, des systèmes et des services sensibles. C'est pourquoi il est essentiel de garder les secrets en sécurité en transit et au repos.
La méthode la plus fréquente pour stocker des secrets consiste à utiliser des fichiers .env
, souvent appelés variables d'environnement ; cependant, ces fichiers peuvent exposer des données à des utilisateurs non autorisés et la gestion manuelle des fichiers peut entraîner des erreurs.
Pour plus de détails sur les risques posés par les fichiers .env
, lisez ici .
La gestion secrète offre une alternative plus sécurisée.
Pour comprendre la gestion des secrets, vous devez d'abord connaître le cycle de vie des secrets.
Un secret sain devrait suivre ce processus :
Génération/création : le secret est généré soit manuellement par l'utilisateur, soit automatiquement selon les besoins. Les mots de passe adhèrent généralement à une politique qui régit leur création et leur utilisation.
Rotation : une fois qu'un secret est utilisé, il doit être modifié régulièrement, soit automatiquement créé, soit via une invite de création manuelle. Si un secret est obsolète ou expire, l'accès est bloqué jusqu'à ce que le secret soit modifié.
Révocation : lorsqu'un secret n'est plus nécessaire ou recherché, par exemple lorsqu'un employé quitte une entreprise ou lorsqu'une activité suspecte est découverte, il est supprimé d'un utilisateur ou d'un programme, bloquant ainsi l'accès à la ressource. L'élagage des secrets inutiles, expirés, violés ou faibles est une étape importante dans le maintien d'une excellente hygiène secrète.
La gestion des secrets est le processus de gestion sûre et efficace de la production, de la rotation, de la révocation et du stockage des informations d'identification tout au long du cycle de vie du secret. Considérez-le comme une version améliorée de la gestion des mots de passe. Alors que la portée des informations d'identification gérées s'élargit, l'objectif reste le même : protéger les actifs vitaux contre les accès indésirables.
La gestion des secrets réduit ou élimine la participation des utilisateurs à l'administration des secrets afin de limiter les points de défaillance potentiels.
De manière générale, il contribue à la sécurité à trois niveaux :
La sécurité de l'infrastructure empêche l'accès non autorisé aux comptes d'utilisateurs et d'applications, aux appareils et aux autres éléments du réseau.
La sécurité des services cloud limite et gère l'accès aux comptes cloud et aux services cloud critiques.
La sécurité des données empêche la compromission des données sur les systèmes vitaux, le stockage, les bases de données et d'autres ressources.
Cependant, la mise en œuvre de la gestion des secrets signifie intégrer des mesures de sécurité dans les niveaux les plus vulnérables de l'infrastructure d'une organisation (clouds, code, données et appareils), ce qui peut être difficile.
Certains des risques courants liés à la gestion des secrets incluent :
Visibilité et sensibilisation incomplètes : il s'agit d'un défaut particulier dans les modèles décentralisés dans lesquels les administrateurs, les développeurs et les autres membres de l'équipe gardent leurs secrets individuellement, voire pas du tout. La surveillance ici signifie qu'il y aura certainement des failles de sécurité ainsi que des défis d'audit.
Informations d'identification codées en dur/intégrées : les applications et les appareils IoT sont fournis et déployés avec des informations d'identification par défaut codées en dur qui sont faciles à déchiffrer à l'aide d'outils d'analyse et d'attaques de type dictionnaire ou devinettes simples.
Informations d' identification privilégiées et cloud : les consoles d'administration du cloud et de la virtualisation (telles que celles fournies par AWS ou Office 365) accordent aux utilisateurs des privilèges de superutilisateur étendus, leur permettant de démarrer et d'arrêter instantanément des machines virtuelles et des applications à grande échelle. Chacune de ces machines virtuelles possède son propre ensemble de privilèges et de secrets qui doivent être contrôlés.
Outils DevOps : les équipes DevOps utilisent généralement plusieurs outils et technologies pour l'orchestration, la gestion de la configuration et à d'autres fins (par exemple, les conteneurs Chef, Puppet, Ansible, Salt et Docker), qui s'appuient sur l'automatisation et d'autres scripts nécessitant des secrets pour fonctionner.
Comptes de fournisseurs tiers/solutions d'accès à distance : il est difficile de s'assurer que l'autorisation fournie via l'accès à distance ou à un tiers est utilisée de manière appropriée.
Processus de gestion manuelle des secrets : plus de techniques de gestion manuelle des secrets impliquent un risque plus élevé de failles de sécurité et d'erreurs.
Cependant, il existe des solutions et des bonnes pratiques pour résoudre ces problèmes et protéger vos données sensibles.
Il existe plusieurs méthodes que vous pouvez utiliser pour fournir à vos utilisateurs et applications un moyen sûr et sécurisé de récupérer ce dont ils ont besoin pour accéder aux systèmes.
Voici ce que vous devez faire pour créer un système efficace de gestion des secrets au sein de votre organisation.
Tout d'abord, vous devez centraliser vos secrets. De nombreux projets stockent des secrets dans des systèmes de contrôle de version tels que GitHub, Bitbucket et GitLab.
La centralisation de vos données permet de contrôler plus facilement qui peut accéder aux secrets et à quel moment.
Pour centraliser les secrets, vous pouvez les enregistrer dans une base de données ou utiliser un gestionnaire de secrets.
En savoir plus sur les gestionnaires secrets ici .
Une politique unifiée de gestion des secrets doit fournir des directives strictes pour la structure des secrets (longueur minimale, complexité, utilisation de caractères spéciaux, mots de passe interdits, réutilisation et durée) tout en interdisant l'utilisation de secrets par défaut ou codés en dur.
Certaines caractéristiques fondamentales devraient être incluses dans cette politique :
Lorsque les actions ne sont pas automatisées, vous courez le risque de dommages causés par une erreur humaine. Essayez de vous fier à la technologie plutôt qu'aux humains pour développer, gérer, diffuser et maintenir des secrets et supprimer tout secret codé en dur ou intégré.
Fournissez des informations d'identification temporaires à des individus ou entités uniques au niveau granulaire, également appelés secrets dynamiques , afin qu'en cas de violation, les informations d'identification concernées puissent être révoquées sans affecter l'ensemble de l'infrastructure de développement.
À tout le moins, différents ensembles d'informations d'identification doivent être créés pour différents systèmes ou équipes de production, idéalement pour chaque environnement.
Les secrets doivent être chiffrés en transit et au repos afin d'assurer une sécurité maximale au sein du réseau.
Vos clés de chiffrement doivent être consolidées dans la solution de gestion des secrets, ce qui vous permet d'établir un contrôle approprié sur qui a accès à ces clés.
Pour améliorer la surveillance et la responsabilité, utilisez la surveillance des sessions privilégiées pour enregistrer, auditer et surveiller toutes les sessions privilégiées pour les comptes, les utilisateurs, les scripts et les outils d'automatisation.
La capture des frappes et des écrans est également une option, permettant la visualisation et la lecture en direct.
Certaines solutions de gestion des sessions de privilèges d'entreprise permettent également aux équipes informatiques de détecter un comportement suspect de session en cours et d'arrêter, de verrouiller ou de mettre fin à la session jusqu'à ce que l'activité puisse faire l'objet d'une enquête approfondie.
Tirez parti de la nature distribuée des réseaux actuels. Séparez les secrets et les données sensibles plutôt que de les concentrer au même endroit. Cela facilite l'utilisation et la mise à jour des secrets au sein de l'infrastructure de développement.
La gestion des secrets est essentielle pour préserver la cybersécurité d'une organisation. Votre organisation doit développer une stratégie de base de gestion des secrets qui définit des règles et des processus uniformes pour toutes les phases du cycle de vie d'un secret afin de gérer les secrets de manière sécurisée et efficace.