Applies to:Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
この記事では、Azure Key Vault内のカスタマー管理キーを使用して透過的データ暗号化(TDE)を施したデータベースがアクセス不能になった原因となるAzure Key Vaultキーのアクセス問題を識別し解決する方法について説明します。
注記
Microsoft Entra ID は、以前は Azure Active Directory (Azure AD) と呼れていました。
はじめに
Azure Key Vaultでカスタマー マネージド キーを使用するように TDE を構成する場合、データベースはオンラインを維持するために TDE 保護機能への継続的なアクセスを必要とします。 論理 SQL サーバーまたはマネージド インスタンスがAzure Key Vaultのカスタマー マネージド TDE 保護機能にアクセスできなくなった場合、データベースは適切なエラー メッセージを含むすべての接続の拒否を開始し、Azure ポータルでその状態を Inaccessible に変更します。
最初の 30 分間、基になる Azure Key Vault のキー アクセスの問題が解決されると、データベースが自動回復され、自動的にオンラインになります。 断続的で一時的なネットワーク停止のシナリオでは、何も行う必要がなく、データベースが自動的にオンラインになります。 ほとんどの場合、基になるキー コンテナーのキー アクセスの問題を解決するためのアクションを実行する必要があります。
アクセスできないデータベースが不要になった場合は、すぐに削除してコストの発生を停止できます。 Azureキー コンテナー キーへのアクセスを復元し、データベースがオンラインに戻るまで、データベースに対して他のアクションを実行することはできません。 また、カスタマー マネージド キーで暗号化されたデータベースにアクセスできない間は、TDE オプションをカスタマー マネージド キーからサーバー上のサービスマネージド キーに変更することはできません。 この制限により、TDE 保護機能へのアクセス許可が取り消されたときに、未承認のアクセスからデータが保護されます。
データベースに 30 分以上アクセスできなくなったら、自動回復は行われなくなります。 その期間を過ぎて必要なAzureキー コンテナーのキー アクセスを復元する場合は、データベースをオンラインに戻すために、キーへのアクセスを手動で再検証する必要があります。 この状況でデータベースをオンラインに戻す場合は、データベースのサイズによってはかなり時間がかかることがあります。 データベースがオンラインに戻ると、 フェールオーバー グループ、PITR 履歴、タグなどの以前に構成された設定 が失われます。 そのため、アクション グループ を使用して、基になるキー コンテナーのキー アクセスの問題をできるだけ早く警告する通知システムを実装します。
データベースにアクセスできなくなる原因となる一般的なエラー
Key Vaultで TDE を使用するときに発生するほとんどの問題は、次のいずれかの誤った構成が原因で発生します。
キー・ボールトが使用できない、または存在しない
- キー ボールトが誤って削除された。
- ファイアウォールはAzure Key Vault用に構成されていますが、Microsoft サービスへのアクセスは許可されていません。
- 間欠的なネットワークエラーのせいで、キー ボールトが使用できなくなっています。
キー保管庫にアクセスする権限がないか、キーが存在しません
- キーが誤って削除、無効、または期限切れになりました。
- サーバーのマネージド ID (システム割り当てまたはユーザー割り当て) が誤って削除された。
- サーバーが別のサブスクリプションに移動された。 別のサブスクリプションに移動するときに、新しいマネージド ID (システム割り当てまたはユーザー割り当て) をサーバーに割り当てます。
- サーバーのマネージド ID に付与されているキーのアクセス許可が十分ではありません (取得、暗号化、復号化のアクセス許可が含まれていません)。
- サーバーのマネージド ID に対するアクセス許可が、キー コンテナーから取り消された。
一般的なエラーの識別と解決
このセクションでは、最も一般的なエラーのトラブルシューティング手順について説明します。
サーバー ID がない
エラー メッセージ
401 AzureKeyVaultNoServerIdentity - The server identity is not correctly configured on server. Please contact support.
検出
次のコマンドレットかコマンドを使って、サーバーに ID が割り当てられていることを確認します。
- Azure PowerShell: Get-AzSqlServer
- Azure CLI: az-sql-server-show
緩和
次のコマンドレットまたはコマンドを使用して、サーバー用のユーザー割り当てマネージド ID またはシステム割り当てマネージド ID を構成します。
- Azure PowerShell: Set-AzSqlServer
-AssignIdentityオプションを指定します。 - Azure CLI: az sql server update
--assign_identityオプションを使用します。
Azure ポータルで、キー コンテナーに移動し、Access ポリシー に移動します。 以下の手順を実行します。
- [新規追加] ボタンを使用して、前の手順で作成したサーバーの AppId を追加します。
- 次の主要なアクセス許可を割り当てます: Get、Wrap、Unwrap
詳細については、「サーバーに Azure Active Directory (Azure AD) ID を割り当てる」をご覧ください。
重要
Azure SQL DatabaseまたはAzure SQL Managed Instanceのlogical サーバーが、Key VaultでのTDEの最初の構成後に新しいMicrosoft Entraテナントに移動された場合、このマネージド アイデンティティ構成を新しいテナントで再設定する必要があります。
キーボールトがない
エラー メッセージ
503 AzureKeyVaultConnectionFailed - The operation could not be completed on the server because attempts to connect to Azure Key Vault have failed.
検出
キー URI とキー バルトを識別するには:
次のコマンドレットかコマンドを使用して、特定のサーバー インスタンスのキー URI を取得します。
- Azure PowerShell: Get-AzSqlServerKeyVaultKey
- Azure CLI: az-sql-server-tde-key-show
キー URI を使用して、キー保管庫を識別します。
- Azure PowerShell: $MyServerKeyVaultKey変数のプロパティを調べて、キー コンテナーの詳細を取得できます。
- Azure CLI: 返されたサーバー暗号化保護機能で、キー ボールトの詳細を確認します。
緩和
キーボールトが利用可能であることを確認します。
- キー コンテナーが使用可能で、サーバーがアクセス権を持つことを確認します。
- キー コンテナーがファイアウォールの背後にある場合は、Microsoft サービスによるキー コンテナーへのアクセスを許可するチェック ボックスがオンになっていることを確認します。
- キー コンテナーが誤って削除された場合は、最初から構成を完了する必要があります。
キーがない
エラー メッセージ
404 ServerKeyNotFound - The requested server key was not found on the current subscription.
409 ServerKeyDoesNotExists - The server key does not exist.
検出
キー URI とキー バルトを識別するには:
- Missing Key Vault のコマンドレットまたはコマンドを使用して、論理SQL Server インスタンスに追加されたキー URI を識別します。 コマンドを実行すると、キーの一覧が返されます。
緩和
TDE 保護機能がKey Vaultに存在することを確認します。
- キー コンテナーを特定し、Azure ポータルでキー コンテナーに移動します。
- キー URI によって識別されたキーが存在することを確認します。
キーの期限切れ
エラー メッセージ
The server <server_name> requires the Key Vault Crypto Service Encryption User permission for the RBAC policy or following Azure Key Vault permissions: Get, WrapKey, UnwrapKey. Please grant the missing permissions to the service principal with ID <akv_key>. Ensure the key is active, not expired or disabled, set with the key activation date no later than the current date, and that trusted Microsoft services can bypass the firewall if applicable.
検出
キー コンテナーの期限切れキー識別するには:
- Azure ポータルを使用して、Key コンテナー サービス メニュー >Objects>Keys に移動し、キーの有効期限を確認します。
- PowerShell コマンド Get-AzKeyVaultKey を使用します。
- Azure CLI コマンド az keyvault key show を使用します。
緩和
- キーボールトキーの満了日を確認して、キーの期限切れを確認します。
- キーの満了日を延長します。
-
[キーの再検証] オプションを選択し、次のうち 1 つを選択して、データベースをオンラインに戻します。
- 既存のキーを再試行します。
- [バックアップ キー] を選択します。
Azure ポータルでキーを再検証する
Azure ポータルを使用して TDE 保護機能キーを再検証するには:
- Azure ポータルで、SQL サーバーまたは SQL マネージド インスタンス リソースに移動します。
- [ セキュリティ] の下のリソース メニューで、[ 透過的なデータ暗号化] を選択します。
- キー アクセスの問題が原因でデータベースにアクセスできない状態になっている場合、ポータルには TDE ページに キー再有効化 バナーまたはオプションが表示されます。
- [ 既存のキーを再試行 ] を選択して現在のキーでアクセスを再確立するか、[ バックアップ キーの選択 ] を選択してキー コンテナーとは別のキーを構成します。
- 再有効化が成功すると、データベースはアクセス可能な状態に戻ります。 データベースのサイズによっては、このプロセスに時間がかかる場合があります。
ヒント
[透過的なデータ暗号化] ページに [キーの再有効化] オプションが表示されない場合は、基になるキー コンテナーのアクセスの問題が最初に解決されていることを確認します。 再有効化オプションは、サーバーが TDE 保護機能キーにアクセスできないことを検出した場合にのみ表示されます。
詳細については、アクセス不可の TDE プロテクターを参照してください。
注記
キーは、エラーに対処するための十分な時間を確保するために、有効期限よりも指定された日数だけ前にローテーションされる必要があります。 詳細については、Azure Policy のビルトイン定義の Key Vault を参照してください。
アクセス許可がない
エラー メッセージ
401 AzureKeyVaultMissingPermissions - The server is missing required permissions on the Azure Key Vault.
検出
キー URI とキー ボールトを識別するには:
- Missing キー コンテナー内のコマンドレットまたはコマンドを使用して、論理 SQL Server インスタンスが使用するキー コンテナーを特定します。
緩和
サーバーにキー コンテナーへのアクセス許可と、キーにアクセスするための正しいアクセス許可があることを確認します。
- Azure ポータルで、キー コンテナー >Access ポリシーに移動します。 サーバーのマネージド ID (システム割り当てまたはユーザー割り当て) を検索します。
- サーバー ID が存在する場合、次のキー アクセス許可を持っていることを確認します: 取得、キーのラッピング、およびキーの解除。
- サーバーの ID が存在しない場合は、[新規追加] ボタンを使って、それを追加します。
アクティビティ ログから TDE 状態を取得する
Azure Key Vaultキー アクセスの問題によるデータベースの状態の監視を可能にするために、次のイベントは、Azure Resource Manager URL に基づいてリソース ID の Activity Log に記録されます。
注記
キー コンテナーのアクセス問題が発生してから、イベントがアクティビティ ログに表示されるまで、少なくとも 15 分から 30 分かかる場合があります。
サービスがAzure Key Vault キーへのアクセスを失ったときにイベント
Azure SQL Database
EventName: データベースをアクセス不能にする
状態: 開始済み
説明: サーバー {server_name} 上のデータベース {database_name} が Azure Key Vault キーへのアクセスを失い、アクセスできない状態に移行しています。
Azure SQL Managed Instance
イベント名: 管理データベースをアクセス不能にする
状態: 開始済み
説明: マネージド サーバー {server_name} 上のデータベース { database_name} が Azure Key Vault キーへのアクセスを失い、アクセスできない状態に移行しています。
問題が 30 分以内に解決されず、Azure Key Vault のキーアクセスを手動で検証する必要があるイベント
Azure SQL Database
EventName: データベースをアクセス不能にする
状態: 成功
説明: データベースにはアクセスできないので、Azureキー コンテナーエラーを解決し、Revalidate キーを使用してAzureキー コンテナー キーへのアクセスを再確立する必要があります。
Azure SQL Managed Instance
イベント名: 管理データベースをアクセス不能にする
状態: 成功
説明: マネージド サーバー {server_name} 上のデータベース { database_name} にはアクセスできないので、ユーザーは Azure Key Vault Key へのアクセスを再確立する必要があります。
Azure Key Vaultキー アクセスの再検証が成功し、db がオンラインに戻るときにイベントが発生します
Azure SQL Database
イベント名: データベースをアクセス可能にする
状態: 開始済み
説明: Azure Key Vault キーへのアクセスが再確立され、サーバー {server_name} 上のデータベース {database_name} へのアクセスが開始されました。
Azure SQL Managed Instance
イベント名: MakeManagedDatabaseAccessible
状態: 開始済み
説明: Azure Key Vault キーへのアクセスが再確立されました。マネージド サーバー {server_name} 上のデータベース {database_name} にアクセス可能にする操作が開始されました。
データベースが正常にオンラインに戻ったときのイベント
Azure SQL Database
イベント名: データベースをアクセス可能にする
状態: 成功
説明: Azure Key Vault キーへのアクセスが再確立され、サーバー {server_name} 上のデータベース {database_name} がオンラインになりました。
Azure SQL Managed Instance
イベント名: MakeManagedDatabaseAccessible
状態: 成功
説明: Azure Key Vault キーへのアクセスが再確立され、マネージド サーバー {server_name} 上のデータベース {database_name} がオンラインになりました。
Azure Key Vaultキー アクセスの再検証が失敗した時のイベント
Azure SQL Database
イベント名: データベースをアクセス可能にする
状態: 失敗
説明: Azure Key Vault キーへのアクセスが再確立されました。サーバー {server_name} でデータベース {database_name} にアクセスできるようにする操作に失敗しました
Azure SQL Managed Instance
イベント名: MakeManagedDatabaseAccessible
状態: 失敗
説明: Azure Key Vault キーへのアクセスが再確立されました。マネージド サーバー {server_name} でデータベース {database_name} にアクセスできるようにする操作に失敗しました