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

LinuxのAzureKeyVaultで保護されたデータの使用

    Microsoftは、データを保護するキーをAzure Key Vaultに保存できるようにすることで、AlwaysEncryptedのセキュリティ機能を強化しました。

    SQL Server ODBCドライバーは、MicrosoftがSQL Server 2016で最初に機能を導入して以来、Always Encrypted列をサポートしています。ドライバーのビルド1.10.4以降、Always Encrypted data / AzureKeyVaultシナリオをサポートするために必要な接続文字列設定を追加しました。 。

    LinuxおよびUNIXのAzureで保護されたAlwaysEncrypted列を操作するプロセスは次のとおりです。

    1. WindowsAzureでAzureKeyVaultを作成します。
    2. 新しいアプリ登録を作成します。

      このプロセス中に、アプリケーションクライアントIDとシークレットを生成します。これらの値は、このチュートリアルの後半でSQLServerODBCドライバーデータソースを構成するときに必要になります。

    3. SQL Server Management Studioで、SQL Server 2016(またはそれ以降)のインスタンスにテストテーブルを作成します。
      CREATE TABLE dbo.EncryptedTable
      (
        ID INT IDENTITY(1,1) PRIMARY KEY, LastName NVARCHAR(32), Salary INT NOT NULL
      );
      
    4. テーブルを右クリックします。ポップアップメニューから、列の暗号化を選択します 。

      常に暗号化されたウィザードが起動します。

    5. 列の選択について ページを開き、テーブルを展開して、暗号化する列を選択します。
    6. 各列の暗号化タイプを選択します。

      決定論的 -常に同じ暗号文に暗号化して、同等のルックアップ、結合、およびgroupbyを実行できるようにします。

      ランダム化 同じプレーンテキストに対して異なる暗号文値を生成します。これはより安全ですが、操作をサポートしていません。

    7. CEK_Auto1 (New)を選択します 各列の暗号化キーとして、これは新しい自動生成キーです。 次へを選択します 。
    8. Azure Key Vaultを選択します 、プロンプトが表示されたらAzureアカウントにサインインします。
    9. リストからAzureKeyVaultを選択します。 次へを選択します 。
    10. 次へを選択します 。
    11. 終了を選択します 。
    12. 閉じるを選択します 。
    13. LinuxまたはUNIXマシンに、SQLServerODBCドライバーのバージョン1.10.4以降をインストールします。
    14. /etc/odbc.iniでODBCデータソースを構成します SQL Serverインスタンスに接続します:
      [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
      KeyStoreAuthentication=KeyVaultClientSecret
      KeyStorePrincipalId=ac9e3f9b-ed5e-4f11-9746-f1d25cc5867c   # Your application client ID
      KeyStoreSecret=wQOFhXY/1yIEUK75j8m/o4IUU7tf3AnVRc3ybO6b3VA # and application secret generated when registering
                                                                 # an App in your Azure portal.
      	    
    15. 暗号化されていないデータを表示できることをテストします。
      /usr/local/easysoft/unixODBC/bin/isql.sh -v SQLSERVER_2016
      SQL>  select * from EncryptedTable
    16. データをAlwaysEncrypted列に挿入する場合は、パラメーター化されたINSERTを使用する必要があります。他のAlways Encryptedブログには、これを行う方法を示す例がいくつかあります。

    1. PHPPDOと通常のmysql_connect

    2. Oracleにシーケンスを含む複数の行を挿入する

    3. PostgreSQLの「INSERTにはターゲット列よりも多くの式があります」を修正しました

    4. PL / SQLにハッシュ関数はありますか?