sql >> Databasteknik >  >> RDS >> Database

Använder dataskyddad med ett anpassat nyckellager från Linux

Processen för att arbeta med anpassade nyckellager säkrade Alltid krypterade kolumner från Linux är:

  1. Installera SQL Server ODBC-drivrutinen 1.10.5+ på din Linux-maskin.
  2. Konfigurera en ODBC-datakälla i /etc/odbc.ini som ansluter till en SQL Server 2016+-instans:
    [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. Skapa två nya filer på den här Linux-maskinen:
    $ cd ~/Documents
    $ touch MyKSP.c KspApp.c
  4. Kopiera och klistra in koden för exemplet Keystore Provider i MyKSP.c.
  5. Kopiera och klistra in koden för ODBC-applikationen i KspApp.c.
  6. Öppna MyKSP.c och KspApp.c i en textredigerare. Ersätt denna rad i båda filerna:
    #include "msodbcsql.h"

    med:

    #include <sqlncli.h>
    32-bitars anmärkning För att använda en 32-bitarsversion av exempel på ODBC-applikationen var vi tvungna att ändra koden i KspApp.c:
    1. Vi har lagt till den här funktionen:
      {
          wchar_t c1, c2;
      
          do {
              c1 = *s1++;
              c2 = *s2++;
              if (c1 == '\0')
                  return c1 - c2;
              }
          while (c1 == c2);
          return c1 - c2;
      }

      omedelbart efter denna rad:

      static int safe_wcscmp( wchar_t *s1, wchar_t *s2 )
    2. Vi ersatte anrop till wcscmp med safe_wcscmp .
  7. Kompilera koden och ställ in exekveringsbehörigheten för det resulterande biblioteket och programmet. Till exempel:
    $ 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 programmet (KspApp), som använder det anpassade nyckellagret (MyKSP.so) för att skapa och fylla i en tabell med AlwaysEncrypted-kolumner, hämtar okrypterad data och släpper 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. Hur kan jag importera en .sql-fil till min Heroku postgres-databas?

  2. Databasen uppdateras inte automatiskt med MySQL och Python

  3. Förklaring av JSONB introducerad av PostgreSQL

  4. Hur använder man COUNT i SQL?