メモ
Azure AI 検索は、Azure ポータル、REST API、およびAzure SDKから使用できます。 また、Foundry IQ は、エンタープライズ コンテンツを、Microsoft Foundry ポータルのエージェントの再利用可能なアクセス許可に対応したナレッジ ベースに変換するマネージド ナレッジ レイヤーです。
Important
機能、またはマークされたプロパティ (プレビュー) は、サービス レベル アグリーメントの対象ではなく、運用環境のワークロードには推奨されず、一般公開される前に変更または制約される可能性があります。 Azure AI 検索 プレビューの用語は、スタンドアロンでも一般公開されている機能の一部でも、すべてのプレビュー機能に適用されます。
Azure Storageでは、BLOB ストレージ内のコンテナーに対するロールベースのアクセスが許可されます。この場合、
- 2025-05-01-preview 以降では、 BLOB インデクサーを使用して RBAC スコープのメタデータを取り込むことができます。
- 2025-11-01-preview 以降では、Azure Storageの Blob ナレッジ ソースに同等のサポートが提供されます。
RBAC スコープはコンテナー レベルで設定され、アクセス許可の継承を通じてすべての BLOB (ドキュメント) にフローされます。 RBAC スコープは、インデックス作成中にアクセス許可メタデータとしてキャプチャされます。 プッシュ API を使用して、コンテンツとアクセス許可のメタデータを手動でアップロードおよびインデックス付けできます ( プッシュ REST API を使用したインデックス作成のアクセス許可を参照)、またはインデクサーまたはナレッジ ソースを使用してデータ インジェストを自動化できます。 この記事では、インデックス作成の自動化に重点を置いています。
クエリ時に、呼び出し元の ID は、 x-ms-query-source-authorization パラメーターを使用して要求ヘッダーに含まれます。 ユーザーが検索結果を表示する場合、ID はドキュメントのアクセス許可メタデータと一致する必要があります。
この記事では、この基盤に基づいて構築されたインデックス作成の自動化アプローチについて説明します。
ロールベースのアクセス制御 (Azure RBAC) を使用してセキュリティで保護された Azure Storage の BLOB。 属性ベースのアクセス制御 (ABAC Azure) はサポートされません。
Azure BLOB インデクサーまたはアクセス許可フィルターを含むデータとメタデータを取得して取り込むBlob ナレッジ ソース。 アクセス許可フィルターのサポートを取得するには、最新のプレビュー REST API または機能をサポートするAzure SDKのプレビュー パッケージを使用します。
取り込まれたドキュメントと対応するアクセス許可を含むAzure AI 検索内のインデックス。 アクセス許可メタデータは、インデックスのフィールドとして格納されます。
アクセス許可フィルターを使用するクエリ。 アクセス許可フィルターを尊重するクエリを設定するには、最新のプレビュー REST API または機能をサポートするAzure SDKのプレビュー パッケージを使用します。
前提 条件
Microsoft Entra ID認証と承認。 サービスとアプリは、同じテナント内にある必要があります。 すべてのテナントがMicrosoft Entra IDされている限り、ユーザーは異なるテナントに存在できます。 認証された接続ごとにロールの割り当てが使用されます。
Azure AI 検索、どのリージョンでも、マネージド ID のサポートに対して課金対象レベル (Basic 以上) が必要です。 検索サービスは 、ロールベースのアクセス用に構成する 必要があり、 マネージド ID (システムまたはユーザー) を持っている必要があります。
RBAC で保護されたコンテナーまたは BLOB を使用する、Azure Storage、Standard パフォーマンス (汎用 v2)、ホット、クール、コールド アクセス層。
インデクサーとナレッジ ソースのしくみと、インデックスを作成する方法を理解する必要があります。 この記事では、データ ソースとインデクサーの構成設定について説明しますが、インデックスを作成する手順については説明しません。 アクセス許可フィルター用に設計されたインデックスの詳細については、「アクセス許可フィルター フィールドを使用してインデックスを作成する」を参照してください。
制限事項
Azure ポータルでは、この機能はサポートされていません。
次のインデクサー機能では、ADLS Gen2 から生成されたインデックス付きドキュメントでのアクセス許可の継承はサポートされていません。 スキルセットまたはインデクサーでこれらの機能のいずれかを使用する場合、ドキュメント レベルのアクセス許可はインデックス付きコンテンツに含まれません。
Blob Storageの構成
BLOB コンテナーでロールベースのアクセスが使用されていることを確認します。
Azure ポータルにサインインし、ストレージ アカウントを見つけます。
コンテナーを展開し、インデックスを作成する BLOB を含むコンテナーを選択します。
Access Control (IAM) を選択してロールの割り当てを確認します。 ストレージ BLOB データ 閲覧者またはストレージ BLOB データ共同作成者を持つユーザーとグループは、コンテナーのインデックス作成後にインデックス内のドキュメントを検索するアクセス権を持ちます。
認証
インデクサーを実行するには、検索サービス ID に ストレージ BLOB データ 閲覧者 アクセス許可が必要です。 詳細については、「マネージド ID を使用してAzure Storageに接続するを参照してください。
Azure AI 検索の構成
検索サービスには次のものが必要であることを思い出してください。
認証
インデクサーを実行するには、API 呼び出しを発行するクライアントに、オブジェクトを作成するための Search Service Contributor 権限が必要です。 Search Index Data Contributor データインポートを実行するアクセス許可、およびインデックスのクエリを実行するインデックス データ 閲覧者ロールを使用してAzure AI 検索に接続するを参照してください。
ナレッジ ソースを構成する
ナレッジ ソースを使用している場合は、ナレッジ ソースの定義を使用して、完全なインデックス作成パイプライン (インデクサー、データ ソース、インデックス) を生成します。 RBAC スコープが検出され、生成されたインデックスに自動的に含まれます。 インデックス付きコンテンツでアクセス許可の継承が必要な場合は、生成されたオブジェクトを変更する必要はありません。
このシナリオで機能する構成に関する重要なポイントは次のとおりです。
-
isADLSGen2は false に設定されています。これは、データ ソースがAzure Blob Storageされていることを意味します。 -
ingestionPermissionOptionsはrbacScopeを指定します。
# Create / Update Azure Blob Knowledge Source
###
PUT {{url}}/knowledgesources/azure-blob-ks?api-version=2026-08-01-preview
api-key: {{key}}
Content-Type: application/json
{
"name": "azure-blob-ks",
"kind": "azureBlob",
"description": "A sample azure blob knowledge source",
"azureBlobParameters": {
"connectionString": "{{blob-connection-string}}",
"containerName": "blobcontainer",
"folderPath": null,
"isADLSGen2": false,
"ingestionParameters": {
"identity": null,
"embeddingModel": {
"kind": "azureOpenAI",
"azureOpenAIParameters": {
"deploymentId": "text-embedding-3-large",
"modelName": "text-embedding-3-large",
"resourceUri": "{{aoai-endpoint}}",
"apiKey": "{{aoai-key}}"
}
},
"chatCompletionModel": null,
"disableImageVerbalization": true,
"ingestionSchedule": null,
"ingestionPermissionOptions": ["rbacScope"],
"contentExtractionMode": "minimal",
"aiServices": {
"uri": "{{ai-endpoint}}",
"apiKey": "{{ai-key}}"
}
}
}
}
リファレンス:ナレッジ ソースの作成または更新 (REST API)
インデクサーベースのインデックス作成を構成する
インデクサーを使用している場合は、BLOB からアクセス許可メタデータをプルするように、インデクサー、データ ソース、およびインデックスを構成します。
データ ソースを作成する
データ ソースの種類は
azureblobする必要があります。データ ソース解析モードが既定である必要があります。
データ ソースには
indexerPermissionOptionsとrbacScopeが必要です。rbacScopeの場合は、マネージド ID 形式で 接続文字列 を構成します。ユーザー割り当てマネージド ID を使用する接続文字列の場合は、
identityプロパティも指定する必要があります。
システム マネージド ID と indexerPermissionOptionsを含む JSON の例:
{
"name" : "my-blob-datasource",
"type": "azureblob",
"indexerPermissionOptions": ["rbacScope"],
"credentials": {
"connectionString": "ResourceId=/subscriptions/<your subscription ID>/resourceGroups/<your resource group name>/providers/Microsoft.Storage/storageAccounts/<your storage account name>/;"
},
"container": {
"name": "<your-container-name>",
"query": "<optional-query-used-for-selecting-specific-blobs>"
}
}
接続文字列のユーザーマネージド ID を持つ JSON スキーマの例:
{
"name" : "my-blob-datasource",
"type": "azureblob",
"indexerPermissionOptions": ["rbacScope"],
"credentials": {
"connectionString": "ResourceId=/subscriptions/<your subscription ID>/resourceGroups/<your resource group name>/providers/Microsoft.Storage/storageAccounts/<your storage account name>/;"
},
"container": {
"name": "<your-container-name>",
"query": "<optional-query-used-for-selecting-specific-blobs>"
},
"identity": {
"@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
"userAssignedIdentity": "/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{user-assigned-managed-identity-name}"
}
}
インデックスにアクセス許可フィールドを作成する
Azure AI 検索で、インデックスにアクセス許可メタデータのフィールド定義が含まれていることを確認します。 アクセス許可メタデータは、データ ソース定義で indexerPermissionOptions が指定されている場合にインデックスを作成できます。
推奨されるスキーマ属性 RBAC スコープ:
-
rbacScopepermissionFilter 値を持つ RBAC スコープ フィールド。 - プロパティ
permissionFilterOptionクエリ時にフィルター処理を有効にします。 - 権限メタデータに文字列フィールドを使用する
- すべてのフィールドで
filterableを true に設定します。
retrievableが false であることに注意してください。 開発中にアクセス許可が存在することを確認するために true を設定できますが、セキュリティ プリンシパル ID が結果に表示されないように、運用環境にデプロイする前に必ず false に戻すように設定してください。
JSON スキーマの例:
{
...
"fields": [
...
{
"name": "RbacScope",
"type": "Edm.String",
"permissionFilter": "rbacScope",
"filterable": true,
"retrievable": false
}
],
"permissionFilterOption": "enabled"
}
インデクサーを構成する
インデクサー内のフィールド マッピングは、データ パスをインデックス内のフィールドに設定します。 名前またはデータ型によって異なるターゲット フィールドと変換先フィールドには、明示的なフィールド マッピングが必要です。 フィールド名を変更すると、Azure Blob Storageの次のメタデータ フィールドにフィールド マッピングが必要になる場合があります。
-
metadata_rbac_scope (
Edm.String) - コンテナー RBAC スコープ。
インデクサーで fieldMappings を指定して、インデックス作成中にアクセス許可メタデータをターゲット フィールドにルーティングします。
JSON スキーマの例:
{
...
"fieldMappings": [
{ "sourceFieldName": "metadata_rbac_scope", "targetFieldName": "RbacScope" }
]
}
インデクサーを実行する
インデクサー、データ ソース、およびインデックスが構成されたら、インデクサーを実行してプロセスを動かします。 構成またはアクセス許可に問題がある場合は、この手順でこれらの問題が発生します。
既定では、インデクサーは検索サービスに投稿するとすぐに実行されますが、インデクサーの構成に disabled が true に設定されている場合、インデクサーは無効な状態でポストされるため、インデクサーを手動で実行できます。
Azure ポータルからインデクサーを実行状態とメッセージを監視できるようにすることをお勧めします。
エラーがないと仮定すると、インデックスが設定され、 クエリとテストを進めることができます。
削除の追跡
BLOB の削除を効果的に管理するには、インデクサーを初めて実行する前に 削除の追跡 を有効にしてください。 この機能により、システムはソースから削除された BLOB を検出し、対応するコンテンツをインデックスから削除できます。