1

J'ai une table qui contient quelques colonnes cryptées. La base de données et l'application Web sont toutes deux hébergées sur Azure. Si j'exécute l'application Web localement, le code fonctionne correctement et j'obtiens les données décryptées de la table comme prévu. Toutefois, lorsque je publie mon application Web sur Azure, j'obtiens des délais d'attente lorsque l'application tente de lire les tables chiffrées. Les clés de chiffrement sont stockées dans un coffre-fort Azure. J'utilise Entity Framework avec le paramètre "Column Encryption Settings = Enabled" dans la chaîne de connexion.SQL Server 2016 toujours chiffré expire dans Azure

Des idées?

+0

Toutes les idées? Oui, [mesurer] (http://rusanu.com/2014/02/24/how-to-analyse-sql-server-performance/) où est le temps passé. Isolez le problème. Cela arrive-t-il aussi sans cryptage? Avez-vous consulté l'un des avertissements d'Azure [Query Performance Insight] (https://docs.microsoft.com/en-us/azure/sql-database/sql-database-query-performance)? –

+0

Cela n'arrive pas sans cryptage. Cela n'arrive pas non plus sur le reste des tables. Juste les cryptés. –

Répondre

0

Quelle version d'Azure Key Vault Provider utilisez-vous?

Les anciennes versions de Azure Key Vault Provider sont connus pour provoquer ce problème, vous pouvez essayer de mettre à niveau le fournisseur au latest version

+0

Bonjour. J'utilisais la dernière version du fournisseur AKV et la méthode AcquireTokenAsync de l'espace de noms Microsoft.IdentityModel.Clients.ActiveDirectory provoquait apparemment un blocage. Le problème est que je n'utilisais pas async/attendre tout le chemin vers le bas. Je ne sais pas vraiment comment faire cela puisque je l'appelle dans une classe SqlColumnEncryptionKeyStoreProvider surchargée, que j'ajoute aux fournisseurs de la banque de clés de chiffrement de SQLConnection. La rétrogradation de la DLL ActiveDirectory vers une ancienne version, qui a une méthode AcquireToken (non async), a résolu mon problème pour le moment. –

3

Active les dernières versions du dll Microsoft.IdentityModel.Clients.ActiveDirectory (3.X) ne font pas si bien quand il s'agit d'appels asynchrones. La méthode AcquireTokenAsync expirait tout le temps.

Je suis revenu à une version 2.X de la DLL et maintenant cela fonctionne très bien. Au début, j'utilisais la méthode AcquireToken (non async) mais quand j'ai essayé la méthode Async, j'ai découvert que ça fonctionnait aussi. Apparemment, le problème était avec la DLL tout le long.

Plus sur le sujet: https://github.com/Azure/azure-sdk-for-net/issues/1432