Согласно моим исследованиям, если мы хотим использовать настройку ColumnEncryptionSetting
, чтобы включить Always Encrypted with. Чистое ядро, мы должны использовать SDK Microsoft.Data.SqlClient
. Более подробную информацию можно найти в блоге и выпуске . Например, Мой код
public static class Function1
{
[FunctionName("Function1")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
string connectionString = @"";
SqlConnectionStringBuilder connStringBuilder = new SqlConnectionStringBuilder(connectionString);
connStringBuilder.ColumnEncryptionSetting = SqlConnectionColumnEncryptionSetting.Enabled;
string str = "";
using (SqlConnection connection = new SqlConnection(connStringBuilder.ConnectionString))
{
connection.Open();
string sql = "select * from dbo.Student";
using (SqlCommand command = new SqlCommand(sql, connection))
{
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
str += reader.GetString(0) + " " + reader.GetString(1) + "\n";
}
}
}
}
return
(ActionResult)new OkObjectResult(str);
}
}
Если при разработке функции вы встретите ошибку Microsoft.Data.SqlClient is not supported on this platform
. Пожалуйста, добавьте следующий скрипт в файл csproj. Для получения более подробной информации, пожалуйста, обратитесь к документу
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="copy $(OutDir)$(ProjectName).deps.json $(OutDir)bin\function.deps.json" />
</Target>
<Target Name="PostPublish" BeforeTargets="Publish">
<Exec Command="copy $(PublishDir)$(ProjectName).deps.json $(PublishDir)bin\function.deps.json" />
<Exec Command="move $(PublishDir)\runtimes $(PublishDir)\bin" />
</Target>
Кроме того, вы также можете использовать драйвер ODBC,Драйвер ODBC поддерживает Always Encrypted. Например,
using (var connection = new OdbcConnection(
"Driver={ODBC Driver 17 for SQL Server};;Server={server name};Trusted_Connection=yes;ColumnEncryption=Enabled;Database={DBname};"))
{
using (var cmd = new OdbcCommand("", connection))
{
connection.Open();
Console.WriteLine("Connected");
Console.WriteLine("SSN: " + Convert.ToString(cmd.ExecuteScalar()));
Console.ReadLine();
connection.Close();
}
}
Более подробная информация приведена в
Использование Always Encrypted of SQL Server из .NET Core 2.1
https://docs.microsoft.com/en-us/sql/connect/odbc/using-always-encrypted-with-the-odbc-driver?view=azuresqldb-current