Meilleures pratiques pour la protection de secrets

Cet article vous aide à protéger vos secrets et à réduire le risque d’accès non autorisé. Suivez ces conseils pour vous assurer de ne pas stocker d'informations sensibles, telles que des identifiants, dans du code, dans des dépôts GitHub, des journaux ou des pipelines d'intégration continue/déploiement continu (CI/CD). Les recommandations de cet article proviennent des recommandations individuelles de services et du Microsoft Cloud Security Benchmark (MCSB).

Cet article s'aligne sur le modèle de sécurité Confiance nulle de Microsoft, qui nécessite une vérification explicite, un accès avec privilèges minimum et l'hypothèse de violation. Pour des contrôles de sécurité prescriptifs incluant l’application Azure Policy, voir Microsoft Cloud Security Benchmark v2 : Accès privilégié et MCSB v2 : Protection des données.

Découverte et prévention des secrets

Avant de pouvoir sécuriser vos secrets, vous avez besoin d’une visibilité sur l’endroit où ils existent. Il faut aussi des contrôles qui empêchent l’exposition avant qu’elle ne se produise.

  • Effectuez un audit pour identifier les secrets : Auditez vos systèmes et applications afin d’identifier les informations sensibles nécessitant une protection, telles que les mots de passe, les clés API, les chaînes de connexion et d’autres identifiants. Des audits réguliers permettent de s’assurer que votre inventaire tient compte des nouveaux secrets et que vous gérez correctement les secrets existants. Protégez les secrets créés dynamiquement, comme les jetons OAuth temporaires, avec la même rigueur que les secrets à long terme.

  • Évitez de coder des secrets en dur : Intégrer des secrets directement dans le code ou les fichiers de configuration crée un risque de sécurité important. Si les attaquants compromettent votre base de code, ils compromettent aussi vos secrets. Utilisez plutôt des variables d’environnement ou des outils de gestion de configuration qui maintiennent les secrets hors du code source. Cette pratique minimise le risque d’exposition accidentelle et simplifie les mises à jour secrètes. Intégrez la récupération des secrets à votre pipeline de déploiement automatisé et utilisez des modèles d'injection de secrets afin d'éviter leur exposition accidentelle dans les journaux ou les systèmes de contrôle de version. Pour plus d’informations, consultez Recommandations pour protéger les secrets d’application.

  • Mettez en place des outils de scan de secrets : Analysez régulièrement votre base de code à la recherche de secrets intégrés afin d’éviter toute exposition accidentelle. Des outils tels que Azure DevOps Credential Scanner et GitHub Secret Scanning peuvent détecter et alerter automatiquement les secrets dans les dépôts. Intégrez ces outils dans votre pipeline CI/CD pour une surveillance continue. Considérez tout secret trouvé par les outils de scan comme compromis. Révoquez-le et remplacez-le immédiatement pour préserver l’intégrité de votre posture de sécurité.

Sécuriser le stockage et le chiffrement

La protection des secrets nécessite des mécanismes de stockage sécurisés et un chiffrement approprié à toutes les étapes.

  • Utilisez des magasins de clés sécurisés : des services tels que Azure Key Vault et Azure Key Vault Managed HSM offrent des fonctionnalités de sécurité, notamment le contrôle d’accès, la journalisation et la rotation automatique. Cette approche centralise la gestion des secrets et réduit le risque d’accès non autorisé. Pour les secrets très sensibles ou critiques, utilisez un stockage de clés supporté par module de sécurité matérielle (HSM) pour une protection renforcée par rapport aux magasins de secrets basés sur logiciel. Pour les scénarios de clés gérés par le client, utilisez au minimum le niveau Azure Key Vault Premium, qui est soutenu par HSM. Utilisez Azure Key Vault Managed HSM pour les exigences de souveraineté des clés. Pour un aperçu des offres de gestion de clés Azure et des conseils sur le choix à choisir, consultez Gestion des clés dans Azure et Comment choisir la bonne solution de gestion de clés.

  • Chiffrer les secrets au repos et en transit : Azure Key Vault stocke les secrets de manière sécurisée via le chiffrement de l’enveloppe, où les clés de chiffrement des clés chiffrent les clés de chiffrement des données pour offrir une couche supplémentaire de sécurité. Utilisez des protocoles de communication sécurisés tels que HTTPS pour chiffrer les données en transit entre vos applications et le coffre-fort des clés. Sur Azure, divers services implémentent le chiffrement au repos en utilisant le chiffrement AES 256. TLS et MACsec sécurisent les données en transit. Pour plus d’informations, voir Chiffrement au repos et en transit.

  • Implémenter l’isolation réseau : configurezdes pare-feu et des groupes de sécurité réseau pour restreindre l’accès à vos coffres de clés. Autorisez uniquement des applications et services de confiance à accéder à vos secrets. Cette approche minimise la surface d’attaque et aide à prévenir les accès non autorisés. Pensez à utiliser plusieurs coffres de clés pour créer des périmètres d’isolation entre différents composants. Si les attaquants compromettent un composant, ce composant ne peut pas contrôler d’autres secrets ni la charge de travail entière.

Contrôle d’accès et identité

La gestion de qui et de ce qui peut accéder aux secrets est essentielle pour maintenir la sécurité.

  • Utilisez des identités gérées : Les identités gérées dans Azure offrent un moyen sécurisé pour les applications de s’authentifier aux services Azure sans stocker les identifiants dans le code. Permettre aux identités gérées des ressources Azure d’accéder en toute sécurité à Azure Key Vault et à d’autres services, réduisant ainsi la nécessité de gérer manuellement les secrets. Cette approche minimise la création de secrets et réduit la surface de risque de fuite car la plateforme gère les identifiants.

  • Appliquer un contrôle d’accès granulaire : suivez le principe du privilège minimum en appliquant un contrôle d’accès granulaire à vos secrets. Utilisez le contrôle d’accès basé sur les rôles Azure (Azure RBAC) pour garantir que seules les entités autorisées ont accès à des secrets spécifiques. Passez régulièrement en revue et mettez à jour les autorisations d’accès pour empêcher tout accès non autorisé. Mettez en place des rôles distincts tels qu’utilisateur, administrateur et auditeur pour gérer l’accès aux secrets. Cette pratique permet de garantir que seules les identités de confiance bénéficient du niveau d’autorisation approprié. Pour plus d’informations, consultez le guide Azure Key Vault RBAC.

Gestion du cycle de vie des secrets

Les secrets nécessitent une gestion continue tout au long de leur cycle de vie, de la création à la mise hors service.

  • Renouvelez régulièrement vos secrets : les secrets sont susceptibles d’être divulgués ou exposés au fil du temps. Renouvelez régulièrement vos secrets afin de réduire le risque d’accès non autorisé. Vous pouvez effectuer la rotation des secrets dans Azure Key Vault pour certains secrets. Pour les secrets qui ne peuvent pas tourner automatiquement, mettez en place un processus de rotation manuelle et supprimez-les lorsqu’ils ne sont plus utilisés. Automatisez la rotation des secrets et intégrez la redondance dans votre gestion des secrets pour s’assurer que la rotation ne perturbe pas la disponibilité des services. Implémentez la logique de réessayage et des schémas d’accès concurrents dans votre code pour aider à minimiser les problèmes pendant la fenêtre de rotation.

  • Distribuez les secrets en toute sécurité : Lorsque vous distribuez des secrets, partagez-les en toute sécurité à l’intérieur et à l’extérieur de l’organisation. Utilisez des outils conçus pour le partage sécurisé et incluez des procédures secrètes de récupération dans vos plans de reprise après sinistre. Si les attaquants compromettent ou font fuiter une clé, régénérez-la immédiatement. Utilisez des clés distinctes pour chaque consommateur plutôt que des clés de partage, même si les consommateurs ont des modes d’accès similaires. Cette pratique simplifie la gestion et la révocation des clés, ce qui permet de révoquer des clés compromises sans affecter d’autres consommateurs.

Surveillance et journalisation

La surveillance continue détecte toute activité suspecte et soutient les exigences de conformité.

  • Surveiller et journaliser l’accès : activez la journalisation et la surveillance de votre système de gestion des secrets pour suivre l’accès et l’utilisation. Utilisez Key Vault logging, Azure Monitor ou Azure Event Grid pour surveiller toutes les activités liées à vos secrets. La surveillance offre une visibilité sur qui a accédé à vos secrets et aide à détecter les comportements suspects ou les incidents de sécurité potentiels. Maintenez des traces d’audit détaillées pour inspecter et valider l’accès aux secrets, ce qui peut aider à prévenir le vol d’identité, éviter la répudiation et réduire les expositions inutiles.

Conseils spécifiques au service pour la gestion des secrets

Les services individuels peuvent proposer plus de bonnes pratiques et de conseils pour protéger les secrets. Voici quelques exemples :

Étapes suivantes

La réduction du risque de sécurité est une responsabilité partagée. Prenez des mesures proactives pour sécuriser vos charges de travail. Pour plus d’informations, consultez Responsabilité partagée dans le cloud.