Proses untuk bekerja dengan penyimpanan kunci khusus yang diamankan kolom Selalu Terenkripsi dari Linux adalah:
- Instal driver SQL Server ODBC 1.10.5+ di Mesin Linux Anda.
- Konfigurasikan sumber data ODBC di
/etc/odbc.ini
yang terhubung ke contoh 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
- Pada mesin Linux ini, buat dua file baru:
$ cd ~/Documents $ touch MyKSP.c KspApp.c
- Copy dan paste kode untuk contoh Penyedia Keystore ke MyKSP.c.
- Copy dan paste kode contoh aplikasi ODBC ke KspApp.c.
- Buka MyKSP.c dan KspApp.c dalam editor teks. Di kedua file, ganti baris ini:
#include "msodbcsql.h"
dengan:
#include <sqlncli.h>
Catatan 32-bit Untuk menggunakan contoh aplikasi ODBC versi 32-bit, kami harus mengubah kode di KspApp.c:- Kami menambahkan fungsi ini:
{ wchar_t c1, c2; do { c1 = *s1++; c2 = *s2++; if (c1 == '\0') return c1 - c2; } while (c1 == c2); return c1 - c2; }
segera setelah baris ini:
static int safe_wcscmp( wchar_t *s1, wchar_t *s2 )
- Kami mengganti panggilan ke
wcscmp
dengansafe_wcscmp
.
- Kami menambahkan fungsi ini:
- Kompilasi kode dan atur izin eksekusi pada pustaka dan aplikasi yang dihasilkan. Misalnya:
$ 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
- Jalankan aplikasi (KspApp), yang menggunakan penyimpanan kunci khusus (MyKSP.so) untuk membuat dan mengisi tabel dengan kolom AlwaysEncrypted, mengambil data yang tidak terenkripsi dan menghapus tabel:
$ ./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...