Я зашифровал пару столбцов в базе данных SQL, размещенной в Azure.Я сделал шифрование (детерминированное), используя AzureKeyVault.Я предоставил службе приложений в самом Azure доступ к KeyVault.Я также добавил Column Encryption Setting=enabled
в строку подключения.Я использую Entity Framework 6.0 для своего слоя данных.
Однако, когда я выполняю запрос к таблице с шифрованием, я просто получаю сообщение об ошибке тайм-аута.
Истекло время ожидания выполнения.Время ожидания истекло до завершения операции, или сервер не отвечает.
Я смотрел на добавление этого кода и вызов его в моем методе Global.asax
Application_Start
:
public class AzureKeyValueConfiguration
{
private static ClientCredential _clientCredential;
public static void InitializeAzureKeyVaultProvider()
{
string clientId = "MyClient";
string clientSecret = "MySecret";
_clientCredential = new ClientCredential(clientId, clientSecret);
SqlColumnEncryptionAzureKeyVaultProvider azureKeyVaultProvider = new SqlColumnEncryptionAzureKeyVaultProvider(GetToken);
Dictionary<string, SqlColumnEncryptionKeyStoreProvider> providers =
new Dictionary<string, SqlColumnEncryptionKeyStoreProvider>();
providers.Add(SqlColumnEncryptionAzureKeyVaultProvider.ProviderName, azureKeyVaultProvider);
SqlConnection.RegisterColumnEncryptionKeyStoreProviders(providers);
}
private async static Task<string> GetToken(string authority, string resource, string scope)
{
var authContext = new AuthenticationContext(authority);
AuthenticationResult result = await authContext.AcquireTokenAsync(resource, _clientCredential);
if (result == null)
throw new InvalidOperationException("Failed to obtain the access token");
return result.AccessToken;
}
}
protected void Application_Start()
{
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
AutoMapperConfiguration.Configure();
log4net.Config.XmlConfigurator.Configure();
AzureKeyValueConfiguration.InitializeAzureKeyVaultProvider();
}
Однако я даже не уверен, срабатывает ли этот код, поскольку я не могу заставить его попасть в отладчик.В общем, я немного растерялся и мог бы руководствоваться.
Спасибо