メモ
Azure AI 検索は、Azure ポータル、REST API、およびAzure SDKから使用できます。 また、Foundry IQ は、エンタープライズ コンテンツを、Microsoft Foundry ポータルのエージェントの再利用可能なアクセス許可に対応したナレッジ ベースに変換するマネージド ナレッジ レイヤーです。
重要
機能、またはマークされたプロパティ (プレビュー) は、サービス レベル アグリーメントの対象ではなく、運用環境のワークロードには推奨されず、一般公開される前に変更または制約される可能性があります。 Azure AI 検索 プレビューの用語は、スタンドアロンでも一般公開されている機能の一部でも、すべてのプレビュー機能に適用されます。
Azure AI 検索 では、Microsoft Purview 機密ラベルの抽出とクエリ時の適用をサポートしています(プレビュー)。 インデックス作成中に、各ドキュメントの秘密度ラベルメタデータが自動的に抽出され、格納されます。 クエリ時には、Microsoft Purviewの既存の情報保護ポリシーに従ってラベルベースのアクセス制御が適用され、承認されたユーザーのみが検索結果のラベル付きコンテンツを取得できるようになります。
この機能は、次のデータ ソースで使用できます。
- Azure Blob Storage
- Azure Data Lake Storage Gen2
- Microsoft 365 の SharePoint (プレビュー)
- Microsoft OneLake
前提 条件
インデックス作成の前に、Microsoft Purview 秘密度ラベル ポリシーを構成し、それをドキュメントに適用します。
検索サービスに Purview API と秘密度ラベルへのアクセス権を付与するには、Microsoft Entra テナントのグローバル管理者または特権ロール管理者ロールを持ちます。
Azure AI 検索 サービスとクエリを発行するユーザーの両方が、同じMicrosoft Entra テナントに存在する必要があります。
Purview の機密ラベルでサポートされ、かつ Azure AI 検索 のインデクサーでサポートされている種類のファイルのソース ドキュメントを使用します。
REST API バージョン 2026-08-01-preview または同等のプレビュー SDK パッケージを使用します。
重要
検索サービスは、システム割り当てマネージド ID を使用して、Microsoft Purviewで認証する必要があります。 この機能では、ユーザー割り当てマネージド ID はサポートされていません。
制限
Azure ポータルでは、この機能はサポートされていません。
オートコンプリート API と Suggest API は、ラベルベースのアクセス制御をまだ適用できないため、Purview 対応インデックスではサポートされていません。
ゲスト アカウント とテナント間クエリはサポートされていません。
ユーザー割り当てのマネージド ID は、Microsoft Purview のロール割り当てでサポートされていません。 ラベル抽出に必要な ロールと
Content.SuperUserロールを保持できるのは、サービスのUnifiedPolicy.Tenant.Readだけです。 これらのロールをサービス自身の ID に直接割り当てます。インデクサーの代わりに特権EXTRACT操作 (暗号化されたコンテンツとセキュリティ分類の読み取り) が実行されます。 手順 1 と手順 3 を参照してください。次のインデクサー機能では、秘密度ラベルを持つドキュメントはサポートされていません。 スキルセットまたはインデクサーでこれらの機能のいずれかを使用する場合、秘密度ラベルを持つドキュメントは処理されません。
エージェント検索でのイメージ サービス (プレビュー) に必要な資産ストアを含むナレッジ ストア。 そのため、機密ラベルを取り込むナレッジ ソースでは、画像配信はサポートされていません。
ポリシーの適用のしくみ
秘密度ラベルのサポートには、インデックス作成とクエリ時間の適用という 2 つのフェーズがあります。
インデックス
スケジュールに基づいてインデックス作成を構成すると、インデクサーは新しいドキュメントと更新をデータ ソースからプルします。 ドキュメントごとに、次の情報がキャプチャされます。
- ドキュメントコンテンツ
- 関連付けられている秘密度ラベル
- 前回のインデクサー実行以降のコンテンツまたはラベルの変更
メモ
インデックスには、次にインデクサーが正常に実行されるまで、ソース ドキュメントのラベルの変更は反映されません。
クエリの実行時制御
クエリ時に、Azure AI 検索は秘密度ラベルを評価し、ユーザーのMicrosoft Entra ID トークンとMicrosoft Purview ラベル ポリシーに基づいて document レベルのアクセス制御を適用します。 特定のラベルのすぐ下にある READ 使用法 のコンテンツにアクセスする権限を持つユーザーのみが、検索結果内の対応するドキュメントを取得できます。
承認された管理者は、elevated read 要求を発行することもできます。この要求は、呼び出し元ユーザーが通常は表示しないラベル付きドキュメントを返し、返されるすべてのドキュメントに対してMicrosoft Purview監査ログ エントリを出力します。 昇格された読み取りには、検索サービスでの Search Index Data Contributor ロールと、API バージョン 2026-05-01-preview 以降が必要です。
エンドツーエンドの例
次の図は、秘密度ラベルが作成から検索エクスペリエンスにどのように流れるかを示しています。 最初の画像では、ユーザーが Confidential ラベルをMicrosoft Wordのドキュメントに適用します。 2 番目の画像では、エンタープライズ チャットボットがクエリ時にそのラベルを適用し、機密コンテンツのコピーと共有アクションをブロックします。
1. AI Search マネージド ID を有効にする
Azure AI 検索 サービスのシステム割り当てマネージド ID を有効にします。この機能では、ユーザー割り当てマネージド ID はサポートされていません。 インデクサーは、この ID を使用してMicrosoft Purviewで認証し、秘密度ラベルのメタデータを抽出します。 また、 手順 3 でロールの割り当てを受け取る必要があります。
2. AI Search サービスで RBAC を有効にする
Azure AI 検索 サービスでロールベースのアクセス制御 (RBAC) を有効にします。 コンテンツのインデックス作成やインデックスのクエリなどのコンテンツ関連の操作が成功するためには、この手順が必要です。 API キーに依存する操作が中断されないように、RBAC キーと API キーの両方を保持します。
3. 秘密度ラベルを抽出するアクセス権を付与する
Microsoft Purview の機密ラベルメタデータにアクセスするには、暗号化されたコンテンツの読み込みやセキュリティ分類の確認など、高度な特権を必要とする操作が含まれます。 Azure AI 検索でこの機能を有効にするには、組織の内部ガバナンスと承認プロセスに従って、サービスのマネージド ID に特定のロールを付与する必要があります。
グローバル役割管理者または特権役割管理者を特定する
検索サービスのアクセス許可を承認できるユーザーを決定する必要がある場合は、Microsoft Entra テナントでアクティブまたは適格なグローバル管理者を見つけることができます。
Azure ポータルで、Microsoft Entra ID を検索します。
左側のナビゲーション ウィンドウで、[>ロールと管理者の管理] を選択します。
グローバル管理者または特権ロール管理者ロールを検索して選択します。
[ 対象の割り当て ] と [ アクティブな割り当て] で、アクセス許可のセットアップ プロセスを実行する権限を持つ管理者の一覧を確認します。
セキュリティで保護されたガバナンスの承認
内部のセキュリティチームまたはコンプライアンス チームと連携して、要求を確認します。 Microsoftは、ロールの割り当てを続行する前に、会社の標準的なガバナンスとセキュリティ レビュー プロセスに従うことをお勧めします。
承認されたら、グローバル管理者または特権ロール管理者は、Azure AI 検索システム割り当てマネージド ID に次のロールを割り当てる必要があります。
- Content.SuperUser – ラベルとコンテンツ抽出用
- UnifiedPolicy.Tenant.Read – Purview ポリシーとラベル メタデータへのアクセス
PowerShell を使用してロールを割り当てる
メモ
これらのロールは、ユーザー割り当てマネージド ID、サービス プリンシパル、または個々のユーザー アカウントではなく、Azure AI 検索 サービスのシステム割り当てマネージド ID にのみ割り当てます。 PowerShell スクリプトは、サービス リソースからマネージド ID オブジェクト ID を自動的に取得します。
グローバル管理者または特権ロール管理者は、次の PowerShell スクリプトを使用して、必要なアクセス許可を付与する必要があります。 プレースホルダーの値を実際のサブスクリプション、リソース グループ、および検索サービス名に置き換えます。
Install-Module -Name Az -Scope CurrentUser
Install-Module -Name Microsoft.Entra -AllowClobber
Import-Module Az.Resources
Connect-Entra -Scopes 'Application.ReadWrite.All'
$resourceIdWithManagedIdentity = "subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Search/searchServices/<searchServiceName>"
$managedIdentityObjectId = (Get-AzResource -ResourceId $resourceIdWithManagedIdentity).Identity.PrincipalId
# Microsoft Information Protection (MIP)
$MIPResourceSP = Get-EntraServicePrincipal -Filter "appID eq '870c4f2e-85b6-4d43-bdda-6ed9a579b725'"
New-EntraServicePrincipalAppRoleAssignment -ServicePrincipalId $managedIdentityObjectId -Principal $managedIdentityObjectId -ResourceId $MIPResourceSP.Id -Id "8b2071cd-015a-4025-8052-1c0dba2d3f64"
# Microsoft Rights Management Services (MRMS) - Service Principal for policy read
$MRMSResourceSP = Get-EntraServicePrincipal -Filter "appID eq '00000012-0000-0000-c000-000000000000'"
New-EntraServicePrincipalAppRoleAssignment -ServicePrincipalId $managedIdentityObjectId -Principal $managedIdentityObjectId -ResourceId $MRMSResourceSP.Id -Id "7347eb49-7a1a-43c5-8eac-a5cd1d1c7cf0"
指定された PowerShell スクリプトの appID ロールは、次のAzureロールに関連付けられます。
| AppID | サービス プリンシパル |
|---|---|
870c4f2e-85b6-4d43-bdda-6ed9a579b725 |
Microsoft Info Protection 同期サービス |
00000012-0000-0000-c000-000000000000 |
Microsoft Rights Management サービス |
4. Purview 秘密度ラベルを有効にするようにインデックスを構成する
秘密度ラベルのサポートが必要な場合は、purviewEnabled プロパティをtrueでに設定します。
重要
purviewEnabled プロパティは、インデックスの作成時にtrueに設定する必要があります。 この設定は永続的であり、後で変更することはできません。
purviewEnabledが true に設定されている場合、すべてのドキュメント操作 API で RBAC 認証のみがサポートされます。
API キーのアクセスは、インデックス スキーマの取得 (リストと取得) に制限されます。
PUT https://{service}.search.windows.net/indexes('{indexName}')?api-version=2026-08-01-preview
{
"purviewEnabled": true,
"fields": [
{
"name": "sensitivityLabel",
"type": "Edm.String",
"filterable": true,
"sensitivityLabel": true,
"retrievable": true
}
]
}
5. データ ソースを構成する
秘密度ラベルの取り込みを有効にするには、indexerPermissionOptions プロパティを ["sensitivityLabel"] に設定して データ ソース を構成します。
{
"name": "purview-sensitivity-datasource",
"type": "azureblob", // < adjust type value according to the data source you are enabling this for: sharepoint, onelake, adlsgen2.
"indexerPermissionOptions": [ "sensitivityLabel" ],
"credentials": {
"connectionString": <your-connection-string>;"
},
"container": {
"name": "<container-name>"
}
}
indexerPermissionOptions プロパティは、インジェスト中に秘密度ラベルメタデータを抽出し、インデックス付きドキュメントに添付するようにインデクサーに指示します。
6. スキルセットでインデックス プロジェクションを構成する (該当する場合)
インデクサーに スキルセット があり、 テキスト分割スキルを使用してデータ チャンクを実装する場合 (統合ベクター化など)、 スキルセット内のインデックス プロジェクションを使用して各チャンクに秘密度ラベルを投影します。
アクセス許可フィールドと ACL フィールドがインデクサー フィールド マッピングとインデックス プロジェクションに属する場合のより広範な規則については、「 ACL フィールドを設定する場所の選択」を参照してください。
この手順は、クエリ時の強制適用と、エージェント型検索の応答に各チャンクについてドキュメントごとの sensitivityLabelInfo を含めることの両方に必要です。 プロジェクション マッピングがないと、子チャンク行は正しくフィルター処理されません。
PUT https://{service}.search.windows.net/skillsets/{skillset}?api-version=2026-08-01-preview
{
"name": "my-skillset",
"skills": [
{
"@odata.type": "#Microsoft.Skills.Text.SplitSkill",
"name": "#split",
"context": "/document",
"inputs": [{ "name": "text", "source": "/document/content" }],
"outputs": [{ "name": "textItems", "targetName": "chunks" }]
}
// ... (other skills such as embeddings, entity recognition, etc.)
],
"indexProjections": {
"selectors": [
{
"targetIndexName": "chunks-index",
"parentKeyFieldName": "parentId", // must exist in target index
"sourceContext": "/document/chunks/*", // match your split output path
"mappings": [
{ "name": "chunkId", "source": "/document/chunks/*/id" }, // if you create an id per chunk
{ "name": "content", "source": "/document/chunks/*/text" }, // chunk text
{ "name": "parentId", "source": "/document/id" }, // parent doc id
{ "name": "sensitivityLabel", "source": "/document/metadata_sensitivity_label" } // <-- parent → child
]
}
],
"parameters": {
"projectionMode": "skipIndexingParentDocuments"
}
}
}
7. インデクサーを構成する
- 抽出されたラベル メタデータをインデックス フィールドにルーティングするように 、インデクサー定義 でフィールド マッピングを定義します。
データ ソースが別のフィールド名 (
metadata_sensitivity_labelなど) でラベル メタデータを出力する場合は、明示的にマップします。
{
"fieldMappings": [
{
"sourceFieldName": "metadata_sensitivity_label",
"targetFieldName": "sensitivityLabel"
}
]
}
- インデクサーは、スケジュールされたインデクサーの実行中にドキュメントのラベル、コンテンツ、またはメタデータへの変更を検出すると、秘密度ラベルの更新に自動的にインデックスを付けます。 定期的なスケジュールでインデクサーを構成します。 サポートされる最小間隔は 5 分ごとです。