Développer des applications avec Always Encrypted avec enclaves sécurisées
S’applique à : SQL Server 2019 (15.x) et versions ultérieures - Windows uniquement Azure SQL Database
Always Encrypted avec enclaves sécurisées étend Always Encrypted pour permettre des fonctionnalités plus riches dans les requêtes des applications sur des colonnes de base de données sensibles chiffrées. Elle tire parti des technologies d’enclave sécurisées pour permettre à l’exécuteur d’une requête dans le Moteur de base de données de déléguer des calculs sur des colonnes chiffrées à une enclave sécurisée à l’intérieur du processus du Moteur de base de données.
Prérequis
Votre environnement doit répondre aux exigences suivantes pour prendre en charge Always Encrypted avec des enclaves sécurisées.
- Votre instance SQL Server ou votre serveur de base de données dans Azure SQL Database doit être correctement configuré pour prendre en charge les enclaves et l'attestation, si applicable/exigé. Pour plus d’informations, consultez Configurer l’enclave sécurisée et l’attestation.
- Vérifiez que votre application :
utilise une version du pilote client qui prend en charge Always Encrypted avec enclaves sécurisées.
active Always Encrypted lors de la connexion à votre base de données.
définit un protocole d'attestation, qui détermine si le pilote client doit attester l'enclave avant d'envoyer des requêtes d'enclave, et le cas échéant, le service d'attestation qu'il doit utiliser. Les versions de pilotes les plus récentes prennent en charge les protocoles d'attestation suivants :
- Microsoft Azure Attestation – met en œuvre l'attestation en utilisant Microsoft Azure Attestation.
- Service Guardian hôte – met en œuvre l'attestation en utilisant Service Guardian hôte.
- Aucun – autorise l'utilisation d'enclaves sans attestation.
La table ci-dessous indique les protocoles d'attestation valides pour des produits SQL et des technologies d'enclave particuliers :
Produit Technologie d'enclave Protocoles d'attestation pris en charge SQL Server 2019 (15.x) et versions ultérieures Enclaves de sécurité basée sur la virtualisation Service Guardian hôte, aucun Azure SQL Database Enclaves SGX (dans les bases de données de série DC) Microsoft Azure Attestation Azure SQL Database Enclaves de sécurité basée sur la virtualisation Aucune Définit une URL d'attestation valide pour votre environnement, si vous utilisez l'attestation.
- Si vous utilisez SQL Server et le service Guardian hôte (SGH), consultez Déterminer et partager l’URL d’attestation SGH.
- Si vous utilisez Azure SQL Database avec les enclaves Intel SGX et Microsoft Azure Attestation, reportez-vous à Déterminer l'URL d'attestation de votre stratégie d'attestation.
Pilotes clients pour Always Encrypted avec enclaves sécurisées
Pour développer des applications en utilisant Always Encrypted avec enclaves sécurisées, vous avez besoin d’une version du pilote client SQL qui prend en charge les enclaves sécurisées. Le pilote client joue le rôle clé suivant :
- Avant de soumettre une requête utilisant une enclave sécurisée à SQL Server ou Azure SQL Database pour exécution, le pilote initie l'attestation de l'enclave (si elle est configurée) pour vérifier que l'enclave sécurisée est fiable et peut être utilisée en toute sécurité pour traiter des données sensibles. Pour plus d’informations sur l’attestation, consultez Attestation des enclaves sécurisées.
- Le pilote client établit une session sécurisée avec l'enclave en négociant un secret partagé.
- Le pilote utilise le secret partagé pour chiffrer les clés de chiffrement de colonne dont l’enclave aura besoin pour traiter la requête, puis envoie les clés à SQL Server, qui les transfère à l’enclave sécurisée qui déchiffre les clés.
- Enfin, le pilote envoie la requête pour exécution, ce qui déclenche les calculs à l’intérieur de l’enclave sécurisée.
Les pilotes clients suivants prennent en charge Always Encrypted avec enclaves sécurisées :
Fournisseur de données Microsoft .NET pour SQL Server dans .NET Framework 4.6 ou ultérieur et .NET Core 2.1 ou ultérieur. Si vous souhaitez utiliser les enclaves de sécurité basée sur la virtualisation sans attestation, vous devez disposer de la version 4.1 ou d'une version ultérieure, compatible avec le .NET Framework 4.6.1 ou supérieur et le .NET Core 3.1.
- Pour plus d’informations, consultez Utilisation d’Always Encrypted avec le fournisseur de données Microsoft .NET pour SQL Server.
- Pour obtenir un tutoriel pas à pas, consultez Tutoriel : Développer une application .NET en utilisant Always Encrypted avec enclaves sécurisées.
- Consultez également Exemple illustrant l’utilisation du fournisseur Azure Key Vault et d’Always Encrypted avec enclaves sécurisées.
Microsoft ODBC Driver for SQL Server, version 17.4 ou ultérieure. Si vous souhaitez utiliser des enclaves de sécurité basée sur la virtualisation sans attestation, utilisez la version 18.1 ou une version ultérieure.
- Pour plus d’informations, consultez Utilisation d’Always Encrypted avec ODBC Driver.
- Pour plus d’informations sur la façon d’activer les calculs d’enclave pour une connexion de base de données en utilisant ODBC, consultez la section Activation d’Always Encrypted avec enclaves sécurisées.
Microsoft JDBC Driver pour SQL Server, version 8.2 ou ultérieure. Si vous souhaitez utiliser des enclaves de sécurité basée sur la virtualisation sans attestation, utilisez l version 12.2 ou une version ultérieure.
- Pour plus d’informations, consultez Utilisation d’Always Encrypted avec enclaves sécurisées avec le pilote JDBC.
Fournisseur de données .NET Framework pour SQL Server dans .NET Framework 4.7.2 ou supérieur.
- Pour plus d’informations, consultez Utilisation d’Always Encrypted avec le fournisseur de données .NET Framework pour SQL Server.
- Pour un didacticiel étape par étape, reportez-vous à Didacticiel : développer une application .NET Framework en utilisant Always Encrypted avec des enclaves sécurisées
Remarque
L'utilisation du fournisseur de données .NET Framework pour SQL Server (System.Data.SqlClient) n'est pas recommandée pour le nouveau développement. Pour en savoir plus, reportez-vous à System.Data.SqlClient.