我目前正在使用 .NET 6 开发 API 控制器。
Azure SQL 使用始终加密,但连接到 .NET 时发生错误。
当我纠正错误时,我问你一个问题,因为已经发现了一个不寻常的部分。
下面的代码是第一个发生错误的代码。
var azureKeyVaultProvider = new SqlColumnEncryptionAzureKeyVaultProvider(new DefaultAzureCredential());
var providers = new Dictionary<string, SqlColumnEncryptionKeyStoreProvider>
{
{ SqlColumnEncryptionAzureKeyVaultProvider.ProviderName, azureKeyVaultProvider }
};
SqlConnection.RegisterColumnEncryptionKeyStoreProviders(providers);
按照如下修改后,没有出现错误,正常解密得到数据。
var keyList = new KeyClient(new Uri(kvUrl), new DefaultAzureCredential());
_ = keyList.GetKey("[KeyName]");
var azureKeyVaultProvider = new SqlColumnEncryptionAzureKeyVaultProvider(new DefaultAzureCredential());
var providers = new Dictionary<string, SqlColumnEncryptionKeyStoreProvider>
{
{ SqlColumnEncryptionAzureKeyVaultProvider.ProviderName, azureKeyVaultProvider }
};
SqlConnection.RegisterColumnEncryptionKeyStoreProviders(providers);
重点是获取密钥列表,并在不分配变量的情况下获取加密中使用的密钥,但它们工作得很好。
var keyList = new KeyClient(new Uri(kvUrl), new DefaultAzureCredential());
_ = keyList.GetKey("[KeyName]");
我想知道 DefaultAzureCredit 是否与此相关。