マネージド ID を使用して Azure Storage に接続する (Azure AI 検索)
この記事では、接続文字列で資格情報を指定する代わりに、マネージド ID を使用して Azure Storage アカウントへの検索サービス接続を構成する方法を説明します。
システム割り当てマネージド ID またはユーザー割り当てマネージド ID を使用できます。 マネージド ID は Microsoft Entra のログイン ID であり、Azure Storage にアクセスするためにロールの割り当てを必要とします。
前提条件
- マネージド ID を含む、Azure AI 検索の Basic レベル以上。
Note
ストレージがネットワークで保護されており、かつ検索サービスと同じリージョンにある場合は、システム割り当てマネージド ID と、信頼されたサービスとしての接続、またはリソース インスタンス ルールを使用した接続のいずれかのネットワーク オプションを使用する必要があります。
Azure Storage でロールの割り当てを作成する
Azure portal にサインインして、目的のストレージ アカウントを見つけます。
[アクセス制御 (IAM)] を選択します。
[追加] を選択し、[ロールの割り当て] を選択します。
職務権限ロールの一覧から、検索サービスに必要なロールを選択します。
タスク ロール割り当て インデクサーを使用した BLOB インデックス作成 ストレージ BLOB データ閲覧者を追加します インデクサーを使用した ADLS Gen2 インデックス作成 ストレージ BLOB データ閲覧者を追加します インデクサーを使用したテーブル インデックス作成 閲覧者とデータ アクセスを追加します インデクサーを使用したファイル インデックス作成 閲覧者とデータ アクセスを追加します ナレッジ ストアに書き込む オブジェクト プロジェクションとファイル プロジェクションに Storage Blob DataContributor を追加し、テーブル プロジェクションにリーダーとデータ アクセスを追加します。 エンリッチメント キャッシュに書き込む ストレージ BLOB データ共同作成者を追加します デバッグ セッション状態を保存する ストレージ BLOB データ共同作成者を追加します [次へ] を選択します。
[マネージド ID] を選択し、次に [メンバー] を選択します。
システム割り当てのマネージド ID、または、ユーザー割り当てのマネージド ID、でフィルターします。 以前に検索サービス用に作成してあるマネージド ID が表示されます。 これを持っていない場合は、「マネージド ID を使用するように検索を構成する」を参照してください。 既に設定が済んでいてまだ使用できない場合には、数分間待機します。
ID を選択し、ロールの割り当てを保存します。
接続文字列内のマネージド ID を指定する
ロールの割り当てを作成したら、そのロールのもとで動作する Azure Storage への接続を設定できます。
インデクサーでは、外部データ ソースへの接続にデータ ソース オブジェクトを使用します。 このセクションでは、システム割り当てマネージド ID またはユーザー割り当てマネージド ID を、データ ソース接続文字列で指定する方法について説明します。 その他の接続文字列の例については、マネージド ID に関する記事で確認してください。
ヒント
Azure portal でシステムまたはユーザー割り当てマネージド ID を指定して Azure Storage へのデータ ソース接続を作成し、JSON 定義を表示して接続文字列がどのように作成されているかを確認できます。
システム割り当てマネージド ID
システム割り当てマネージド ID を既に構成していることが必要であり、それに、Azure Storage でのロールの割り当てが必要です。
システム割り当てマネージド ID を使用して行われた接続の場合、データ ソース定義に対して、credentials
プロパティの形式を変更するだけで済みます。
アカウント キーもパスワードもない ResourceId
を指定します。 ResourceId
には、ストレージ アカウントのサブスクリプション ID、ストレージ アカウントのリソース グループ、ストレージ アカウント名を含める必要があります。
POST https://[service name].search.windows.net/datasources?api-version=2024-07-01
{
"name" : "blob-datasource",
"type" : "azureblob",
"credentials" : {
"connectionString" : "ResourceId=/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/MY-DEMO-RESOURCE-GROUP/providers/Microsoft.Storage/storageAccounts/MY-DEMO-STORAGE-ACCOUNT/;"
},
"container" : {
"name" : "my-container", "query" : "<optional-virtual-directory-name>"
}
}
ユーザー割り当てマネージド ID
ユーザー割り当てマネージド ID を既に構成し、検索サービスに関連付けている必要があり、その ID には Azure Storage でのロールの割り当てが必要です。
ユーザー割り当てマネージド ID を使用して行われる接続では、システム割り当てマネージド ID と同じ資格情報、およびユーザー割り当てマネージド ID のコレクションを含む追加の ID プロパティを使用します。 データ ソースを作成するとき、ユーザー割り当てマネージド ID を 1 つだけ指定する必要があります。 userAssignedIdentity
をユーザー割り当てマネージド ID に設定します。
アカウント キーもパスワードもない ResourceId
を指定します。 ResourceId
には、ストレージ アカウントのサブスクリプション ID、ストレージ アカウントのリソース グループ、ストレージ アカウント名を含める必要があります。
次の例に示す構文を使用して identity
を指定します。
POST https://[service name].search.windows.net/datasources?api-version=2024-07-01
{
"name" : "blob-datasource",
"type" : "azureblob",
"credentials" : {
"connectionString" : "ResourceId=/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/MY-DEMO-RESOURCE-GROUP/providers/Microsoft.Storage/storageAccounts/MY-DEMO-STORAGE-ACCOUNT/;"
},
"container" : {
"name" : "my-container", "query" : "<optional-virtual-directory-name>"
},
"identity" : {
"@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
"userAssignedIdentity" : "/subscriptions/00000000-0000-0000-0000-00000000/resourcegroups/MY-DEMO-RESOURCE-GROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MY-DEMO-USER-MANAGED-IDENTITY"
}
}
リモート サービスの接続情報とアクセス許可は、インデクサー実行中の実行時に検証されます。 インデクサーが成功した場合、接続構文とロールの割り当ては有効です。 詳細については、「インデクサー、スキル、ドキュメントを実行またはリセットする」を参照してください。
ストレージ アカウントのネットワークで保護されたデータにアクセスする
Azure ストレージ アカウントは、ファイアウォールと仮想ネットワークを利用することでさらにセキュリティを強化できます。 ファイアウォールまたは仮想ネットワークによってセキュリティで保護されているストレージ アカウントのコンテンツのインデックスを作成する場合は、信頼されたサービスとして Azure Storage へのインデクサー接続を行う方法に関するページを参照してください。