Sécurisez ce qui est important pour votre entreprise.
Il y a beaucoup de choses à penser lorsque vous travaillez avec des conteneurs, Kubernetes, le cloud et les secrets. Vous devez employer et relier les meilleures pratiques autour de la gestion des identités et des accès et choisir et utiliser différents outils.
Que vous soyez développeur ou administrateur système, vous devez vous assurer que vous disposez du bon choix d’outils pour sécuriser vos environnements. Les applications ont besoin d’accéder aux données de configuration en place pour fonctionner correctement. Bien que la plupart des données de configuration ne soient pas sensibles, certaines doivent rester confidentielles. Ces chaînes de caractères sont appelées secrets.
En raison de l’absence de solutions prêtes à l’emploi, de nombreuses entreprises ont cherché à créer leurs propres outils de gestion des secrets. En voici quelques-uns que vous pouvez utiliser pour répondre à vos besoins.
Vault
HashiCorp Vault est un outil qui permet de stocker et d’accéder aux secrets en toute sécurité.
Il fournit une interface unifiée pour les secrets tout en maintenant un contrôle d’accès strict et en enregistrant un journal d’audit complet. C’est un outil qui sécurise les applications et les bases des utilisateurs afin de limiter la surface et le temps d’attaque en cas de violation.
En outre, il fournit une API qui permet l’accès aux secrets sur la base de politiques. Tout utilisateur de l’API doit vérifier et ne voir que les secrets qu’il est autorisé à voir.
Vault chiffre les données à l’aide d’AES 256 bits avec GCM.
Il peut accumuler des données dans différents backends tels que Amazon DynamoDB, Consul et bien d’autres encore. Vault prend en charge la journalisation vers un fichier local pour les services d’audit, un serveur Syslog ou directement vers une socket. Vault enregistre des informations sur le client qui a agi, l’adresse IP du client, l’action et l’heure à laquelle elle a été effectuée.
Le démarrage/redémarrage implique toujours un ou plusieurs opérateurs pour desceller la chambre forte. Il fonctionne principalement avec des jetons. Chaque jeton est associé à une politique qui peut limiter les actions et les chemins d’accès. Les principales caractéristiques de la chambre forte sont les suivantes
- Il crypte et décrypte les données sans les stocker.
- Le coffre-fort peut générer des secrets à la demande pour certaines opérations, telles que les bases de données AWS ou SQL.
- Il permet la réplication entre plusieurs centres de données.
- Le coffre-fort dispose d’une protection intégrée pour la révocation des secrets.
- Il sert de référentiel de secrets avec des détails de contrôle d’accès.
AWS Secrets Manager
Vous vous attendiez à ce qu’AWS figure sur cette liste. N’est-ce pas ?
AWS a une solution à chaque problème.
AWS Secrets Manager vous permet de faire pivoter, de gérer et de récupérer rapidement des identifiants de base de données, des clés API et d’autres mots de passe. Grâce à Secrets Manager, vous pouvez sécuriser, analyser et gérer les secrets nécessaires pour accéder aux capacités du nuage AWS, sur des services tiers et sur site.
Secrets Manager vous permet de gérer l’accès aux secrets à l’aide d’autorisations précises. Les principales caractéristiques d’AWS Secrets Manager sont les suivantes :
- Cryptage des secrets au repos à l’aide de clés de cryptage.
- Il déchiffre également le secret, puis le transmet en toute sécurité via TLS.
- Fournit des exemples de code qui aident à appeler les API de Secrets Manager
- Il dispose de bibliothèques de mise en cache côté client pour améliorer la disponibilité et réduire la latence de l’utilisation de vos secrets.
- Configurez les points d’extrémité Amazon VPC (Virtual Private Cloud) pour maintenir le trafic au sein du réseau AWS.
Akeyless Vault
Akeyless Vault est une plateforme SaaS unifiée de gestion des secrets de bout en bout, qui protège tous les types d’informations d’identification, à la fois statiques et dynamiques, y compris l’automatisation des certificats et les clés de chiffrement. En outre, elle fournit une solution unique pour sécuriser l’accès à distance (confiance zéro) à toutes les ressources dans les environnements existants, multi-cloud et hybrides.
Akeyless protège les secrets et les clés en utilisant une technologie intégrée brevetée et certifiée FIPS 140-2 ; il n’a aucune connaissance des secrets et des clés de ses clients.
Les principales caractéristiques sont les suivantes
- Une plateforme SaaS disponible dans le monde entier qui offre une haute disponibilité (HA) et une reprise après sinistre (DR) intégrées en s’appuyant sur une architecture cloud-native au sommet d’un service multirégional et multicloud.
- La gestion avancée des secrets fournit un coffre-fort sécurisé pour les secrets statiques et dynamiques tels que les mots de passe, les informations d’identification, les clés API, les jetons, etc.
- Akeyless Vault permet le provisionnement et l’injection de tous les types de secrets à tous vos serveurs, applications et charges de travail, en fournissant une grande variété de plugins qui vous permettent de vous connecter à toutes vos plateformes DevOps et IT telles que CI/CD, la gestion de la configuration et les outils d’orchestration tels que Kubernetes et Docker.
Temps de mise en production le plus rapide car :
- SaaS – aucun déploiement, installation ou maintenance n’est nécessaire
- L’intégration est instantanée grâce à la migration automatique des secrets à partir des référentiels de secrets existants connus
La plateforme prend en charge deux autres piliers :
- Accès aux applications sans confiance (AKA Remote Access) en fournissant une authentification unifiée et des identifiants d’accès juste à temps, ce qui vous permet de sécuriser les applications et l’infrastructure sans périmètre.
- Encryption as-a-Service, permet aux clients de protéger les données personnelles et professionnelles sensibles en appliquant un cryptage avancé au niveau de l’application, certifié FIPS 140-2.
Keywhiz
Square Keywhiz vous aide à gérer les secrets d’infrastructure, les trousseaux de clés GPG et les informations d’identification des bases de données, y compris les certificats et les clés TLS, les clés symétriques, les jetons API et les clés SSH pour les services externes. Keywhiz est un outil de gestion et de partage des secrets.
L’automatisation de Keywhiz nous permet de distribuer et de mettre en place de manière transparente les secrets essentiels pour nos services, ce qui nécessite un environnement cohérent et sécurisé. Les principales caractéristiques de Keywhiz sont les suivantes :
- Le serveur Keywhiz fournit des API JSON pour collecter et gérer les secrets.
- Il stocke tous les secrets en mémoire uniquement et ne les enregistre jamais sur le disque.
- L’interface utilisateur est réalisée avec AngularJS afin que les utilisateurs puissent valider et utiliser l’interface.
Confidant
Confidant est un outil de gestion de secrets open-source qui permet de stocker et d’accéder aux secrets de manière conviviale et sécurisée. Confidant stocke les secrets de manière appendue dans DynamoDB, et génère une clé de données KMS unique pour chaque modification de tous les secrets, en utilisant la cryptographie symétrique authentifiée Fernet.
Il fournit une interface web AngularJS qui permet aux utilisateurs finaux de gérer efficacement les secrets, les formes de secrets vers les services, et l’enregistrement des changements. Voici quelques-unes de ses caractéristiques :
- Authentification KMS
- Chiffrement au repos des secrets versionnés
- Interface web conviviale pour la gestion des secrets
- Générer des jetons qui peuvent être utilisés pour l’authentification de service à service ou pour transmettre des messages cryptés entre les services.
SOPS
Permettez-moi de vous présenter SOPS, un outil incroyable que j’ai découvert récemment. Il s’agit d’un éditeur de fichiers chiffrés qui prend en charge des formats tels que YAML, JSON, ENV, INI et BINARY. Le plus intéressant ? Il peut chiffrer vos fichiers en utilisant AWS KMS, GCP KMS, Azure Key Vault, age et PGP.
C’est là que les choses deviennent intéressantes. Imaginez que vous travaillez sur une machine qui n’a pas d’accès direct aux clés de chiffrement telles que les clés PGP. Ne vous inquiétez pas ! SOPS vous couvre grâce à sa fonction de service de clés. Vous pouvez accorder à SOPS l’accès aux clés de chiffrement stockées sur une machine distante en transférant une socket. C’est comme si vous aviez votre propre agent GPG portable !
SOPS fonctionne sur un modèle client-serveur pour le cryptage et le décryptage de la clé de données. Par défaut, il exécute un service de clé local au sein du processus. Le client envoie des requêtes de chiffrement ou de déchiffrement au service de clé en utilisant gRPC et les tampons de protocole. Ne vous inquiétez pas, ces demandes ne contiennent aucune clé cryptographique, qu’elle soit publique ou privée.
J’insiste sur le fait que la connexion au service de clés ne comporte actuellement ni authentification ni chiffrement. Il est fortement recommandé d’authentifier et de chiffrer la connexion par d’autres moyens, tels qu’un tunnel SSH, pour garantir la sécurité.
Mais attendez, ce n’est pas tout ! SOPS peut générer des journaux d’audit pour suivre l’accès aux fichiers dans votre environnement contrôlé. Lorsqu’il est activé, il enregistre l’activité de décryptage dans une base de données PostgreSQL, y compris l’horodatage, le nom d’utilisateur et le fichier décrypté. Plutôt sympa, non ?
En outre, SOPS propose deux commandes pratiques pour transmettre les secrets déchiffrés à un nouveau processus : exec-env et exec-file. La première injecte la sortie dans l’environnement d’un processus enfant, tandis que la seconde la stocke dans un fichier temporaire.
N’oubliez pas que l’extension du fichier détermine la méthode de cryptage utilisée par SOPS. Si vous cryptez un fichier dans un format spécifique, veillez à conserver l’extension de fichier originale pour le décryptage. C’est le moyen le plus simple de garantir la compatibilité.
SOPS s’inspire d’outils tels que hiera-eyaml, credstash, sneaker et password store. Il s’agit d’une solution fantastique qui élimine les tracas liés à la gestion manuelle des fichiers chiffrés par PGP.
Azure Key Vault
Vous hébergez vos applications sur Azure ? Si oui, c’est un bon choix.
Azure Key Vault permet aux utilisateurs de gérer tous les secrets (clés, certificats, chaînes de connexion, mots de passe, etc. Il est intégré dès le départ avec les origines et les cibles des secrets dans Azure. Les applications en dehors d’Azure peuvent également l’utiliser.
Vous pouvez également améliorer les performances en réduisant la latence de vos applications en nuage en stockant les clés cryptographiques dans le nuage plutôt que sur site.
Azure peut vous aider à respecter les exigences en matière de protection des données et de conformité.
Docker Secrets
Les secrets Docker vous permettent d’ajouter facilement le secret au cluster, et il n’est partagé que sur des connexions TLS mutuellement authentifiées. Les données sont ensuite transmises au nœud gestionnaire dans les secrets Docker et sont automatiquement enregistrées dans le magasin Raft interne, ce qui garantit que les données sont cryptées.
Les secrets Docker peuvent être facilement appliqués pour gérer les données et les transférer aux conteneurs qui y ont accès. Il empêche les secrets de fuir lorsque l’application les utilise.
Knox
Knox a été développé par la plateforme de médias sociaux Pinterest pour résoudre le problème de la gestion manuelle des clés et de la conservation d’une piste d’audit. Knox est écrit en Go, et les clients communiquent avec le serveur Knox à l’aide d’une API REST.
Knox utilise une base de données temporaire volatile pour stocker les clés. Il chiffre les données stockées dans la base de données en utilisant AES-GCM avec une clé de chiffrement principale. Knox est également disponible sous forme d’image Docker.
Doppler
Des startups aux entreprises, des milliers d’organisations utilisent Doppler pour garder leurs secrets et la configuration de leurs applications synchronisés entre les environnements, les membres de l’équipe et les appareils.
Il n’est pas nécessaire de partager des secrets par email, fichiers zip, git et Slack ; permettez à vos équipes de collaborer pour qu’elles aient le secret instantanément après l’ajout du secret. Doppler vous donne un sentiment de détente en automatisant le processus et en vous faisant gagner du temps.
Vous pouvez créer des références aux secrets fréquemment utilisés de sorte qu’une seule mise à jour dans certains intervalles fera tout votre travail. Utilisez les secrets dans Serverless, Docker, ou n’importe où, Doppler travaille avec vous. Lorsque votre pile évolue, elle reste telle quelle, ce qui vous permet d’être opérationnel en quelques minutes.
Doppler CLI sait tout sur la récupération de vos secrets en fonction de votre répertoire de projet. Ne vous inquiétez pas si quelque chose change, vous pouvez facilement annuler les modifications cassées en un seul clic ou via le CLI et l’API.
Avec Doppler, travaillez plus intelligemment et obtenez votre logiciel de gestion des secrets GRATUITEMENT. Si vous recherchez plus de fonctionnalités et d’avantages, optez pour un pack de démarrage à 6 $/mois/siège.
Ensuite, nous verrons où vous pouvez stocker vos secrets.
Où conservez-vous vos secrets ?
Ne me dites pas que vous avez encore des secrets dans GitHub. 😯
Eh bien, Si vous construisez une application fiable, il y a de fortes chances que vos fonctions vous obligent à accéder à des secrets ou à tout autre type d’informations sensibles que vous conservez.
Ces secrets peuvent inclure :
- Des clés d’API
- Les informations d’identification de la base de données
- Des clés de chiffrement
- Paramètres de configuration sensibles (adresse électronique, noms d’utilisateur, drapeaux de débogage, etc.)
- Des mots de passe
Cependant, il peut s’avérer difficile de conserver ces secrets en toute sécurité. Voici donc quelques conseils pour les développeurs et les administrateurs système :
Patching des dépendances des fonctions
N’oubliez jamais de suivre les bibliothèques utilisées dans les fonctions et de signaler les vulnérabilités en les surveillant en permanence.
Utilisez les passerelles API comme tampon de sécurité
N’exposez pas les fonctions précisément à l’interaction de l’utilisateur. Exploitez les capacités des passerelles API de vos fournisseurs de cloud computing pour inclure une autre couche de sécurité au-dessus de votre fonction.
Sécurisez et vérifiez les données en transit
Veillez à utiliser HTTPS pour un canal de communication sécurisé et vérifiez les certificats SSL pour protéger l’identité distante.
Respectez les règles de codage sécurisé pour le code de l’application.
En l’absence de serveurs à pirater, les attaquants se tourneront vers la couche d’application, c’est pourquoi il convient d’accorder une attention particulière à la protection de votre code.
Gérez vos secrets dans un espace de stockage sécurisé
Des informations sensibles peuvent facilement être divulguées et des informations d’identification périmées sont susceptibles de donner lieu à des attaques de table arc-en-ciel si vous négligez d’adopter des solutions de gestion des secrets appropriées. N’oubliez pas de ne pas stocker de secrets dans le système d’application, les variables d’environnement ou le système de gestion du code source.
Conclusion
La gestion des clés dans le monde de l’entreprise est très pénible en raison, entre autres, d’un manque de connaissances et de ressources. Au lieu de cela, certaines entreprises intègrent les clés de chiffrement et autres secrets logiciels directement dans le code source de l’application qui les utilise, ce qui introduit le risque d’exposer les secrets.
J’espère que ce qui précède vous donnera une idée des meilleurs logiciels pour gérer les informations d’identification des applications.