SQL Server の構成
SQL Server の構成
TDE に DuoKey EKM プロバイダーを使用するように Microsoft SQL Server をセットアップする
概要
このガイドでは、Transparent Data Encryption(TDE)に DuoKey EKM プロバイダーを使用するように Microsoft SQL Server を構成する方法を説明します。構成は 2 つの部分から成ります。ホスト上でのプロバイダー接続ファイルの 1 回限りのセットアップと、EKM を有効にし、プロバイダーを登録し、資格情報を作成し、マスターキーを開く SQL の手順です。
プロバイダー構成ファイル
SQL を実行する前に、インストール時に C:\ProgramData\DKE\EKM\ に配置した config.toml を完成させます。このファイルには、プロバイダーが DuoKey プラットフォームに到達するために使用する接続設定が格納されています。
# DuoKey endpoint
server_url = "https://<cockpit-host>"
# Tenant and application identifiers from your SQL EKM App
tenant_id = "<tenant-id>"
app_id = "<app-id>"
# Agent key used by the provider to authenticate (single value)
agent_key = "<agent-key>"
# Optional: mutual TLS
# client_cert_path = "C:\\ProgramData\\DKE\\EKM\\client.pem"
# client_key_path = "C:\\ProgramData\\DKE\\EKM\\client.key"config.toml と並んで、プロバイダーは同じフォルダーに keystore.json を維持します。これは SQL の非対称キーを DuoKey のキーにマッピングし、TDE で保護されたデータベースが SQL Server サービスの再起動後に自動的に再度開かれるようにします。データベースが暗号化されている間は削除しないでください。
前提条件
- DuoKey プラットフォームで SQL EKM アプリが作成されていること
- EKM プロバイダーライブラリと config.toml がホストに配置されていること
- SQL EKM アプリのエージェントキー
- SQL Server Management Studio(SSMS)がインストールされていること
- SQL Server の Sysadmin 権限
構成手順
EKM プロバイダーサポートを有効にする
まず、SQL Server で Extensible Key Management を有効にします。SSMS を開いて次を実行します。
-- Enable advanced options
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
-- Enable EKM provider
sp_configure 'EKM provider enabled', 1;
GO
RECONFIGURE;
GOこの手順は SQL Server インスタンスごとに 1 回だけ必要です。
暗号プロバイダーを作成する
配置したフォルダーから DuoKey EKM プロバイダーライブラリを登録します。
CREATE CRYPTOGRAPHIC PROVIDER DkeEkm
FROM FILE = 'C:\Program Files\DKE\EKM\dke_ekm_provider.dll';
GOライブラリは、このマシンで信頼されているチェーンでコード署名されている必要があります。署名が信頼されていない場合、このコマンドは失敗し、SQL Server はプロバイダーを読み込みません。署名の検証についてはインストールガイドを参照してください。
プロバイダー資格情報を作成する
プロバイダーが DuoKey に認証するために使用するエージェントキーを保持する資格情報を作成します。
CREATE CREDENTIAL DkeEkmCredential
WITH IDENTITY = 'DuoKey EKM',
SECRET = '<agent-key>'
FOR CRYPTOGRAPHIC PROVIDER DkeEkm;
GO| パラメーター | 説明 |
|---|---|
IDENTITY | 資格情報の自由記述ラベル。プラットフォームに対して検証されることはありません。 |
SECRET | SQL EKM アプリの唯一のエージェントキー値。 |
SECRET は 1 つの値、すなわちエージェントキーです。組み合わせるべき Client ID、Client Secret、パスワードはなく、従うべき区切り文字フォーマットもありません。
資格情報をログインにマッピングする
暗号化されたデータベースを管理するログインに資格情報をマッピングします。
ALTER LOGIN [sa]
ADD CREDENTIAL DkeEkmCredential;
GOTDE を管理するログイン、通常は sysadmin アカウントを使用します。
TDE マスターキーを開く
TDE マスターキーは DuoKey 内に存在します。ローカルで新しいキーを生成するのではなく、SQL Server からそのキーへの参照を開きます。
既存の非対称キーを開く
USE master;
CREATE ASYMMETRIC KEY TDE_Master
FROM PROVIDER DkeEkm
WITH PROVIDER_KEY_NAME = 'TDE_MASTER',
CREATION_DISPOSITION = OPEN_EXISTING;
GO| パラメーター | 説明 |
|---|---|
PROVIDER_KEY_NAME | DuoKey プラットフォーム内のキーの名前。 |
CREATION_DISPOSITION | OPEN_EXISTING は DuoKey に既にプロビジョニングされているキーを参照します。 |
CREATION_DISPOSITION = OPEN_EXISTING を使用し、WITH ALGORITHM は指定しないでください。マスターキーは DuoKey にプロビジョニングされており、SQL Server はそのハンドルを開くだけです。
非対称キーからログインを作成する
マスターキーに裏付けられたログインを作成し、プロバイダー資格情報をマッピングします。これは、TDE がキーに到達するために使用するエンジンログインです。
USE master;
CREATE LOGIN TDE_Master_Login
FROM ASYMMETRIC KEY TDE_Master;
GO
ALTER LOGIN TDE_Master_Login
ADD CREDENTIAL DkeEkmCredential;
GO検証
次のクエリで構成を検証します。
SELECT
name,
guid,
is_enabled
FROM sys.cryptographic_providers;
GOSELECT
name,
credential_identity
FROM sys.credentials
WHERE name = 'DkeEkmCredential';
GOUSE master;
SELECT
ak.name AS KeyName,
ak.algorithm_desc,
cp.name AS ProviderName,
cp.is_enabled
FROM sys.asymmetric_keys ak
INNER JOIN sys.cryptographic_providers cp
ON ak.cryptographic_provider_guid = cp.guid
WHERE ak.name = 'TDE_Master';
GO結合がプロバイダーの有効な行を返す場合、SQL Server は DuoKey を通じてマスターキーを正常に開いており、データベースで TDE を有効にする準備が整っています。
ベストプラクティス
セキュリティ
- EKM 資格情報へのアクセスを sysadmin に限定する
- config.toml を厳格なフォルダー ACL で保護する
- SQL Server の監査を有効にする
- 定期的なエージェントキーローテーションを計画する
パフォーマンス
- DuoKey への安定したネットワークを確保する
- キー操作のレイテンシを監視する
- ホストのクロックを同期させておく
メンテナンス
- すべての構成を文書化する
- 災害復旧を定期的にテストする
- データベースが暗号化されている間は keystore.json を保持する