Использование Always Encrypted для SQL Server из .NET Core 2.1

Мне известно, что Microsoft еще не указала никаких планов по поддержке Always Encrypted из Core. Однако это поддерживается классической .NET Framework (начиная с 4.5). Использование Always Encrypted в нашем проекте Core 2.1 ограничено двумя простыми запросами, и мы готовы использовать альтернативные маршруты, кроме перехода на более раннюю версию Core 2.1.

Есть много удаленных способов решения этих проблем, но они включают удаленное взаимодействие (WCF или REST для другого классического .NET) или через Service Fabric Actor (мы использовали это раньше).

Есть ли какой-нибудь чистый внутрипроцессный способ сделать это? Подключение через ODBC, например, для этих двух запросов или что-то в этом роде?

N.B. Мы работаем под Windows.


person Adam    schedule 19.10.2018    source источник


Ответы (1)


Согласно Microsoft Docs последняя версия Драйверы ODBC поддерживают Always Encrypted. Следующий код работает.

using System;
using System.Data.Odbc;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var connection = new OdbcConnection(
                "Driver={ODBC Driver 17 for SQL Server};DSN=SQL2016;Server={SQL2016};Trusted_Connection=yes;ColumnEncryption=Enabled;Database=AndreyTest;"))
            {
                using (var cmd = new OdbcCommand("select SSN from TestTable", connection))
                {
                    connection.Open();
                    Console.WriteLine("Connected");
                    Console.WriteLine("SSN: " + Convert.ToString(cmd.ExecuteScalar()));
                    Console.ReadLine();
                    connection.Close();
                }
            }
        }
    }
}

введите описание изображения здесь

введите описание изображения здесь

Если я удалю «ColumnEncryption = Enabled» из строки подключения, на выходе будет «SSN: System.Byte []», то есть SSN не расшифровывается.

Я надеюсь, это поможет!

person Andrey Nikolov    schedule 02.11.2018
comment
Странно, что об этом никто не догадывается! Я изменил строку подключения на автономную: Driver = {ODBC Driver 13 для SQL Server}; Trusted_Connection = yes; ColumnEncryption = Enabled; Server = localhost; Database = MyDbName; - person Adam; 04.11.2018