sql >> Database >  >> RDS >> Database

Gegevens gebruiken die zijn beveiligd met een aangepaste sleutelopslag van Linux

Het proces voor het werken met op maat gemaakte sleutelopslag beveiligde Always Encrypted-kolommen van Linux is:

  1. Installeer het SQL Server ODBC-stuurprogramma 1.10.5+ op uw Linux-machine.
  2. Configureer een ODBC-gegevensbron in /etc/odbc.ini die verbinding maakt met een SQL Server 2016+-instantie:
    [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. Maak op deze Linux-machine twee nieuwe bestanden:
    $ cd ~/Documents
    $ touch MyKSP.c KspApp.c
  4. Kopieer en plak de code voor de voorbeeld Keystore Provider in MyKSP.c.
  5. Kopieer en plak de code voor de voorbeeld-ODBC-toepassing in KspApp.c.
  6. Open MyKSP.c en KspApp.c in een teksteditor. Vervang in beide bestanden deze regel:
    #include "msodbcsql.h"

    met:

    #include <sqlncli.h>
    32-bits notitie Om een ​​32-bits versie van een voorbeeld-ODBC-toepassing te gebruiken, moesten we de code in KspApp.c wijzigen:
    1. We hebben deze functie toegevoegd:
      {
          wchar_t c1, c2;
      
          do {
              c1 = *s1++;
              c2 = *s2++;
              if (c1 == '\0')
                  return c1 - c2;
              }
          while (c1 == c2);
          return c1 - c2;
      }

      direct na deze regel:

      static int safe_wcscmp( wchar_t *s1, wchar_t *s2 )
    2. We hebben de oproepen naar wcscmp vervangen met safe_wcscmp .
  7. Compileer de code en stel de uitvoermachtiging in op de resulterende bibliotheek en toepassing. Bijvoorbeeld:
    $ 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. Voer de toepassing (KspApp) uit, die de aangepaste sleutelopslag (MyKSP.so) gebruikt om een ​​tabel te maken en te vullen met AlwaysEncrypted-kolommen, de niet-versleutelde gegevens ophaalt en de tabel verwijdert:
    $ ./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. Oracle-instructie invoegen indien niet bestaat

  2. Hoe INSTR() werkt in MariaDB

  3. SqlTransaction gebruiken in C#

  4. Uitzondering voor het gooien van transacties op dit platform ondersteunt geen gedistribueerde transacties tijdens het openen van het verbindingsobject