現象
マネージド ID でサーバー レベルの資格情報を使用して Azure Storage に対してデータベースのバックアップまたは復元操作を実行したり、Azure Key Vault (AKV) で拡張キー管理 (EKM) を使用したりすると、SQL Server インスタンスが応答しなくなる可能性があります。 この操作は SQL Server 2022 ではサポートされていませんが、現在の T-SQL 構文では可能です。
解決策
この問題は、次の Azure 仮想マシン (VM) 上の SQL Server の累積的な更新プログラムで修正されています。
SQL Server 2022 の累積的な更新プログラム 17
SQL Server 2022 CU17 以降のバージョンでは、Azure Windows のみの VM 上の SQL Server を使用した Microsoft Entra マネージド ID 認証では、Azure Storage へのデータベースのバックアップと復元操作、および AKV を使用した EKM のサーバー レベルの資格情報がサポートされます。
Azure Windows VM 上の SQL Server のデータベースのバックアップまたは復元操作に対するマネージド ID のサポートを有効にするには、次の手順が必要です。
- Azure Windows VM 上の SQL Server のプライマリ マネージド ID を割り当てます。
- BLOB コンテナーで Azure Storage を作成または使用します。
- プライマリ マネージド ID にロールベースのアクセス制御 (RBAC) ロールを割り当てて、Azure Storage にアクセスします。
- Azure Storage URL を資格情報名として使用して、
WITH IDENTITY = 'Managed Identity'句を指定して T-SQL コマンドCREATE CREDENTIAL実行します。 - Azure ストレージ URL を使用して T-SQL コマンド
BACKUP DATABASEまたはRESTORE DATABASEを実行します。
-- Create credential with managed identity and credential name set to
-- URL= https://<storageaccountname>.blob.core.windows.net/<container>
CREATE CREDENTIAL [https://<storageaccountname>.blob.core.windows.net/<container>]
WITH IDENTITY = 'Managed Identity'
-- Backup the database mydb to URL
BACKUP DATABASE mydb
TO URL = 'https://<storageaccount>.blob.core.windows.net/<container>/mydb.bak'
-- Restore the database mydb1 from URL
RESTORE DATABASE mydb1
FROM URL ='https://<storageaccount>.blob.core.windows.net/<container>/mydb.bak'
詳細については、「 マネージド ID を使用した URL のバックアップと復元」を参照してください。
Azure Windows VM 上の SQL Server で AKV を使用して EKM のマネージド ID サポートを有効にするには、次の手順が必要です。
- Azure Windows VM 上の SQL Server のプライマリ マネージド ID を割り当てます。
- キー コンテナーを作成または使用します。
- AKV にアクセスするプライマリ マネージド ID にロールベースのアクセス制御 (RBAC) ロールを割り当てます。
- 最新の SQL Server コネクタ for Microsoft Azure Key Vault (1.0.5.0 (2024 年 11 月) 以降のバージョン) をダウンロードします。 マネージド ID をサポートするには、最新バージョンの SQL Server コネクタが必要です。
- 資格情報名として AKV パスを使用して、
WITH IDENTITY = 'Managed Identity'句を含む T-SQL コマンドCREATE CREDENTIAL実行します。
-- Create credential with managed identity and the credential name for the AKV called 'contoso'
-- with the AKV path = 'contoso.vault.azure.net'
CREATE CREDENTIAL [contoso.vault.azure.net]
WITH IDENTITY = 'Managed Identity'
FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov
- AKV を使用して EKM の残りの T-SQL セットアップを実行します。
詳細については、「Azure Key Vault を使用した拡張キー管理のマネージド ID のサポート」を参照してください。
注
- 既定では無効になっているトレース フラグ 4675 を使用すると、サーバー レベルの資格情報のトラブルシューティングが可能になり、SQL Server インスタンスに割り当てられているプライマリ マネージド ID を確認するために使用できます。
- この機能は Azure SQL Managed Instance に既に存在するため、マネージド ID のサポートでは T-SQL 構文やシステム ビューの変更は導入されません。
- マネージド ID は、オンプレミスの SQL Server のサーバー レベルの資格情報ではサポートされていません。 Azure Storage または AKV を使用した EKM へのバックアップまたは復元で誤って使用した場合、"プライマリ マネージド ID はサーバーに設定されていません。" というエラー メッセージが表示されます。公開ドキュメントも参照されます。
SQL Server 用の累積的な更新プログラムについて
SQL Server 用の新しい累積的な更新プログラムには、以前のビルドであったすべての修正プログラムとセキュリティ修正プログラムが含まれます。 ご使用のバージョンの SQL Server 用の最新ビルドをインストールすることをお勧めします。
SQL Server 2022 の最新の累積的な更新プログラム
状態
Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。