Der Prozess zum Arbeiten mit benutzerdefinierten Keystore-gesicherten Always Encrypted-Spalten von Linux ist:
- Installieren Sie den SQL Server ODBC-Treiber 1.10.5+ auf Ihrem Linux-Rechner.
- Konfigurieren Sie eine ODBC-Datenquelle in
/etc/odbc.ini
die eine Verbindung zu einer Instanz von SQL Server 2016+ herstellt:[SQLSERVER_2016]Driver=Easysoft ODBC-SQL Server SSL Server=machine\sqlserver_instanceDatabase=database_with_always_encrypted_dataUser=user # Dies kann eine Windows- oder SQL Server-Anmeldung sein.Password=passwordTrusted_Connection=Yes # Setzen Sie dies auf No für eine SQL Server-Anmeldung
- Erstellen Sie auf diesem Linux-Rechner zwei neue Dateien:
$ cd ~/Documents$ touch MyKSP.c KspApp.c
- Kopieren Sie den Code für den Keystore-Beispielanbieter und fügen Sie ihn in MyKSP.c ein.
- Kopieren Sie den Code für die ODBC-Beispielanwendung und fügen Sie ihn in KspApp.c ein.
- Öffnen Sie MyKSP.c und KspApp.c in einem Texteditor. Ersetzen Sie in beiden Dateien diese Zeile:
#include "msodbcsql.h"
mit:
#include
32-Bit-Hinweis Um eine 32-Bit-Version der ODBC-Beispielanwendung zu verwenden, mussten wir den Code in KspApp.c ändern:- Wir haben diese Funktion hinzugefügt:
{ wchar_t c1, c2; tun { c1 =* s1 ++; c2 =*s2++; if (c1 =='\0') c1 - c2 zurückgeben; } während (c1 ==c2); gib c1 - c2 zurück;
unmittelbar nach dieser Zeile:
statisch int safe_wcscmp( wchar_t *s1, wchar_t *s2 )
- Wir haben Aufrufe an
wcscmp
ersetzt mitsafe_wcscmp
.
- Wir haben diese Funktion hinzugefügt:
- Kompilieren Sie den Code und legen Sie die Ausführungsberechtigung für die resultierende Bibliothek und Anwendung fest. Zum Beispiel:
$ 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
- Führen Sie die Anwendung (KspApp) aus, die den benutzerdefinierten Schlüsselspeicher (MyKSP.so) verwendet, um eine Tabelle mit AlwaysEncrypted-Spalten zu erstellen und zu füllen, die unverschlüsselten Daten abzurufen und die Tabelle zu löschen:
$ ./KspApp DSN=SQLSERVER_2016Press Enter um fortzufahren...KSP Decrypt() Funktion aufgerufen (keypath=Abgerufene Daten:c1=1 c2=Beispieldaten 0 für Spalte 2Abgerufene Daten:c1=12 c2=Beispieldaten 1 für Spalte 2
- Vor der Bereinigung der Beispieldaten haben wir
isql
verwendet um zu bestätigen, dass die Daten für eine Anwendung, die keinen Zugriff auf den benutzerdefinierten Schlüsseltresor hat, verschlüsselt sind. Wir haben ColumnEncryption für diese Anwendung deaktiviert, da der SQL Server-ODBC-Treiber, wenn dies nicht geschehen ist, versucht, die Daten mit einem lokalen Schlüsselspeicher zu entschlüsseln, was nicht funktioniert:/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...