web-dev-qa-db-fra.com

Comment stocker en toute sécurité les informations d'identification dans une variable bash?

J'ai besoin de mettre en cache mes informations d'identification d'utilisateur dans une variable de script Shell car elles sont requises pour plusieurs demandes à une API REST. Il ne sera pas stocké dans le fichier de script bash lui-même: l'utilisateur est invité à entrer les informations d'identification, et celles-ci seront réutilisées tout au long de l'exécution du script.

Quelle est la meilleure façon de les stocker afin qu'aucun autre processus non privilégié ne puisse lire ces variables?

5
Thomas R

Le stockage des informations d'identification en texte brut est toujours un cas délicat, cela dépend du cas par cas. La règle principale est: ne stockez jamais le mot de passe dans le script.

Si le script ne s'exécute que manuellement (quelqu'un qui exécute le script), ne stockez pas le mot de passe sur le script, mais demandez au script de le demander à chaque exécution.

Si le script s'exécute automatiquement:

  • Créez un utilisateur spécifique pour le but dont vous avez besoin. assurez-vous que l'utilisateur dispose des autorisations minimales possibles. Assurez-vous que l'utilisateur n'a accès à aucun autre fichier et n'est pas autorisé à exécuter autre chose que le script dont vous avez besoin.
  • Créez un fichier contenant le mot de passe et faites lire le script à partir de ce fichier. Assurez-vous que ce fichier de mot de passe ne peut être lu par personne d'autre.
  • Les mots de passe sont-ils le seul moyen de s'authentifier? Certaines applications prennent en charge les clés privées/publiques. Si vous le pouvez, utilisez-le. Assurez-vous que la clé privée est sécurisée.
  • Gardez à l'esprit que les chances que ces informations d'identification soient compromises augmentent simplement du fait que vous les avez stockées. Dans cette optique, planifiez des actions d'atténuation, par exemple, assurez-vous que le compte dispose des autorisations minimales possibles, assurez-vous que le compte ne peut se connecter qu'à partir d'un serveur spécifique, implémentez un outil de surveillance des journaux (ou un SIEM) pour être alerté lorsque ce compte est utilisé.

Il y a un très bon article sur l'échange de pile unix à ce sujet, je vous recommande de le vérifier avant d'implémenter un script avec des mots de passe.

6
Ricardo Reimao