Процесът за работа с персонализирано хранилище за ключове, защитени винаги шифровани колони от Linux е:
- Инсталирайте ODBC драйвера на SQL Server 1.10.5+ на вашата Linux машина.
- Конфигурирайте източник на ODBC данни в
/etc/odbc.ini
който се свързва към екземпляр на SQL Server 2016+:[SQLSERVER_2016]Driver=Easysoft ODBC-SQL Server SSL Server=machine\sqlserver_instanceDatabase=database_with_always_encrypted_dataUser=user # Това може да бъде вход в Windows или SQL Server.Password=passwordTrusted_Connection=Yes # Задайте това на Не за вход в SQL ServerColumnEncryption>=Enabled
- На тази Linux машина създайте два нови файла:
$ cd ~/Documents$ докоснете MyKSP.c KspApp.c
- Копирайте и поставете кода за примерния доставчик на Keystore в MyKSP.c.
- Копирайте и поставете кода за примерното ODBC приложение в KspApp.c.
- Отворете MyKSP.c и KspApp.c в текстов редактор. И в двата файла заменете този ред:
#include "msodbcsql.h"
с:
#include
32-битова бележка За да използваме 32-битова версия на примерното ODBC приложение, трябваше да променим кода в KspApp.c:- Добавихме тази функция:
{ wchar_t c1, c2; do { c1 =*s1++; c2 =*s2++; if (c1 =='\0') върне c1 - c2; } докато (c1 ==c2); връщане c1 - c2;}
веднага след този ред:
static int safe_wcscmp( wchar_t *s1, wchar_t *s2 )
- Заменихме извикванията към
wcscmp
сsafe_wcscmp
.
- Добавихме тази функция:
- Компилирайте кода и задайте разрешение за изпълнение на получената библиотека и приложение. Например:
$ gcc -I/usr/local/easysoft/unixODBC/include -I/usr/local/easysoft/sqlserver/include \ -fshort-wchar -fPIC -o MyKSP.so -споделен MyKSP.c$ gcc -I/usr/local/easysoft/unixODBC/include -I/usr/local/easysoft/sqlserver/include \ -fshort-wchar -fPIC -o KspApp -fshort-wchar \ KspApp.c -lodbc -L/usr/ local/easysoft/unixODBC/lib/ \ -L/usr/lib/x86_64-linux-gnu/libdl.so -ldl$ chmod +x MyKSP.so KspApp
- Стартирайте приложението (KspApp), което използва персонализираното хранилище за ключове (MyKSP.so), за да създаде и попълни таблица с колони AlwaysEncrypted, извлича нешифрованите данни и пуска таблицата:
$ ./KspApp DSN=SQLSERVER_2016Press Въведете, за да продължите... Функцията KSP Decrypt() се извиква (keypath=Извлечени данни:c1=1 c2=Примерни данни 0 за колона 2Извлечени данни:c1=12 c2=Примерни данни 1 за колона 2
- Преди да изчистим примерните данни, използвахме
isql
за да потвърдите, че за приложение, което няма достъп до хранилището с персонализирани ключове, данните са криптирани. Изключихме ColumnEncryption за това приложение, защото освен ако не бъде направено, драйверът на SQL Server ODBC ще се опита да декриптира данните с локално хранилище за ключове, което няма да работи:/usr/local/easysoft/unixODBC/bin/isql - v -k "DRIVER={Easysoft ODBC-SQL Server SSL};Server=machine\sqlserver_instance; UID=user;PWD=password;Database=database_with_always_encrypted_data;ColumnEncryption=No"PT1-cT2+ изберете потребителски-SQL-+ отгоре | c2 |+----+| 0104590D628739293CD8D455BD43EC59...