Transparent Data Encryption (TDE) 保護機能をローテーションする

適用対象: Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics (専用の SQL プールのみ)

この記事では、Azure Key Vault から TDE 保護機能を使用してサーバーのキーをローテーションする方法について説明します。 サーバーの論理的な TDE 保護機能のローテーションは、サーバー上のデータベースを保護する新しい非対称キーに切り替えることを示します。 キー ローテーションはオンラインで行われ、データベース全体ではなくデータべースのデータ暗号化キーを復号化して再暗号化するのみであるため、完了までに数秒しかかかりません。

この記事では、サーバーの TDE 保護機能をローテーションする自動化された方法と手動の方法の両方について説明します。

TDE 保護機能をローテーションするときの重要な考慮事項

  • TDE 保護機能が変更されても、データベースの古いバックアップが、最新の TDE 保護機能を使用するように更新されることはありません。 Key Vault の TDE 保護機能で暗号化されたバックアップを復元するには、キー マテリアルがターゲット サーバーで使用できることを確認します。 そのため、データベースのバックアップを復元できるように、Azure Key Vault (AKV) の TDE 保護機能の古いバージョンをすべてキー コンテナーに保持しておくことをお勧めします。
  • カスタマー マネージド キー (CMK) からサービス マネージド キーに切り替える場合でも、以前に使用したすべてのキーを AKV で保持します。 これにより、AKV に格納された TDE 保護機能を使用してデータベースのバックアップを復元できます。
  • 古いバックアップとは別に、トランザクション ログ ファイルにも古い TDE 保護機能へのアクセスが必要になる場合があります。 古いキーを必要とする残りのログがあるかどうかを確認するには、キーのローテーションを実行した後、 sys.dm_db_log_info 動的管理ビュー (DMV) を使用します。 この DMV は、トランザクション ログの仮想ログファイル (VLF) と、VLF の暗号化キーの拇印に関する情報を返します。
  • 古いキーは AKV で保持する必要があります。また、データベースのバックアップ保有期間ポリシーのバックとして構成されているバックアップ保有期間に基づいて、サーバーで使用できるようにする必要があります。 これにより、古いキーを使用して、サーバー上の長期保存 (LTR) バックアップを復元することができます。

注意

キーのローテーションを行う前に、一時停止されている 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) と Key Vault の使用手順をご覧ください。

Azure portal に移動します

キーの自動ローテーション

TDE 保護機能の自動ローテーションは、Azure portal から、または以下の PowerShell または Azure CLI コマンドを使用して、サーバーまたはデータベースの TDE 保護機能を構成するときに有効にできます。 有効にすると、サーバーまたはデータベースは、TDE 保護機能として使用されているキーの新しいバージョンがないか、キー コンテナーを継続的にチェックします。 新しいバージョンのキーが検出された場合、サーバーまたはデータベース上の TDE 保護機能が24 時間以内に最新のキー バージョンに自動的にローテーションされます。

サーバー、データベース、またはマネージド インスタンスの自動ローテーションは、Azure Key Vault の自動キー ローテーションと共に使用して、TDE キーに対してエンドツーエンドのゼロ タッチ ローテーションを有効にすることができます。

Note

サーバーまたはマネージド インスタンスに geo レプリケーションが構成されている場合は、自動ローテーションを有効にする前に、ここで説明するように追加のガイドラインに従う必要があります。

Azure portal を使用して以下を実行します。

  1. 既存のサーバーまたはマネージド インスタンスの [Transparent Data Encryption] セクションに移動します。
  2. [カスタマー マネージド キー] オプションを選択し、TDE 保護機能として使用するキー コンテナーとキーを選択します。
  3. [Auto-rotate key] (キーの自動ローテーション) チェック ボックスをオンにします。
  4. [保存] を選択します。

Transparent Data Encryption のキーの自動ローテーション構成のスクリーンショット。

データベース レベルでのキーの自動ローテーション

キーの自動ローテーションは、Azure SQL Database のデータベース レベルで有効にすることもできます。 これは、サーバー上のデータベースの 1 つまたは一部に対してのみキーの自動ローテーションを有効にする場合に便利です。 詳細については、「データベース レベル CMK を使用した TDE の ID とキーの管理」を参照してください。

データベース レベルでのキーの自動ローテーションの設定に関する Azure portal の情報については、「データベース レベルのカスタマー マネージド キーを使用して既存の Azure SQL Database を更新する」を参照してください。

geo レプリケーション構成のキーの自動ローテーション

プライマリ サーバーが、CMK を使って TDE を使用するように設定されている Azure SQL Database geo レプリケーション構成では、セカンダリ サーバーも、プライマリで使用されるものと同じキーを使用して CMK で TDE を有効にするように構成する必要があります。

Azure portal を使用して以下を実行します。

  1. プライマリ サーバーの [Transparent Data Encryption] セクションに移動します。

  2. [カスタマー マネージド キー] オプションを選択し、TDE 保護機能として使用するキー コンテナーとキーを選択します。

  3. [Auto-rotate key] (キーの自動ローテーション) チェック ボックスをオンにします。

  4. [保存] を選択します。

    プライマリ サーバー上の geo レプリケーション シナリオでの Transparent Data Encryption のキーの自動ローテーション構成のスクリーンショット。

  5. セカンダリ サーバーの [Transparent Data Encryption] セクションに移動します。

  6. [カスタマー マネージド キー] オプションを選択し、TDE 保護機能として使用するキー コンテナーとキーを選択します。 プライマリ サーバーに使用したものと同じキーを使用します。

  7. [このキーを既定の TDE 保護機能にする] をオフにします。

  8. [保存] を選択します。

    セカンダリ サーバー上の geo レプリケーション シナリオでの Transparent Data Encryption のキーの自動ローテーション構成のスクリーンショット。

プライマリ サーバーでキーをローテーションすると、セカンダリ サーバーに自動的に転送されます。

各サーバーに異なるキーを使用する

Azure portal で CMK を使用して TDE を構成する場合、異なる Key Vault キーを使用してプライマリ サーバーとセカンダリ サーバーを構成できます。 Azure portal では、プライマリ サーバーを保護するために使用されるキーと、セカンダリ サーバーにレプリケートされたプライマリ データベースを保護するキーが同じであるかどうかは明確に示されません。 ただし、PowerShell、Azure CLI、または REST API を使用して、サーバーで使用されるキーに関する詳細を取得できます。 これは、自動ローテーションされたキーがプライマリ サーバーからセカンダリ サーバーに転送されることを示します。

PowerShell コマンドを使用して、キーのローテーション後にプライマリ サーバーからセカンダリ サーバーに転送されるキーを確認する例を次に示します。

  1. プライマリ サーバーで次のコマンドを実行して、サーバーのキーの詳細を表示します。

    Get-AzSqlServerKeyVaultKey -ServerName <logicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName> 
    
  2. 次のような結果が表示されます。

    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
    
  3. 同じ Get-AzSqlServerKeyVaultKey コマンドをセカンダリ サーバーで実行します。

    Get-AzSqlServerKeyVaultKey -ServerName <logicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName> 
    
  4. セカンダリ サーバーに、プライマリ サーバーとは異なるキーを使用する既定の TDE 保護機能がある場合は、2 つ (以上) のキーが表示されます。 最初のキーは既定の TDE 保護機能であり、2 番目のキーは、プライマリ サーバーで使用され、レプリケートされたデータベースの保護に使用されるキーです。

  5. プライマリ サーバーでキーをローテーションすると、セカンダリ サーバーに自動的に転送されます。 プライマリ サーバーで Get-AzSqlServerKeyVaultKey をもう一度実行すると、2 つのキーが表示されます。 最初のキーは元のキーで、2 番目のキーは、キーのローテーションの一部として生成された現在のキーです。

  6. セカンダリ サーバーで Get-AzSqlServerKeyVaultKey コマンドを実行すると、プライマリ サーバーに存在するものと同じキーも表示されます。 これにより、プライマリ サーバー上のローテーションされたキーが自動的にセカンダリ サーバーに転送され、データベース レプリカの保護に使用されることを確認できます。

手動でのキーのローテーション

手動でのキーの交換では、次のコマンドを使用して新しいキーを追加します。このキーは、新しいキー名で、場合によっては別の Key Vault に存在する可能性があります。 このアプローチを使用する場合は、別のキー コンテナーに同じキーを追加し、高可用性と geo dr シナリオをサポートすることがサポートされます。 Azure portal を使用して手動キー ローテーションを行うこともできます。

手動キー ローテーションでは、キー コンテナーで新しいキー バージョンが生成された場合 (手動またはキー コンテナーの自動キー ローテーション ポリシーを使用して)、サーバーの TDE 保護機能と同じ設定を手動で行う必要があります。

Note

キー コンテナー名とキー名を組み合わせた長さは 94 文字以下である必要があります。

Azure portal の使用:

  1. 既存のサーバーまたはマネージド インスタンスの [Transparent Data Encryption] メニューに移動します。
  2. [カスタマー マネージド キー] オプションを選択し、新しい TDE 保護機能として使用するキー コンテナーとキーを選択します。
  3. [保存] を選択します。

Transparent Data Encryption のキーの手動ローテーション構成のスクリーンショット。

TDE 保護機能モードを切り替える

TDE 保護機能を Microsoft による管理から BYOK モードに切り替えるには、Azure portal を使用します。

  1. 既存のサーバーまたはマネージド インスタンスの [Transparent Data Encryption] メニューに移動します。
  2. [カスタマー マネージド キー] オプションを選択します。
  3. TDE 保護機能として使用するキー コンテナーとキーを選択します。
  4. [保存] を選択します。