Dans le contexte de la sécurité des applications, un secret est un élément d’information qui prouve que son détenteur est bien celui qu’il prétend être au cours du processus d’authentification et d’autorisation. Si des acteurs malveillants accèdent à des secrets, ils obtiennent un accès indésirable à vos systèmes qu’ils peuvent utiliser à diverses fins, notamment pour voler des secrets d’entreprise et des informations sur les clients, voire pour demander une rançon en échange de vos données.
Un exemple classique est le nom d’utilisateur et le mot de passe qui permettent à une application d’accéder à sa base de données, mais un secret peut également être constitué de clés API, d’informations d’identification, de certificats et de clés privées, entre autres types d’informations. Étant donné que les secrets sont utilisés pour contrôler l’accès aux actifs d’une organisation, il est essentiel de les stocker et de les protéger en toute sécurité pour réduire le risque de compromission de l’organisation.
La gestion des secrets est le processus utilisé par une organisation pour :
Lorsque les entreprises passent d’une architecture monolithique à une architecture de microservices, le nombre de composants d’application et d’infrastructure indépendants, chacun avec ses propres informations d’identification, augmente, ce qui signifie qu’il y a beaucoup plus de secrets à gérer.
Examinons de plus près deux options permettant de stocker les secrets en toute sécurité :
L’approche du coffre-fort implique l’installation d’un outil tiers de gestion des secrets. La solution du coffre-fort chiffre chaque secret pour empêcher les utilisateurs non autorisés d’y accéder. Le coffre-fort expose une API pour permettre aux utilisateurs d’accéder aux secrets sur la base de politiques établies. Lorsque les utilisateurs de l’API s’authentifient, ils ne peuvent accéder qu’aux secrets pour lesquels ils ont été autorisés.
Inconvénients :
Avantages :
Il existe de nombreux outils sur le marché que les développeurs peuvent utiliser pour stocker et gérer des secrets cryptés. Pour un exemple d’utilisation d’un outil de gestion des secrets centralisé et automatisé, lisez notre article de blog « Protecting SSL Private Keys in NGINX with HashiCorp Vault ».
Une autre approche consiste à faire appel à un fournisseur de cloud pour la gestion des secrets en tant que service. L’un des avantages est que l’outil de gestion des secrets s’intègre généralement étroitement à d’autres services de cloud tels que les bases de données gérées. Les services des fournisseurs de cloud peuvent également offrir des fonctionnalités telles que la rotation automatique, bien que des recherches futures soient nécessaires pour déterminer si cette option entraîne des temps d’arrêt.
Inconvénient :
Avantages :
Les secrets doivent être gérés avec soin afin d’éviter toute perturbation de l’application lorsqu’ils sont déverrouillés et consultés. La meilleure pratique consiste à ne jamais enregistrer de secrets dans un système de contrôle du code source. L’enregistrement de secrets dans ce système expose une organisation à un désastre possible si les secrets sont accidentellement consultés ou compromis lorsqu’une équipe ou un individu met à jour le code ou l’application. Pour cette raison, si un secret est enregistré dans le système de contrôle du code source, même brièvement, il doit être considéré comme compromis. Les données sensibles doivent être supprimées du référentiel et effacées de l’historique du système de contrôle du code source.