Database
 sql >> Baza danych >  >> RDS >> Database

Korzystanie z danych chronionych za pomocą niestandardowego magazynu kluczy z systemu Linux

Proces pracy z kolumnami Always Encrypted z niestandardowym magazynem kluczy z systemu Linux jest następujący:

  1. Zainstaluj sterownik ODBC SQL Server 1.10.5+ na swoim komputerze z systemem Linux.
  2. Skonfiguruj źródło danych ODBC w /etc/odbc.ini który łączy się z instancją 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
  3. Na tym komputerze z systemem Linux utwórz dwa nowe pliki:
    $ cd ~/Documents
    $ touch MyKSP.c KspApp.c
  4. Skopiuj i wklej kod przykładowego dostawcy kluczy do MyKSP.c.
  5. Skopiuj i wklej kod przykładowej aplikacji ODBC do KspApp.c.
  6. Otwórz MyKSP.c i KspApp.c w edytorze tekstu. W obu plikach zastąp ten wiersz:
    #include "msodbcsql.h"

    z:

    #include <sqlncli.h>
    Uwaga 32-bitowa Aby użyć 32-bitowej wersji przykładowej aplikacji ODBC, musieliśmy zmienić kod w KspApp.c:
    1. Dodaliśmy tę funkcję:
      {
          wchar_t c1, c2;
      
          do {
              c1 = *s1++;
              c2 = *s2++;
              if (c1 == '\0')
                  return c1 - c2;
              }
          while (c1 == c2);
          return c1 - c2;
      }

      zaraz po tej linii:

      static int safe_wcscmp( wchar_t *s1, wchar_t *s2 )
    2. Zamieniliśmy wywołania do wcscmp z safe_wcscmp .
  7. Skompiluj kod i ustaw uprawnienia do wykonywania wynikowej biblioteki i aplikacji. Na przykład:
    $ 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
  8. Uruchom aplikację (KspApp), która używa niestandardowego magazynu kluczy (MyKSP.so) do tworzenia i wypełniania tabeli kolumnami AlwaysEncrypted, pobiera niezaszyfrowane dane i usuwa 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
    	
  9. 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...

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Automatyczne zarządzanie indeksami w bazie danych Azure SQL

  2. Łagodzenie fragmentacji indeksu

  3. MuleSoft wykorzystuje GraphQL w celu zaawansowanej integracji API

  4. Szybka wskazówka – przyspiesz powolne przywracanie z dziennika transakcji

  5. Jak zaktualizować kolumnę na podstawie filtra innej kolumny?