SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Server IaaS Agent の Key Vault 統合について

leave a comment

Azure の仮想マシンで動作している、SQL Server には、SQL Server IaaS Agent 拡張機能 (Microsoft SQL Server IaaS Agent サービス) をインストールすることで、以下のような機能を使用することができます。

  • 自動修正
  • 自動バックアップ
  • Azure Key Vault の統合

image
自動修正 / 自動バックアップについては、ARM の仮想マシンに SQL Server IaaS Agent を導入してみる の内容となりますが、今回の内容は Azure VM で SQL Server 用に Azure Key Vault 統合を構成する (リソース マネージャー) となります。
この内容だけだと少し理解が難しかったので、軽くまとめてみたいと思います。

Key Vault 統合の機能ですが、Azure Key Vault を使用した SQL Server の暗号化バックアップの取得 / Azure Key Vault を使用する拡張キー管理 (SQL Server) の内容の一部を保管してくれるものとなります。
インストール時に指定する内容としては以下になります。

  • Key Vault の URL? : 事前に作成しておいた Key Vault の URL (https://~.vault.azure.net)
  • プリンシパル名 : AAD のアプリケーションのクライアント ID
  • サービスプリンシパルのシークレット : AAD のアプリケーションのキー
  • 資格情報名 : SQL Server に作成する、Key Vault 用の資格情報

SQL Server と Key Vault を連携させるためには、

  1. Key Vault の作成
  2. Azure AD のアプリケーションとのマッピング
  3. SQL Server コネクタのインストール
  4. EKM プロバイダーの登録
  5. Key Vault を使用するための資格情報の登録
  6. Key Vault への証明書の登録

というような内容が必要となりますが、Key Vault 統合は、「3」~「5」を実施するものになります。
設定した内容を元に、Azure Key Vault 用の EKM プロバイダーを使用した、Key Vault 用の資格情報が作成されるのですが、実際に使用する場合にはこれ以外の作業も必要となります。
image
必要な作業としては、証明書を作成し、PFX ファイルをエクスポートします。

$eku = "2.5.29.37={text}1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2"
$expirydate = (Get-Date).AddYears(50)
$subject = "Azure Management Cert"
New-SelfSignedCertificate -Subject $subject -NotAfter $expirydate -TextExtension $eku

作成した PFX を Key Vault に登録します。

# 証明書の登録
$securepfxpwd = ConvertTo-SecureString -String '<パスワード>' -AsPlainText -Force
Add-AzureKeyVaultKey -VaultName '<Key Vault 名>' -Name '<Key 名>' -KeyFilePath 'C:\temp\KeyVault.pfx' -KeyFilePassword $securepfxpwd

 
Key Vault に証明書の登録が終わったらアクセスポリシーを設定します。
How To: Use the Azure Key Vault to Manage the Key for a TDE enabled Database
https://blogs.technet.microsoft.com/dataplatform/2016/07/13/how-to-use-the-azure-key-vault-to-manage-the-key-for-a-tde-enabled-database/
によると、キーの登録については、アクセスポリシーとして create をつけているため、「CREATION_DISPOSITION = CREATE_NEW」で「CREATE ASYMMETRIC KEY」を実行することで、キーの作成と登録を同時に実行できるみたいですね。

Set-AzureRmKeyVaultAccessPolicy -VaultName '<Key Vault 名>' -ServicePrincipalName "<AAD のアプリケーションのクライアント ID>" -PermissionsToKeys  get,list,wrapKey,unwrapKey,create

 
これで Key Vault 側の設定は終わりです。
あとは、SQL Server 側で設定を行います。今回は KeyVaultCred という内容で、インストール時の資格情報名を設定した状態としています。

ALTER LOGIN [<ホスト名>\<管理者アカウント>] ADD CREDENTIAL [KeyVaultCred]
GO
CREATE ASYMMETRIC KEY SQLSERVER_ENCRYPTION_KEY
FROM PROVIDER [AzureKeyVault_EKM_Prov]
WITH PROVIDER_KEY_NAME = '<Key Vault キー名>,
CREATION_DISPOSITION = OPEN_EXISTING;
GO
ALTER LOGIN [<ホスト名>\<管理者アカウント>] DROP CREDENTIAL [KeyVaultCred]
GO
CREATE LOGIN TDE_Login
FROM ASYMMETRIC KEY SQLSERVER_ENCRYPTION_KEY;
GO
ALTER LOGIN TDE_Login
ADD CREDENTIAL KeyVaultCred;
GO

これで、TDE / 暗号化バックアップ / 列レベルの暗号化のキーとして、Key Vault の証明書を使用することができるようになります。

Share

Written by Masayuki.Ozawa

4月 9th, 2016 at 10:12 pm

Leave a Reply