sql >> データベース >  >> RDS >> Database

Linuxのカスタムキーストアで保護されたデータの使用

    Linuxのカスタムキーストアで保護されたAlwaysEncrypted列を操作するプロセスは次のとおりです。

    1. LinuxマシンにSQLServerODBCドライバー1.10.5以降をインストールします。
    2. /etc/odbc.iniでODBCデータソースを構成します 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. このLinuxマシンで、次の2つの新しいファイルを作成します。
      $ cd ~/Documents
      $ touch MyKSP.c KspApp.c
    4. サンプルのキーストアプロバイダーのコードをコピーしてMyKSP.cに貼り付けます。
    5. サンプルODBCアプリケーションのコードをコピーしてKspApp.cに貼り付けます。
    6. テキストエディタでMyKSP.cとKspApp.cを開きます。両方のファイルで、次の行を置き換えます:
      #include "msodbcsql.h"

      と:

      #include <sqlncli.h>
      32ビットノート サンプルODBCアプリケーションの32ビットバージョンを使用するには、KspApp.cのコードを変更する必要がありました。
      1. 次の関数を追加しました:
        {
            wchar_t c1, c2;
        
            do {
                c1 = *s1++;
                c2 = *s2++;
                if (c1 == '\0')
                    return c1 - c2;
                }
            while (c1 == c2);
            return c1 - c2;
        }

        この行の直後:

        static int safe_wcscmp( wchar_t *s1, wchar_t *s2 )
      2. wcscmpへの呼び出しを置き換えました safe_wcscmpを使用 。
    7. コードをコンパイルし、結果のライブラリとアプリケーションに実行権限を設定します。例:
      $ 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. アプリケーション(KspApp)を実行します。このアプリケーションは、カスタムキーストア(MyKSP.so)を使用して、AlwaysEncrypted列をテーブルに作成して入力し、暗号化されていないデータを取得して、テーブルを削除します。
      $ ./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. プロアクティブなSQLServerヘルスチェック、パート3:インスタンスとデータベースの設定

    2. Lighty for Oracle

    3. OracleのGREATEST()関数

    4. MySQLUpdate内部結合テーブルクエリ