Qu'est-ce qu'un secret ?
Dans le langage courant, un secret peut être toute donnée sensible que l'on souhaite garder privée. Lorsqu'on parle de secrets dans le contexte du développement logiciel, il s'agit en général d'identifiants d'authentification numériques qui donnent accès à des systèmes ou à des données. Il s'agit le plus souvent de clés API, de couples identifiant/mot de passe ou de certificats de sécurité.
Les secrets existent dans le cadre d'applications qui ne sont plus des monolithes isolés. Les applications s'appuient aujourd'hui sur des milliers de briques indépendantes : infrastructure cloud, bases de données, API et services tiers tels que Stripe, Slack, HubSpot…
Les secrets relient les différentes briques d'une même application en authentifiant chaque composant vis-à-vis des autres.
À quoi ressemblent les secrets ?
Les secrets sont en général des chaînes à forte entropie, c'est-à-dire du texte très aléatoire. Certaines clés API peuvent avoir un préfixe ou un suffixe commun (mêmes caractères au début ou à la fin de la chaîne), mais la plupart des secrets n'en ont pas : ce sont des valeurs fortement randomisées mélangeant différents types de caractères.
Exemples
Ci-dessous un exemple de secret spécifique, un jeton d'accès personnel GitHub :
- text: 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
apikey: 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
Vous remarquez que le secret est préfixé par la chaîne ghp. Voici un autre exemple, cette fois un secret générique sous forme de chaîne d'authentification Basic en Base64 :
- text: |
"Authorization": "Basic aW50ZXJuc2hpcDpjZGk="
username: aW50ZXJuc2hpcD # décodé en `internship`
password: pjZGk # décodé en `cdi`