Proces práce s vlastním úložištěm klíčů zabezpečenými sloupci Always Encrypted z Linuxu je:
- Nainstalujte do počítače se systémem Linux ovladač SQL Server ODBC 1.10.5+.
- Nakonfigurujte zdroj dat ODBC v
/etc/odbc.ini
která se připojuje k instanci SQL Server 2016+:[SQLSERVER_2016] Driver=Easysoft ODBC-SQL Server SSL Server=machine\sqlserver_instance Database=database_with_always_encrypted_data User=user # This can be a Windows or SQL Server login. Password=password Trusted_Connection=Yes # Set this to No for a SQL Server login ColumnEncryption=Enabled
- Na tomto počítači se systémem Linux vytvořte dva nové soubory:
$ cd ~/Documents $ touch MyKSP.c KspApp.c
- Zkopírujte a vložte kód pro příklad poskytovatele úložiště klíčů do MyKSP.c.
- Zkopírujte a vložte kód pro ukázkovou aplikaci ODBC do KspApp.c.
- Otevřete MyKSP.c a KspApp.c v textovém editoru. V obou souborech nahraďte tento řádek:
#include "msodbcsql.h"
s:
#include <sqlncli.h>
32bitová poznámka Abychom mohli použít 32bitovou verzi ukázkové aplikace ODBC, museli jsme změnit kód v KspApp.c:- Přidali jsme tuto funkci:
{ wchar_t c1, c2; do { c1 = *s1++; c2 = *s2++; if (c1 == '\0') return c1 - c2; } while (c1 == c2); return c1 - c2; }
hned za tímto řádkem:
static int safe_wcscmp( wchar_t *s1, wchar_t *s2 )
- Nahradili jsme volání
wcscmp
pomocísafe_wcscmp
.
- Přidali jsme tuto funkci:
- Zkompilujte kód a nastavte oprávnění ke spuštění pro výslednou knihovnu a aplikaci. Například:
$ gcc -I/usr/local/easysoft/unixODBC/include -I/usr/local/easysoft/sqlserver/include \ -fshort-wchar -fPIC -o MyKSP.so -shared 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
- Spusťte aplikaci (KspApp), která používá vlastní úložiště klíčů (MyKSP.so) k vytvoření a naplnění tabulky sloupci AlwaysEncrypted, načte nezašifrovaná data a zruší tabulku:
$ ./KspApp DSN=SQLSERVER_2016 Press Enter to continue... KSP Decrypt() function called (keypath=Retrieved data: c1=1 c2=Sample data 0 for column 2 Retrieved data: c1=12 c2=Sample data 1 for column 2
- Prior to cleaning up the sample data, we used
isql
to confirm that, for an application that does not have access to the custom key vault, the data is encrypted. We turned off ColumnEncryption for this application, because unless is done the SQL Server ODBC driver will attempt to decrypt the data with a local key store, which will not work:/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" SQL> select top 1 c2 from CustomKSPTestTable +----+ | c2 | +----+ | 0104590D628739293CD8D455BD43EC59...