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列を操作するプロセスは次のとおりです。
- WindowsAzureでAzureKeyVaultを作成します。
- 新しいアプリ登録を作成します。
このプロセス中に、アプリケーションクライアントIDとシークレットを生成します。これらの値は、このチュートリアルの後半でSQLServerODBCドライバーデータソースを構成するときに必要になります。
- 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 );
- テーブルを右クリックします。ポップアップメニューから、列の暗号化を選択します 。
常に暗号化されたウィザードが起動します。
- 列の選択について ページを開き、テーブルを展開して、暗号化する列を選択します。
- 各列の暗号化タイプを選択します。
決定論的 -常に同じ暗号文に暗号化して、同等のルックアップ、結合、およびgroupbyを実行できるようにします。
ランダム化 同じプレーンテキストに対して異なる暗号文値を生成します。これはより安全ですが、操作をサポートしていません。
-
CEK_Auto1 (New)
を選択します 各列の暗号化キーとして、これは新しい自動生成キーです。 次へを選択します 。 - Azure Key Vaultを選択します 、プロンプトが表示されたらAzureアカウントにサインインします。
- リストからAzureKeyVaultを選択します。 次へを選択します 。
- 次へを選択します 。
- 終了を選択します 。
- 閉じるを選択します 。
- LinuxまたはUNIXマシンに、SQLServerODBCドライバーのバージョン1.10.4以降をインストールします。
-
/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.
- 暗号化されていないデータを表示できることをテストします。
/usr/local/easysoft/unixODBC/bin/isql.sh -v SQLSERVER_2016 SQL> select * from EncryptedTable
- データをAlwaysEncrypted列に挿入する場合は、パラメーター化されたINSERTを使用する必要があります。他のAlways Encryptedブログには、これを行う方法を示す例がいくつかあります。