sql >> Database teknologi >  >> RDS >> Database

Brug af data beskyttet med en brugerdefineret nøglebutik fra Linux

Processen for at arbejde med brugerdefinerede nøglelager sikrede Altid krypterede kolonner fra Linux er:

  1. Installer SQL Server ODBC-driveren 1.10.5+ på din Linux-maskine.
  2. Konfigurer en ODBC-datakilde i /etc/odbc.ini der opretter forbindelse til en SQL Server 2016+ forekomst:
    [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. Opret to nye filer på denne Linux-maskine:
    $ cd ~/Documents
    $ touch MyKSP.c KspApp.c
  4. Kopiér og indsæt koden for eksemplet Keystore Provider i MyKSP.c.
  5. Kopiér og indsæt koden for ODBC-applikationen i KspApp.c.
  6. Åbn MyKSP.c og KspApp.c i en teksteditor. I begge filer skal du erstatte denne linje:
    #include "msodbcsql.h"

    med:

    #include <sqlncli.h>
    32-bit note For at bruge en 32-bit version af eksempel ODBC-applikation, var vi nødt til at ændre koden i KspApp.c:
    1. Vi tilføjede denne funktion:
      {
          wchar_t c1, c2;
      
          do {
              c1 = *s1++;
              c2 = *s2++;
              if (c1 == '\0')
                  return c1 - c2;
              }
          while (c1 == c2);
          return c1 - c2;
      }

      umiddelbart efter denne linje:

      static int safe_wcscmp( wchar_t *s1, wchar_t *s2 )
    2. Vi erstattede opkald til wcscmp med safe_wcscmp .
  7. Kompilér koden og indstil udførelsestilladelsen på det resulterende bibliotek og applikation. For eksempel:
    $ 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. Kør applikationen (KspApp), som bruger det tilpassede nøglelager (MyKSP.so) til at oprette og udfylde en tabel med AlwaysEncrypted-kolonner, henter de ukrypterede data og dropper tabellen:
    $ ./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. Hvordan opretter man en ny database med hstore-udvidelsen allerede installeret?

  2. SQL Server database backup gendannelse på lavere version

  3. 5 ting at vide om 'Windows 10 S'

  4. Sådan løses ORA-00900