sql >> Databáze >  >> RDS >> Database

Používání dat chráněných pomocí vlastního úložiště klíčů z Linuxu

Proces práce s vlastním úložištěm klíčů zabezpečenými sloupci Always Encrypted z Linuxu je:

  1. Nainstalujte do počítače se systémem Linux ovladač SQL Server ODBC 1.10.5+.
  2. Nakonfigurujte zdroj dat ODBC v /etc/odbc.ini která se připojuje k instanci 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 tomto počítači se systémem Linux vytvořte dva nové soubory:
    $ cd ~/Documents
    $ touch MyKSP.c KspApp.c
  4. Zkopírujte a vložte kód pro příklad poskytovatele úložiště klíčů do MyKSP.c.
  5. Zkopírujte a vložte kód pro ukázkovou aplikaci ODBC do KspApp.c.
  6. Otevřete MyKSP.c a KspApp.c v textovém editoru. V obou souborech nahraďte tento řádek:
    #include "msodbcsql.h"

    s:

    #include <sqlncli.h>
    32bitová poznámka Abychom mohli použít 32bitovou verzi ukázkové aplikace ODBC, museli jsme změnit kód v KspApp.c:
    1. Přidali jsme tuto funkci:
      {
          wchar_t c1, c2;
      
          do {
              c1 = *s1++;
              c2 = *s2++;
              if (c1 == '\0')
                  return c1 - c2;
              }
          while (c1 == c2);
          return c1 - c2;
      }

      hned za tímto řádkem:

      static int safe_wcscmp( wchar_t *s1, wchar_t *s2 )
    2. Nahradili jsme volání wcscmp pomocí safe_wcscmp .
  7. Zkompilujte kód a nastavte oprávnění ke spuštění pro výslednou knihovnu a aplikaci. Například:
    $ 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. Spusťte aplikaci (KspApp), která používá vlastní úložiště klíčů (MyKSP.so) k vytvoření a naplnění tabulky sloupci AlwaysEncrypted, načte nezašifrovaná data a zruší tabulku:
    $ ./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. ORA-30926:při slučování tabulek nelze získat stabilní sadu řádků ve zdrojových tabulkách

  2. Jak najít záznamy s NULL ve sloupci

  3. Jak používat Coalesce v MySQL

  4. Jak změnit strukturu tabulky v Oracle?