適用対象:SQL Server
この記事では、拡張キー管理 (EKM) とAzure Key Vaultを使用して、Transparent Data Encryption (TDE) で使用される非対称キーを手動でローテーションする方法について説明します。
Azure Key Vaultで TDE を構成した後、この手順を使用します。 初期セットアップの手順については、「SQL ServerのAzure Key Vaultを使用してTransparent Data Encryptionを設定する」を参照してください。
Important
SQL Serverでは、TDE に使用される非対称キーは自動的には回転しません。 回転は手動操作です。
論理 TDE 保護機能のローテーションはオンライン操作であり、通常は迅速に完了します。これは、SQL Serverデータベース全体ではなく、データベース暗号化キー (DEK) のみを再暗号化するためです。
ローテーション後に以前のキー バージョンを削除しないでください。 古いバックアップ、トランザクション ログ、またはその他の回復成果物を復元するには、以前のバージョンが引き続き必要な場合があります。
Prerequisites
- EKM と TDE の初期セットアップを完了します。
- SQL Serverが現在キー コンテナーにアクセスできることを確認します。
- SQL Serverで資格情報、ログイン、および非対称キーを作成するアクセス許可があることを確認します。
- 認証モデルがまだ有効であることを確認します。
- サービス プリンシパル: アプリの登録とクライアント シークレットが有効です。
- マネージド ID: SQL Serverマネージド ID は引き続き有効であり、必要なキーアクセス許可を持っています。
キーを回転する
認証モデルを選択し、一致する手順に従います。
Azure Key Vaultまたは Managed HSM で、キーをローテーションします。
- 同じキー名の新しいバージョンを作成するか、または
- 新しいキー名を作成します。
SQL Serverで、必要に応じてローテーション操作の資格情報を作成します。
CREATE CREDENTIAL <new_credential_name> WITH IDENTITY = <key_vault_name_or_uri_without_https>, SECRET = '<client_id_without_hyphens><client_secret>' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM;次の非対称キーを作成するセットアップ プリンシパルに資格情報を追加します。
ALTER LOGIN [<domain>\<login>] ADD CREDENTIAL [<new_credential_name>];Azure Key Vaultから新しいSQL Server非対称キーを作成します。
Note
手動ローテーションの場合、SQL Serverでは、バージョンレス キー名とバージョン管理されたキー参照の両方がサポートされます。
- バージョンレス:
<key_name>を使用して、SQL Server Azure Key Vaultで使用可能な最も高いキー バージョンを使用できるようにします。 - バージョン指定:
<key_name>/<version>を使用して、暗号化操作を特定のキーバージョンに固定します。
ローテーションするために別の AKV キー名を作成する必要はありません。 新しいキー バージョンを作成し、バージョンレスまたはバージョン管理されたフォームを参照する新しいSQL Server非対称キーを作成して、キーをローテーションします。
バージョンレス キー名または特定のキー バージョンを使用します。
CREATE ASYMMETRIC KEY <new_ekm_key_name> FROM PROVIDER [AzureKeyVault_EKM] WITH PROVIDER_KEY_NAME = '<key_name_or_key_name/version>', CREATION_DISPOSITION = OPEN_EXISTING;- バージョンレス:
新しい非対称キーから新しいログインを作成します。
CREATE LOGIN <new_login_name> FROM ASYMMETRIC KEY <new_ekm_key_name>;セットアップ ログインから新しい非対称キー ログインに資格情報マッピングを移動します。
ALTER LOGIN [<domain>\<login>] DROP CREDENTIAL [<new_credential_name>]; ALTER LOGIN <new_login_name> ADD CREDENTIAL [<new_credential_name>];新しい非対称キーを使用して、データベース暗号化キー (DEK) を再暗号化します。
USE [<database_name>]; GO ALTER DATABASE ENCRYPTION KEY ENCRYPTION BY SERVER ASYMMETRIC KEY <new_ekm_key_name>;
回転を確認する
データベースの暗号化メタデータを確認します。
SELECT encryptor_type, encryption_state_desc, encryptor_thumbprint FROM sys.dm_database_encryption_keys WHERE database_id = DB_ID('<database_name>');SQL Server の非対称キーのサムプリントを確認する。
SELECT name, algorithm_desc, thumbprint FROM sys.asymmetric_keys WHERE name = '<new_ekm_key_name>';拇印が一致することを確認します。