La gestion des secrets désigne le processus de sécurisation et de contrôle des informations d'identification pour les éléments automatisés d'une application.
Cet article s'articule autour des points suivants :
Contenu associé
Qu'est-ce que la sécurité des API ?
Qu'est-ce qu'un appel d'API ?
Qu’est-ce qu’une violation des données ?
Tout savoir sur la SQL injection
Rançongiciel
Abonnez-vous à theNET, le récapitulatif mensuel de Cloudflare des idées les plus populaires concernant Internet !
Copier le lien de l'article
La gestion des secrets consiste à stocker en toute sécurité des informations sensibles qui, si elles devaient fuiter, donneraient à des personnes malveillantes ou non autorisées à l'infrastructure de l'application. Dans ce contexte, un « secret » désigne les clés de chiffrement, les clés API, les clés SSH, les jetons, les mots de passe ou les certificats grâce auxquels les éléments disparates de l'infrastructure d'une application se connectent entre eux.
Si un utilisateur n'a besoin que d'un seul mot de passe pour se connecter à une application, cette application est elle-même composée de différents éléments qui ont tous besoin d'informations d'identification pour communiquer entre eux, il s'agit des secrets.
Tout le monde ou presque sait à quel point il peut être difficile de se souvenir des mots de passe pour plusieurs applications, en particulier lorsque ces mots de passe doivent être mis à jour régulièrement. C'est ce qui pousse de nombreuses personnes vers des pratiques peu sûres en matière de mots de passe, à savoir noter par écrit les mots de passe ou encore utiliser le même mot de passe dans toutes les applications.
Les développeurs sont confrontés à des difficultés similaires lorsqu'ils créent des logiciels. L'infrastructure qui permet aux applications de fonctionner, ou sur laquelle est exécuté le site de l'entreprise, peut impliquer le recours à des centaines, voire des millions de clés, de jetons et de mots de passe. La gestion de tous ces secrets étant très contraignante, ils finissent souvent par être codés en dur (c'est-à-dire intrinsèquement programmés) dans le logiciel d'application. Il arrive qu'ils ne soient jamais mis à jour, ou qu'il soient codés en clair, ce qui les rend vulnérables aux acteurs malveillants.
Dans le contexte du développement d'applications, un secret est une donnée utilisée comme information d'identification. Tout comme une personne doit s'authentifier pour accéder à son courrier électronique en saisissant un nom d'utilisateur et un mot de passe, les composants non humains de cette application de courrier électronique (ou de toute autre application) doivent s'authentifier les uns les autres pour que l'application fonctionne. Ces composants peuvent inclure des connexions API, des conteneurs, des microservices, des scripts, des fonctions et des outils d'automatisation. Pour s'authentifier, ils utilisent des informations d'identification.
Voici quelques exemples de secrets :
Pensez à la façon dont les blocs de construction pour enfants (tels que LEGO®) s'emboîtent pour former une structure solide, bien que miniature. Les secrets sont comme ces mécanismes de verrouillage qui assurent la cohésion d'une application. Sans eux, l'application se décompose.
Contrairement aux blocs de construction, qui présentent toujours les mêmes arêtes pour s'emboîter les uns dans les autres, les secrets doivent être changés régulièrement. Si un secret est utilisé trop longtemps, il arrive qu'un acteur malveillant finisse par le deviner dans le cadre d'une tentative de connexion par force brute. En outre, plus un secret est utilisé longtemps, plus il est susceptible de faire l'objet d'une fuite.
La nécessité de faire tourner les secrets est une couche de complexité supplémentaire à leur gestion sécurisée. Il est déjà difficile de se souvenir d'un mot de passe actualisé, la rotation régulière des secrets représente une difficulté de taille. Une douzaine d'applications peuvent dépendre d'une seule API, et toutes ces applications devront mettre à jour leurs secrets s'il est nécessaire de modifier les informations d'identification de l'API. Dans certains cas, une organisation ne sait même pas combien d'applications dépendent de cette API, ni ce qui va cesser de fonctionner si le secret est mis à jour.
Parfois, les équipes de développement choisissent de ne pas mettre à jour les secrets par souci d'efficacité, tout comme de nombreuses personnes préfèrent ne pas mettre à jour leurs mots de passe. Certains codent même les secrets en dur dans des scripts et des fonctions, imaginant que les secrets n'auront pas besoin d'être modifiés.
Transmission manuelle : les développeurs qui ne disposent pas d'une solution de gestion des secrets peuvent être contraints d'avoir recours à des processus manuels pour transmettre les secrets parmi les équipes de développement. Par conséquent les secrets sont souvent consignés de manière pas assez rigoureuse et introduits dans des environnements non sécurisés.
Comptes de tiers : des utilisateurs externes peuvent avoir besoin d'accéder aux API et aux bases de données internes. S'agissant de personnes extérieures à l'organisation, il est difficile de mettre en œuvre une gestion sécurisée des secrets.
Informatique cloud: les environnements cloud sont tentaculaires et éphémères. De nouvelles instances de machines virtuelles sont régulièrement créées pour prendre en charge des services support, et chacune d'entre elles a besoin de ses propres secrets. Les applications cloud offrent également un accès très large à partir d'un nombre presque illimité d'endroits, ce qui augmente considérablement le nombre d'informations d'identification et de privilèges à gérer.
Absence de gestion centralisée : de même qu'il est difficile de mettre un groupe de personnes d'accord sur l'heure du dîner, il est difficile de gérer des secrets diffusés parmi plusieurs équipes et fonctions. Chaque équipe peut consigner les secrets différemment, les stocker différemment ou n'avoir aucune visibilité sur les secrets utilisés par les autres équipes.
Les outils de gestion des secrets peuvent automatiser tous les processus nécessaires à une gestion sécurisée des secrets. Ils stockent également les secrets dans un environnement sécurisé, à l'écart du code de l'application. Cela permet aux développeurs d'éviter de coder les secrets en dur ou de les stocker en clair, au risque de les voir compromis.
Cloudflare propose une plateforme de développement hautement évolutive pour l'exécution du code à travers son réseau mondial. Cloudflare Secrets Store permet aux développeurs de stocker et de gérer en toute sécurité les secrets dont leurs applications ont besoin, qu'il s'agisse de jetons d'API ou d'en-têtes d'autorisation de requête. Découvrir Secrets Store.
Prise en main
À propos de la sécurité des applications Web
Menaces courantes
Ressources VPN
Glossaire de sécurité