適用対象:Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (専用 SQL プールのみ
この記事では、Azure Key Vault から TDE 保護機能を使用してサーバーのキーをローテーションする方法について説明します。 サーバーの論理 TDE 保護機能をローテーションすることは、サーバー上のデータベースを保護する新しいサポートされているキーに切り替えることを意味します。 構成に応じて、TDE プロテクターでは、Azure Key Vault または Azure Key Vault Managed HSM に格納された、サポートされている非対称 (RSA) キーまたは対称 (AES) キーを使用できます。 キー ローテーションはオンラインで行われ、データベース全体ではなくデータべースのデータ暗号化キーを復号化して再暗号化するのみであるため、完了までに数秒しかかかりません。
この記事では、サーバーの TDE 保護機能をローテーションする自動化された方法と手動の方法の両方について説明します。
TDE 保護機能をローテーションするときの重要な考慮事項
TDE 保護機能が変更されても、データベースの古いバックアップが、最新の TDE 保護機能を使用するように更新されることはありません。 Azure Key Vault または Azure Managed HSM から TDE 保護機能を使用して暗号化されたバックアップを復元するには、キー マテリアルがターゲット サーバーで使用できることを確認します。 そのため、データベース のバックアップを復元できるように、古いバージョンの TDE 保護機能をすべて Azure Key Vault または Azure Managed HSM に保持することをお勧めします。
カスタマー マネージド キー (CMK) からサービスマネージド キーに切り替える場合でも、以前に使用したすべてのキーを Azure Key Vault または Azure Managed HSM に保持します。 これにより、バックアップされたログ ファイルを含むデータベース バックアップを、Azure Key Vault または Azure Managed HSM に格納されている TDE 保護機能を使用して復元できるようになります。
古いバックアップとは別に、トランザクション ログ ファイルにも古い TDE 保護機能へのアクセスが必要になる場合があります。 古いキーを必要とする残りのログがあるかどうかを確認するには、キーのローテーションを実行した後、 sys.dm_db_log_info 動的管理ビュー (DMV) を使用します。 この DMV は、トランザクション ログの仮想ログファイル (VLF) と、VLF の暗号化キーの拇印に関する情報を返します。
古い鍵はAzure Key VaultまたはAzure Managed HSMに保管し、データベースのバックアップ保持ポリシーの一部として設定されたバックアップ保持期間に基づいてサーバーに提供してください。 この方法により、サーバー上の長期保存(LTR)バックアップは古いキーを使って復元可能です。
Azure Key Vault または Azure Key Vault Managed HSM に格納されている新しいキーを使用するように構成を切り替えることで、TDE プロテクターをローテーションできます。 Azure SQLオファリングとサポートされている構成に応じて、次のような場合があります。
同じキーの新しいキー バージョンに切り替える
別のキーに切り替える
非対称 (RSA) キーや対称キー (AES) キーなど、サポートされているキーの種類の切り替え
Note
対称キー (AES) を使用したTransparent Data Encryptionは現在、Azure SQL Databaseでのみサポートされており、パブリック プレビュー段階です。 リージョンとサービスのデプロイの状態によっては、この機能が時間の経過と同時に表示される場合があります。
Note
キーのローテーションを行う前に、一時停止されている Azure Synapse Analytics の専用 SQL プールを再開する必要があります。
この記事は、Azure SQL Database、Azure SQL Managed Instance、Azure Synapse Analytics 専用 SQL プール (以前の SQL DW) に適用されます。 Synapse ワークスペース内の専用 SQL プールの Transparent Data Encryption (TDE) に関するドキュメントについては、Azure Synapse Analytics の暗号化に関する記事を参照してください。
前提条件
- この攻略ガイドでは、Azure Key Vault のキーを Azure SQL Database または Azure Synapse Analytics の TDE 保護機能として既に使用していることを前提としています。 BYOK をサポートする Transparent Data Encryption に関する記事をご覧ください。
- Azure PowerShell がインストールされ、実行されている必要があります。
ヒント
推奨ただし省略可能 - まず TDE 保護機能のキー素材をハードウェア セキュリティ モジュール (HSM) またはローカル キー ストアで作成し、そのキー素材を Azure Key Vault にインポートします。 詳細については、 ハードウェア セキュリティ モジュール (HSM) と Azure Key Vault を使用する手順 に従います。
Azure portal に移動します
キーの自動ローテーション
サーバーまたはデータベースの TDE 保護機能を構成するとき、Azure portal から、または以下の PowerShell または Azure CLI コマンドを使用して、TDE 保護機能の自動ローテーションを有効にすることができます。 有効にすると、サーバーまたはデータベースは、TDE 保護機能として使用されているキーの新しいバージョンがないか、キー コンテナーを継続的にチェックします。 新しいバージョンのキーが検出された場合、24 時間以内にサーバー上の TDE 保護機能が自動的に最新のキー バージョンにローテーションされます。
サーバー、データベース、またはマネージド インスタンスの自動ローテーションは、Azure Key Vault の自動キー ローテーションと共に使用して、TDE キーに対してエンドツーエンドのゼロ タッチ ローテーションを有効にすることができます。
Note
自動ローテーションを有効にする前に、サーバーまたはマネージド インスタンスに geo レプリケーションが構成されている場合は、 TDE 保護機能の自動ローテーションを構成する際の geo レプリケーションに関する考慮事項を参照してください。
Azure portal を使用して以下を実行します。
- 既存のサーバーまたはマネージド インスタンスの [Transparent Data Encryption] セクションに移動します。
- [カスタマー マネージド キー] オプションを選択し、TDE 保護機能として使用するキー コンテナーとキーを選択します。
- [Auto-rotate key] (キーの自動ローテーション) チェック ボックスをオンにします。
- 保存を選択します。
データベース レベルでのキーの自動ローテーション
Azure SQL Databaseのデータベースレベルで自動キー回転を有効にすることもできます。 この方法は、サーバー上の1つまたは一部のデータベースのみに対して自動キー回転を有効にしたい場合に有用です。 詳細については、「データベース レベル CMK を使用した TDE の ID とキーの管理」を参照してください。
PowerShell を使用してデータベース レベルで TDE 保護機能の自動ローテーションを有効にするには、次のコマンドを参照してください。
-EncryptionProtectorAutoRotation パラメータを使用し、自動キー ローテーションを有効にするには $true に設定し、自動キー ローテーションを無効にするには $false に設定します。
Set-AzSqlDatabase -ResourceGroupName <resource_group_name> -ServerName <server_name> -DatabaseName <database_name> -EncryptionProtectorAutoRotation:$true
geo レプリケーション構成のキーの自動ローテーション
プライマリ サーバーが、CMK を使って TDE を使用するように設定されている Azure SQL Database geo レプリケーション構成では、セカンダリ サーバーも、プライマリで使用されるものと同じキーを使用して CMK で TDE を有効にするように構成する必要があります。
Azure portal を使用して以下を実行します。
プライマリ サーバーの [Transparent Data Encryption] セクションに移動します。
[カスタマー マネージド キー] オプションを選択し、TDE 保護機能として使用するキー コンテナーとキーを選択します。
[Auto-rotate key] (キーの自動ローテーション) チェック ボックスをオンにします。
保存を選択します。
セカンダリ サーバーの [Transparent Data Encryption] セクションに移動します。
[カスタマー マネージド キー] オプションを選択し、TDE 保護機能として使用するキー コンテナーとキーを選択します。 プライマリ サーバーに使用したものと同じキーを使用します。
[このキーを既定の TDE 保護機能にする] をオフにします。
保存を選択します。
プライマリ サーバーでキーをローテーションすると、セカンダリ サーバーに自動的に転送されます。
Note
プライマリサーバーで同じキーボールトキーをセカンダリサーバーのデフォルトTDEプロテクターと使用している場合は、両方のサーバーで自動回転キーが有効になっていることを確認してください。 この設定を有効にしないと、自動回転ワークフローがエラー状態に入り、手動キー回転操作ができなくなる可能性があります。
各サーバーに異なるキーを使用する
Azure portal で CMK を使用して TDE を構成する場合、異なる Key Vault キーを使用してプライマリ サーバーとセカンダリ サーバーを構成できます。 Azure portal では、プライマリ サーバーを保護するために使用されるキーと、セカンダリ サーバーにレプリケートされたプライマリ データベースを保護するキーが同じであるかどうかは明確に示されません。 ただし、PowerShell、Azure CLI、または REST API を使用して、サーバーで使用されるキーの詳細を取得できます。 これは、自動ローテーションされたキーがプライマリ サーバーからセカンダリ サーバーに転送されることを示します。
PowerShell コマンドを使用して、キーのローテーション後にプライマリ サーバーからセカンダリ サーバーに転送されるキーを確認する例を次に示します。
プライマリ サーバーで次のコマンドを実行して、サーバーのキーの詳細を表示します。
Get-AzSqlServerKeyVaultKey -ServerName <logicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>次のような結果が表示されます。
ResourceGroupName : <SQLDatabaseResourceGroupName> ServerName : <logicalServerName> ServerKeyName : <keyVaultKeyName> Type : AzureKeyVault Uri : https://<keyvaultname>.vault.azure.net/keys/<keyName>/<GUID> Thumbprint : <thumbprint> CreationDate : 12/13/2022 8:56:32 PM同じ
Get-AzSqlServerKeyVaultKeyコマンドをセカンダリ サーバーで実行します。Get-AzSqlServerKeyVaultKey -ServerName <logicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>セカンダリ サーバーに、プライマリ サーバーとは異なるキーを使用する既定の TDE 保護機能がある場合は、2 つ (以上) のキーが表示されます。 最初のキーは既定の TDE 保護機能であり、2 番目のキーは、プライマリ サーバーで使用され、レプリケートされたデータベースの保護に使用されるキーです。
プライマリ サーバーでキーをローテーションすると、セカンダリ サーバーに自動的に転送されます。 プライマリ サーバーで
Get-AzSqlServerKeyVaultKeyをもう一度実行すると、2 つのキーが表示されます。 最初のキーは元のキーで、2 番目のキーは、キーのローテーションの一部として生成された現在のキーです。セカンダリ サーバーで
Get-AzSqlServerKeyVaultKeyコマンドを実行すると、プライマリ サーバーに存在するものと同じキーも表示されます。 これにより、プライマリ サーバー上のローテーションされたキーが自動的にセカンダリ サーバーに転送され、データベース レプリカの保護に使用されることを確認できます。
手動でのキーのローテーション
手動でのキーの交換では、次のコマンドを使用して新しいキーを追加します。このキーは、新しいキー名で、場合によっては別の Key Vault に存在する可能性があります。 このアプローチを使用する場合は、別のキー コンテナーに同じキーを追加し、高可用性と geo dr シナリオをサポートすることがサポートされます。 Azure portal を使用して手動キー ローテーションを行うこともできます。
手動キー ローテーションでは、キー コンテナーで新しいキー バージョンが生成された場合 (手動またはキー コンテナーの自動キー ローテーション ポリシーを使用して)、サーバーの TDE 保護機能と同じ設定を手動で行う必要があります。
Note
キー コンテナー名とキー名を組み合わせた長さは 94 文字以下である必要があります。
Azure portal を使用して以下を実行します。
- 既存のサーバーまたはマネージド インスタンスの [Transparent Data Encryption] メニューに移動します。
- [カスタマー マネージド キー] オプションを選択し、新しい TDE 保護機能として使用するキー コンテナーとキーを選択します。
- 保存を選択します。
TDE 保護機能モードを切り替える
TDE 保護機能を Microsoft による管理から BYOK モードに切り替えるには、Azure portal を使用します。
- 既存のサーバーまたはマネージド インスタンスの [Transparent Data Encryption] メニューに移動します。
- [カスタマー マネージド キー] オプションを選択します。
- TDE 保護機能として使用するキー コンテナーとキーを選択します。
- 保存を選択します。
関連するコンテンツ
セキュリティ上のリスクが発生した場合、侵害された可能性のある TDE 保護機能を削除する方法については、侵害された可能性のあるキーの削除に関するページを参照してください。
Azure Key Vault の統合と TDE の Bring Your Own Key サポートの概要: PowerShell を使用して Azure Key Vault の独自のキーを使用して TDE を有効にします。