データベース レベル CMK を使用した TDE の ID とキーの管理

適用対象: Azure SQL データベース

Note

  • データベース レベルの TDE CMK が Azure SQL Database (すべての SQL Database エディション) で使用できます。 Azure SQL Managed Instance、SQL Server オンプレミス、Azure VM、Azure Synapse Analytics (専用 SQL プール (旧称 SQL DW)) では使用できません。
  • 同じガイドを適用して、フェデレーション クライアント ID パラメーターを除外することで、同じテナントでデータベース レベルのカスタマー マネージド キーを構成できます。 データベース レベルのカスタマー マネージド キーの詳細については、「データベース レベルのカスタマー マネージド キーを使用した Transparent Data Encryption (TDE)」を参照してください。

このガイドでは、データベース レベルの Transparent Data Encryption (TDE) とカスタマー マネージド キー (CMK) を使用して Azure SQL Database を作成、更新、取得するステップについて説明します。Azure Key Vault へのアクセスにはユーザー割り当てマネージド ID を使用します。 Azure Key Vault は、Azure SQL Database とは異なる Microsoft Entra テナントにあります。 詳しくは、「Transparent Data Encryption でのクロステナント カスタマー マネージド キー」をご覧ください。

Note

Microsoft Entra ID の、旧称は Azure Active Directory(Azure AD)です。

前提条件

1 つ目のテナントで必要なリソース

このチュートリアルでは、1 つ目のテナントは独立系ソフトウェア ベンダー (ISV) に属し、2 つ目のテナントはクライアントのものであると仮定します。 このシナリオについて詳しくは、「Transparent Data Encryption でのクロステナント カスタマー マネージド キー」をご覧ください。

テナント間 CMK を使って Azure SQL Database 用に TDE を構成する前に、アプリケーションのフェデレーション ID 資格情報として割り当てられたユーザー割り当てマネージド ID を使って構成されたマルチテナント Microsoft Entra アプリケーションを用意する必要があります。 前提条件のガイドのいずれかに従って行います。

  1. Azure SQL Database を作成する 1 つ目のテナントで、マルチテナント Microsoft Entra アプリケーションを作成して構成します。

  2. ユーザー割り当てマネージド ID を作成する」の手順を使用して、ユーザー割り当てマネージド ID を作成します。

  3. マルチテナント アプリケーションのフェデレーション ID 資格情報として、ユーザー割り当てマネージド ID を構成します。

  4. アプリケーション名とアプリケーション ID を記録しておきます。 これは、Azure portal>[Microsoft Entra ID]>[エンタープライズ アプリケーション] で作成されたアプリケーションを検索することで確認できます。

2 つ目のテナントで必要なリソース

Note

Azure AD および MSOnline PowerShell モジュールは、2024 年 3 月 30 日の時点で非推奨となります。 詳細については、 非推奨の最新情報を参照してください。 この日以降、これらのモジュールのサポートは、Microsoft Graph PowerShell SDK への移行支援とセキュリティ修正プログラムに限定されます。 非推奨になるモジュールは、2025 年 3 月 30 日まで引き続き機能します。

Microsoft Entra ID (旧称 Azure AD) を使用するには、 Microsoft Graph PowerShell に移行することをお勧めします。 移行に関する一般的な質問については、「移行に関する FAQ」を参照してください。 注: バージョン 1.0.x の MSOnline では、2024 年 6 月 30 日以降に中断が発生する可能性があります。

  1. Azure Key Vault が存在する 2 つ目のテナントでは、1 つ目のテナントの登録済みアプリケーションのアプリケーション ID を使ってサービス プリンシパル (アプリケーション) を作成します。 マルチテナント アプリケーションを登録する方法の例をいくつか次に示します。 <TenantID><ApplicationID> をそれぞれ、Microsoft Entra ID のクライアント テナント ID と、マルチテナント アプリケーションのアプリケーション ID に置き換えます。

    • PowerShell:

      Connect-AzureAD -TenantID <TenantID>
      New-AzADServicePrincipal  -ApplicationId <ApplicationID>
      
    • Azure CLI:

      az login --tenant <TenantID>
      az ad sp create --id <ApplicationID>
      
  2. Azure portal>[Microsoft Entra ID]>[エンタープライズ アプリケーション] に移動し、作成したアプリケーションを検索します。

  3. Azure Key Vault を持っていなければ作成し、キーを作成します。

  4. アクセス ポリシーを作成または設定します

    1. アクセス ポリシーを作成するときに、[キーのアクセス許可][キーの取得、キーの折り返し、キーの折り返し解除] のアクセス許可を選択します。
    2. アクセス ポリシーを作成するときに、最初のステップで作成したマルチテナント アプリケーションを [プリンシパル] オプションで選択します。

    Azure portal でのキー コンテナーのアクセス ポリシー メニューのスクリーンショット。

  5. アクセス ポリシーとキーが作成されたら、Key Vault からキーを取得して、キー識別子を記録します。

データベース レベルのカスタマー マネージド キーを使用して新しい Azure SQL Database を作成する

ユーザー割り当てマネージド ID を使用して Azure SQL Database にデータベースを作成する例と、データベース レベルでテナント間カスタマー マネージド キーを設定する方法を次に示します。 ユーザー割り当てマネージド ID は、データベース作成フェーズの間に Transparent Data Encryption 用にカスタマー マネージド キーを設定するために必要です。

  1. Azure portal の [SQL デプロイ オプションの選択] ページを参照します。

  2. まだ Azure portal にサインインしていない場合は、求められたらサインインします。

  3. [SQL データベース] で、 [リソースの種類][単一データベース] に設定し、 [作成] を選択します。

  4. [SQL データベースの作成] フォームの [基本] タブにある [プロジェクトの詳細] で、データベースの Azure [サブスクリプション][リソース グループ][サーバー] を選びます。 次に、[データベース名] に一意の名前を指定します。 Azure SQL Database 用の論理サーバーを作成していない場合は、「TDE とテナント間カスタマー マネージド キー (CMK) を使用して構成されたサーバーを作成する」をご覧ください。

  5. [セキュリティ] タブに移動したら、[Transparent Data Encryption を構成する] を選びます。

    Azure SQL Database を作成するときの Azure portal と [セキュリティ] メニューのスクリーンショット。

  6. [Transparent Data Encryption ] のメニューで、[Database level customer managed key (CMK)] (データベース レベルのカスタマー マネージド キー) を選びます。

    Azure portal の [Transparent Data Encryption] メニューのスクリーンショット。

  7. [User-Assigned Managed Identity] (ユーザー割り当てマネージド ID) では、[Configure] (構成) を選択して[Database identity] (データベース ID) を有効にし、[Identity] (ID) メニューの一覧に目的の ID がない場合はユーザー割り当てマネージド ID をリソースに [Add] (追加) で設定します。 次に、[適用] を選択します。

    Azure portal の [ID] メニューのスクリーンショット。

    Note

    TDE 用のテナント間 CMK を構成している場合は、ここで [フェデレーション クライアント ID] を構成できます。

  8. [Transparent Data Encryption] のメニューで、[Change key] (鍵変更) を選びます。 TDE に使用するカスタマー マネージド キーの目的のサブスクリプションキー コンテナーキーバージョンを選択します。 [選択] ボタンを選択します。 キーを選んだら、必要に応じて、[Transparent Data Encryption] メニューで Azure Key Vault の URI (オブジェクト識別子) を使ってデータベース キーを追加することもできます。

    [Transparent data encryption] (透過的なデータ暗号化) メニューの [Auto-rotate key] (キーの自動ローテーション) チェック ボックスを使用して、データベース レベルでキーの[Automatic key rotation (自動ローテーション)] を有効にすることもできます。

    Azure portal の [Transparent Data Encryption] メニューでキーの追加を参照しているスクリーンショット。

  9. [適用] を選んで、データベースの作成を続けます。

  10. ページの下部にある [確認と作成] を選択します

  11. [確認と作成] ページで、確認後、 [作成] を選択します。

Note

ユーザー割り当てマネージド ID でキー コンテナーに対する適切なアクセス許可が有効になっていない場合、データベースの作成は失敗します。 ユーザー割り当てマネージド ID には、キー コンテナーに対する "Get、wrapKey、unwrapKey" のアクセス許可が必要です。 詳しくは、「カスタマー マネージド キーを使用した Transparent Data Encryption 用のマネージド ID」をご覧ください。

データベース レベルのカスタマー マネージド キーを使用して既存の Azure SQL Database を更新する

ユーザー割り当てマネージド ID を使用して Azure SQL Database の既存のデータベースを更新する例と、データベース レベルでテナント間カスタマー マネージド キーを設定する方法を次に示します。 ユーザー割り当てマネージド ID は、データベース作成フェーズの間に Transparent Data Encryption 用にカスタマー マネージド キーを設定するために必要です。

  1. Azure portal で、データベース レベルのカスタマー マネージド キーで更新する SQL データベース リソースに移動します。

  2. [セキュリティ][ID] を選択します。 このデータベースにユーザー割り当てマネージド ID を追加して、[保存] を選びます

  3. 次に、データベースの [セキュリティ] の下にある [データ暗号化] メニューに移動します。 [データベース レベルのカスタマー マネージド キー] を選びます。 最後のステップで ID を構成したので、データベースの [データベース ID] は既に [有効] になっているはずです。

  4. [キーの変更] を選びます。 TDE に使用するカスタマー マネージド キーの目的のサブスクリプションキー コンテナーキーバージョンを選択します。 [選択] ボタンを選択します。 キーを選んだら、必要に応じて、[Data Encryption] メニューで オブジェクト識別子 を使ってデータベース キーを追加することもできます。

    データベース レベルでキーの自動ローテーションを有効にする場合は、[キーの自動ローテーション] チェック ボックスを選択します。

    既存のデータベースを更新するときの、Azure portal の [Transparent Data Encryption] メニューのスクリーンショット。

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

Azure SQL Database のデータベース レベルのカスタマー マネージド キー設定を表示する

次に、データベースのデータベース レベルのカスタマー マネージド キーを取得する例を示します。 ARM リソース Microsoft.Sql/servers/databases には、既定では、データベースで構成された TDE 保護機能とマネージド ID のみが表示されます。 キーの完全なリストを展開するには、-ExpandKeyList パラメーターを使用します。 さらに、-KeysFilter "current" や特定の時点の値 (たとえば 2023-01-01) などのフィルターを使用して、現在使用されているキーと過去の特定の時点で使用されたキーを取得できます。 これらのフィルターは、個々のデータベース クエリでのみサポートされ、サーバー レベルのクエリではサポートされません。

Azure portal でデータベース レベルのカスタマー マネージド キーを表示するには、SQL データベース リソースの [データ暗号化] メニューに移動します。

論理サーバー内のすべてのキーを一覧表示する

サーバーの下の各データベースで使用されるすべてのキー (単なるプライマリ保護機能ではない) のリストをフェッチするには、キー フィルターを使用して個別にクエリを実行する必要があります。 論理サーバーの下の各キーを一覧表示する PowerShell クエリの例を次に示します。

Get-AzSqlDatabase コマンドレットを使用します。

$dbs = Get-AzSqlDatabase -resourceGroupName <ResourceGroupName> -ServerName <ServerName>
foreach ($db in $dbs)
{
Get-AzSqlDatabase -DatabaseName $db.DatabaseName -ServerName $db.ServerName -ResourceGroupName $db.ResourceGroupName -ExpandKeyList
}

Azure SQL Database のデータベース レベルのカスタマー マネージド キーを再検証する

CMK を使用した Transparent Data Encryption (TDE) に関する記事で説明されているように、TDE 保護機能にアクセスできない場合は、キー アクセスを修正した後、キーの再検証操作を使ってデータベースにアクセスできるようにすることができます。 例については、以下の手順またはコマンドをご覧ください。

Azure portal を使って、SQL データベース リソースを見つけます。 SQL データベース リソースを選んだら、[セキュリティ] 設定の下にある [データ暗号化] メニューの [Transparent Data Encryption] タブに移動します。 データベースが Azure Key Vault にアクセスできなくなった場合は、[キーの再検証] ボタンが表示され、[既存のキーの再試行] を選んで既存のキーを再検証するか、[バックアップ キーの選択] を選んで別のキーを再検証することができます。

Azure SQL Database のデータベース レベルのカスタマー マネージド キーを元に戻す

次のコマンドを使用してサーバーにサービス マネージド キーが構成されている場合、データベース レベルの CMK が構成されたデータベースをサーバー レベルの暗号化に戻すことができます。

Azure portal でデータベース レベルのカスタマー マネージド キーの設定をサーバー レベルの暗号化キーに戻すには、[Data Encryption (データ暗号化)] メニューの [Transparent Data Encryption] タブに移動します。 [Server level encryption key] (サーバー レベルの暗号化キー) を選び、[保存] を選んで設定を保存します。

Note

個々のデータベースに対して [Server level encryption key] (サーバー レベルの暗号化キー) の設定を使うには、Azure SQL Database の論理サーバーが TDE にサービス マネージド キーを使うように構成されている必要があります。

次のステップ

さまざまなデータベース レベルの CMK 操作に関する次のドキュメントを確認してください。