De nombreuses applications ont besoin d’accéder à des informations sensibles telles que les numéros de carte de crédit, les numéros de sécurité sociale ou simplement les noms légaux et les adresses. Ces données sont généralement stockées dans votre base de données et l’une de vos options pour sécuriser ces données est d’utiliser Always Encrypted pour chiffrer les données dans ces colonnes, à la fois au repos et en transit.
La configuration de Always Encrypted dans une base de données nécessite plusieurs étapes :
- Génération d’un certificat SSL.
- Installation du certificat SSL sur tous les clients qui ont besoin de décrypter ces colonnes.
- Référencement de ce certificat avec un objet de métadonnées SQL Server appelé une clé maître de colonne (CMK).
- Installation d’une clé de chiffrement de colonne (ou CEK) signée par la clé privée du certificat SSL sur le serveur.
- Chiffrement des colonnes.
Dans cet article, nous effectuerons toutes ces étapes à l’aide de PowerShell. Bien qu’il soit possible d’effectuer ces actions à l’aide d’une combinaison de modules complémentaires MMC de certificat utilisateur ou d’ordinateur et de SSMS, savoir comment effectuer ces étapes dans PowerShell est la première étape pour automatiser ces étapes.
Il existe plusieurs raisons pour lesquelles vous voudriez automatiser la configuration de Always Encrypted :
- Rotation des clés : Remplacement des certificats SSL par de nouveaux.
- Migration ou ajout de clients qui ont besoin de décrypter les colonnes.
- Mise en place d’un système d’intégration et de déploiement continus (CI/CD) et configuration régulière de nouvelles bases de données de développement ou de test.
Dans notre scénario d’exemple, nous avons une application web .NET 4.6.2 dans un cluster de deux machines virtuelles Azure exécutant IIS derrière un équilibreur de charge. L’application utilise une bibliothèque appelée Log4Net pour enregistrer des messages dans une table de notre base de données. Il y a deux colonnes dans cette table que nous voulons chiffrer : ClientIP et User.
Le chiffrement de ces colonnes nécessite quelques étapes :
- Créer un certificat sur une machine virtuelle.
- Copier le certificat sur l’autre machine virtuelle et l’application web Azure.
- Créer la CMK et la CEK dans la base de données.
- Chiffrer les colonnes.
Il est important de noter que le certificat ne doit jamais être installé sur la machine exécutant SQL Server pour empêcher l’accès non autorisé aux données.
Une fois la configuration terminée, vous pouvez vérifier les CMK et les CEK dans votre base de données à l’aide des vues de gestion dynamique sys.column_master_keys, sys.column_encryption_keys et sys.column_encryption_key_values.
Always Encrypted est une fonctionnalité puissante pour protéger les données sensibles dans votre base de données. En utilisant PowerShell, vous pouvez automatiser le processus de configuration et garantir un chiffrement cohérent dans l’ensemble de vos applications.
Pour plus d’informations et des exemples de code détaillés, veuillez vous référer à l’article original.