次の方法で共有


ロールを使用して Azure AI 検索に接続する

Azure では、プラットフォーム上で実行されているすべてのサービスに対して、Microsoft Entra ID を介してグローバル認証と ロールベースのアクセス制御 が提供されます。 この記事では、どのロールが Azure AI 検索での検索コンテンツと管理にアクセスできるかを説明します。

Azure AI Search では、次の目的で Azure ロールを割り当てることができます。

検索結果に対するユーザーごとのアクセス ( 行レベルのセキュリティ または ドキュメント レベルのアクセスとも呼ばれます) は、Azure Data Lake Storage (ADLS) Gen2 と Azure BLOB インデックスのアクセス許可の継承、および他のすべてのプラットフォームのセキュリティ フィルターを通じてサポートされます ( ドキュメント レベルのアクセス制御を参照)。

ロールの割り当ては、すべてのツールとクライアント ライブラリ全体に累積され、広く適用されます。 ロールを割り当てるには、Azure ロールベースのアクセス制御に関するドキュメントで説明 されているサポートされている方法 のいずれかを使用します。

ロールベースのアクセスはオプションですが、使用することをお勧めします。 代替策としてはキーベースの認証があり、こちらは既定のものです。

クイック リファレンス: タスク別のロール

タスク 必要なロール
インデックス、インデクサー、スキルセットを作成または管理する 検索サービス寄稿者
ドキュメントをインデックスに読み込む 検索インデックス データ共同作成者
インデックスのクエリ 検索インデックス データ閲覧者
完全な開発アクセス Search Service Contributor + Search Index Data Contributor + Search Index Data Reader
サービス管理 所有者または共同作成者

前提条件

ロールは、データ プレーンまたはコントロール プレーン レイヤーに影響を与える特定の操作に対するアクセス許可のコレクションです。

"データ プレーン" とは、検索サービス エンドポイントに対する操作 (たとえばインデックス作成やクエリ)、またはその他の検索サービス REST API または同等の Azure SDK クライアント ライブラリで指定される操作を指します。

"コントロール プレーン" とは、Azure リソース管理 (たとえば検索サービスの作成や構成) を指します。

次のロールが組み込まれています。 これらのロールがニーズを満たしていない場合は、 カスタム ロールを作成します。

Role プレーン 説明
所有者 コントロールとデータ Azure ロールを割り当てる機能を含む、検索リソースのコントロール プレーンへのフル アクセス。 所有者ロールだけが、認証オプションを有効または無効にしたり、他のユーザーのロールを管理したりできます。 サブスクリプション管理者は既定でメンバーになります。

データ プレーンでは、このロールには、Search Service 共同作成者ロールと同じアクセス権があります。 これには、ドキュメントのクエリを実行する機能を除くすべてのデータ プレーン アクションへのアクセスが含まれます。
投稿者 コントロールとデータ ロールの割り当て、認証オプションの変更を除いて、所有者と同じコントロール プレーン アクセス レベル。

データ プレーンでは、このロールには、Search Service 共同作成者ロールと同じアクセス権があります。 これには、検索インデックスまたはインデックス ドキュメントのクエリを実行する機能を除く、すべてのデータ プレーン アクションへのアクセス権が含まれます。
閲覧者 コントロールとデータ 検索メトリック、コンテンツ メトリック (消費されたストレージ、オブジェクトの数)、データ プレーン リソース (インデックス、インデクサーなど) のオブジェクト定義など、サービス全体にわたる読み取りアクセス。 閲覧者ロールは、API キーの読み取りやインデックス内のコンテンツの読み取りには引き続きアクセスできません。
Search Service サービス貢献者 コントロールとデータ オブジェクト定義 (インデックス、別名、同意語マップ、インデクサー、データソース、スキルセット) に対する読み取り/書き込みアクセス権限。 このロールは、オブジェクトを作成する開発者、および検索サービスとそのオブジェクトを管理する管理者向けですが、インデックス コンテンツにはアクセスできません。 このロールを使用して、インデックスの作成、削除、一覧表示、インデックス定義の取得、サービス情報 (統計とクォータ) の取得、アナライザーのテスト、同意語マップ、インデクサー、データ ソース、スキルセットの作成と管理を行います。 アクセス許可の一覧については、「Microsoft.Search/searchServices/*」を参照してください。
検索インデックス データ共同作成者 Data インデックス内のコンテンツに対する読み取り/書き込みアクセス権限。 このロールは、インデックスのドキュメント コレクションのインポート、更新、またはクエリを行う必要がある開発者またはインデックス所有者向けです。 このロールは、インデックスの作成、更新、または削除をサポートしていません。 既定では、このロールは検索サービスのすべてのインデックスに適用されます。 スコープを絞り込むには、「1 つのインデックスへのアクセスを許可する」を参照してください。
検索インデックス データ閲覧者 Data 検索インデックスのクエリを実行するための読み取り専用アクセス。 このロールは、クエリを実行するアプリおよびユーザー向けです。 このロールでは、オブジェクト定義への読み取りアクセスはサポートしていません。 たとえば、検索インデックス定義を読み取ったり、検索サービスの統計情報を取得したりすることはできません。 既定では、検索サービスのすべてのインデックスを対象としています。 スコープを絞り込むには、「1 つのインデックスへのアクセスを許可する」を参照してください。

これらのロールを組み合わせて、自分のユース ケースのために十分なアクセス許可を取得します。

Azure ロールベースのアクセスを無効にした場合、コントロール パネルの組み込みロール (所有者、共同作成者、閲覧者) を引き続き使用できます。 ロールベースのアクセスを無効にすると、これらのロールに関連付けられたデータ関連の権限だけが削除されます。 データ プレーンのロールを無効にした場合、Search Service 共同作成者はコントロール プレーン共同作成者と同じです。

アクセス許可の概要

アクセス許可 検索インデックス データ閲覧者 検索インデックス データ共同作成者 検索サービス寄稿者 所有者/共同作成者 閲覧者
Azure portal でリソースを表示する
リソースのプロパティ、メトリック、エンドポイントを表示する
リソース上のすべてのオブジェクトをリストする
クォータとサービス統計情報にアクセスする
インデックスの読み取りとクエリ
インデックス作成用のデータをアップロードする 1
権限フィルターに関係なく高い権限での読み取り 2
インデックスとエイリアスを作成または編集する
インデクサー、データ ソース、スキルセットを作成、編集、実行する
シノニム マップを作成または編集する
デバッグ セッションを作成または編集する
デプロイを作成または管理する
Azure AI 検索のリソースを作成または構成する
[キー] でキーを表示、コピー、再生成する
ロール、ポリシー、および定義を表示する
認証オプションを設定する
プライベート接続を構成する
ネットワーク セキュリティの構成

1 Azure portal では、所有者または共同作成者は、他のクライアントでドキュメントをアップロードできない場合でも、インデックスを作成して読み込むデータのインポート ウィザードを実行できます。 検索サービス自体は、個々のユーザーではなく、ウィザードでデータ接続を行います。 ウィザードには、このタスクを完了するために必要な Microsoft.Search/searchServices/indexes/documents/* 権限があります。

2 呼び出された ID を使用して結果を取得するクエリをデバッグするために、昇格された読み取りを使用します。 詳細については、「 不適切なクエリ結果を調査する」を参照してください。

所有者と共同作成者には、ロールの割り当てができるのは所有者のみである点を除いて同じアクセス許可が付与されます。

ロールを割り当てる

このセクションでは、次のロールを割り当てます。

  • サービス管理
  • Search Service の開発、または Search Service への書き込みアクセス
  • クエリに対する読み取り専用アクセス

サービス管理のロールを割り当てる

サービス管理者は、Search Service を作成して構成し、Management REST API または同等のクライアント ライブラリに記述されているすべてのコントロール プレーン操作を実行できます。 所有者または共同作成者であるユーザーは、ほとんどのデータ プレーン検索 REST API タスクを Azure portal で実行することもできます。

Role ID
Owner 8e3af657-a8ff-443c-a75c-2fe8c4bcb635
Contributor b24988ac-6180-42a0-ab88-20f7382dd24c
Reader acdd72a7-3385-48ef-bd42-f606fba81ae7
  1. Azure portal にサインインします。

  2. 左側のウィンドウで [アクセス制御 (IAM)] を選択します。

  3. [+ 追加]>[ロールの割り当ての追加] を選択して [ロールの割り当ての追加] ウィザードを起動します。

    Azure portal のアクセス制御ページのスクリーンショット。

  4. ロールを選択します。

    • 所有者 (クエリのアクセス許可を除く、すべてのデータ プレーン操作とコントロール プレーン操作へのフル アクセス)
    • 共同作成者 (ロールを割り当てるアクセス許可を除き、所有者と同じ)
    • 閲覧者 (メトリックの監視と表示に使用可能)
  5. [メンバー] タブで Microsoft Entra ユーザーまたはグループの ID を選びます。 別の Azure サービスのアクセス許可を設定する場合は、システムまたはユーザー マネージド ID を選択します。

  6. [確認と 割り当て] タブで、[確認と割り当て] を選択して ロールを割り当てます。

開発用のロールを割り当てる

ロールの割り当ては、検索サービス全体でグローバルに適用されます。 単一のインデックスにアクセス許可のスコープ指定を行う場合は、代わりに PowerShell または Azure CLI を使用してカスタム ロールを作成します。

タスク Role ID
オブジェクトを作成または管理する Search Service Contributor 7ca78c08-252a-4471-8644-bb5ff32d4ba0
ドキュメントを読み込み、インデックス作成ジョブを実行する Search Index Data Contributor 8ebe5a00-799e-43f5-93ac-243d3dce84a7
インデックスのクエリ Search Index Data Reader 1407120a-92aa-4202-b7e9-c0e197c71c8f

フル アクセスを提供するロールのもう 1 つの組み合わせは、共同作成者または所有者、および Search インデックス データ閲覧者です。

重要

サービスまたはインデックスに対してロールベースのアクセスを構成し、要求に API キーも指定した場合、Search Service では API キーを使用して認証が行われます。

  1. Azure portal にサインインします。

  2. 左側のウィンドウで [アクセス制御 (IAM)] を選択します。

  3. [+ 追加]>[ロールの割り当ての追加] を選択して [ロールの割り当ての追加] ウィザードを起動します。

    Azure portal のアクセス制御ページのスクリーンショット。

  4. ロールを選択します。

    • Search Service 共同作成者 (インデックス、インデクサー、スキルセット、およびその他の最上位オブジェクトに対する作成、読み取り、更新、および削除操作)
    • Search インデックス データ共同作成者 (ドキュメントの読み込みとインデックス作成ジョブの実行)
    • 検索インデックス データ閲覧者 (インデックスのクエリ)
  5. [メンバー] タブで Microsoft Entra ユーザーまたはグループの ID を選びます。 別の Azure サービスのアクセス許可を設定する場合は、システムまたはユーザー マネージド ID を選択します。

  6. [確認と 割り当て] タブで、[確認と割り当て] を選択して ロールを割り当てます。

読み取り専用クエリのロールを割り当てる

インデックスへの読み取りアクセスのみが必要なアプリとプロセスには、インデックス データ閲覧者の検索ロールを使用します。

Role ID
Search Index Data Reader PowerShell の場合 1407120a-92aa-4202-b7e9-c0e197c71c8f

このロールは非常に具体的です。 検索、オートコンプリート、検索候補のための Search インデックスのドキュメント コレクションに対する GET アクセスまたは POST アクセス を許可します。 インデックスまたはその他の最上位レベルのオブジェクトに対する GET 操作や LIST 操作、またサービス統計の GET はサポートされていません。

このセクションでは、ロールの割り当てを設定するための基本的な手順について説明します。ここでは完全に説明しますが、ロールベースのアクセス用にアプリを構成する包括的な手順については、「 キーなしで Azure AI Search を使用する」を参照してください。

開発者は、Microsoft ID に基づくクエリをデバッグする必要がある場合は、検索インデックス データ共同作成者を使用するか、 デバッグ目的で昇格されたアクセス許可を付与するカスタム ロールを作成します。

  1. Azure portal にサインインします。

  2. 左側のウィンドウで [アクセス制御 (IAM)] を選択します。

  3. [+ 追加]>[ロールの割り当ての追加] を選択して [ロールの割り当ての追加] ウィザードを起動します。

    Azure portal のアクセス制御ページのスクリーンショット。

  4. 検索インデックス データ閲覧者ロールを選択します。

  5. [メンバー] タブで Microsoft Entra ユーザーまたはグループの ID を選びます。 別の Azure サービスのアクセス許可を設定する場合は、システムまたはユーザー マネージド ID を選択します。

  6. [確認と 割り当て] タブで、[確認と割り当て] を選択して ロールを割り当てます。

ロールの割り当てをテストする

クライアントを使用して、ロールの割り当てをテストします。 役割は累積的であることを覚えておいてください。 リソース (検索サービス) レベルでサブスクリプションまたはリソース グループ レベルをスコープとする継承されたロールを削除または拒否することはできません。

キーレス接続用にアプリケーションを構成し、テストする前にロールの割り当てを行います。

  1. Azure portal にサインインします。

  2. お使いの検索サービスに移動します。

  3. [概要] ページで、[インデックス] タブを選択します。

    • Search サービス共同作成者は、任意のオブジェクトを表示および作成できますが、ドキュメントを読み込んだり、インデックスに対してクエリを実行したりすることはできません。 権限を確認するには、検索インデックスを作成します

    • Search インデックス データ共同作成者は、ドキュメントを読み込むことができます。 Azure portal では [データのインポート] ウィザードの外部には [ドキュメントの読み込み] オプションはありませんが、[インデクサーのリセットと実行] を行うことでドキュメントの読み込みアクセス許可を確認できます。

    • 検索インデックス データ閲覧者は、インデックスに対してクエリを実行できます。 権限を確認するには、Search エクスプローラーを使用します。 クエリを送信し、結果を表示できるようにする必要がありますが、インデックス定義を表示できたり、作成できたりする必要はありません。

現在のユーザーとしてテスト

既に検索サービスの共同作成者または所有者である場合は、ユーザー ID のベアラー トークンを使用して Azure AI Search に対する認証を行うことができます。

  1. Azure CLI を使用して、現在のユーザーのベアラー トークンを取得します。

    az account get-access-token --scope https://search.azure.com/.default
    

    または PowerShell を使用する:

    Get-AzAccessToken -ResourceUrl https://search.azure.com
    
  2. Visual Studio Code の新しいテキスト ファイルに、次の変数を貼り付けます。

    @baseUrl = PASTE-YOUR-SEARCH-SERVICE-URL-HERE
    @index-name = PASTE-YOUR-INDEX-NAME-HERE
    @token = PASTE-YOUR-TOKEN-HERE
    
  3. アクセスを確認する要求を貼り付けて送信します。 hotels-quickstart インデックスに対してクエリを実行するクエリを次に示します。

    POST https://{{baseUrl}}/indexes/{{index-name}}/docs/search?api-version=2025-09-01 HTTP/1.1
      Content-type: application/json
      Authorization: Bearer {{token}}
    
        {
             "queryType": "simple",
             "search": "motel",
             "filter": "",
             "select": "HotelName,Description,Category,Tags",
             "count": true
         }
    

1 つのインデックスへのアクセスを許可する

シナリオの一部では、アプリケーションでアクセスできる範囲を単一のリソース (インデックスなど) に制限することが必要になる場合があります。

Azure portal では現在、このレベルの粒度でのロールの割り当てはサポートされていませんが、 PowerShell または Azure CLI を使用してロールを割り当てることができます。

PowerShell では、New-AzRoleAssignment を使って、Azure のユーザーまたはグループの名前と、割り当てのスコープを指定します。

  1. Azure および AzureAD モジュールを読み込み、Azure アカウントに接続します。

    Import-Module -Name Az
    Import-Module -Name AzureAD
    Connect-AzAccount
    
  2. 個々のインデックスにスコープを設定したロールの割り当てを追加します。

    New-AzRoleAssignment -ObjectId <objectId> `
        -RoleDefinitionName "Search Index Data Contributor" `
        -Scope  "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
    

カスタム ロールの作成

組み込みロールに適切なアクセス許可の組み合わせがない場合は、カスタム ロールを作成して必要な操作をサポートすることができます。

この例では、検索インデックス データ閲覧者を複製し、名前でインデックスを一覧表示する権限を追加します。 通常、検索サービスのインデックスを一覧表示することは管理者の権利とされています。

次の手順は、「Azure portal を使用して Azure カスタム ロールを作成または更新する」から派生したものです。 検索サービス ページでは、既存のロールからの複製がサポートされています。

次の手順では、インデックスを名前で一覧表示する権限を追加して検索クエリの権限を増強したカスタム ロールを作成します。 通常、インデックスの一覧表示は管理者用の機能とされています。

  1. Azure portal で、検索サービスに移動します。

  2. 左側のナビゲーション ペインで [アクセス制御 (IAM)] を選択します。

  3. アクション バーで、[ロール] を選択します。

  4. [検索インデックス データ閲覧者] (または別のロール) を右クリックし、[複製] を選択して [カスタム ロールを作成する] ウィザードを開きます。

  5. [基本] タブでカスタム ロールの名前 ("Search Index Data Explorer" など) を指定し、[次へ] をクリックします。

  6. [アクセス許可] タブで [アクセス許可の追加] を選択します。

  7. [アクセス許可の追加] タブで、Microsoft Search タイルを検索して選択します。

  8. カスタム ロールのアクセス許可を設定します。 ページの上部で、既定の [アクション] の選択を使用します。

    • Microsoft.Search/operations で、[Read : List all available operations]\(読み取り: 使用可能なすべての操作を一覧表示する\) を選択します。
    • Microsoft.Search/searchServices/indexes で、[Read: Read Index]\(読み取り: インデックスの読み取り\) を選択します。
  9. 同じページの [データ アクション] に切り替え、Microsoft.Search/searchServices/indexes/documents で [Read : Read Documents]\(読み取り: ドキュメントの読み取り\) を選択します。

    JSON の定義は、次の例のようになります。

    {
     "properties": {
         "roleName": "search index data explorer",
         "description": "",
         "assignableScopes": [
             "/subscriptions/0000000000000000000000000000000/resourceGroups/free-search-svc/providers/Microsoft.Search/searchServices/demo-search-svc"
         ],
         "permissions": [
             {
                 "actions": [
                     "Microsoft.Search/operations/read",
                     "Microsoft.Search/searchServices/indexes/read"
                 ],
                 "notActions": [],
                 "dataActions": [
                     "Microsoft.Search/searchServices/indexes/documents/read"
                 ],
                 "notDataActions": []
             }
         ]
       }
     }
    
  10. [確認および作成] を選択してロールを作成します。 これで、ユーザーとグループをロールに割り当てることがきるようになりました。

条件付きアクセス

多要素認証などの組織ポリシーを適用する必要がある場合は、 Microsoft Entra 条件付きアクセスを使用します。

Azure AI Search の条件付きアクセス ポリシーを有効にするには、次の手順を実行します。

  1. Azure portal にサインインします。

  2. Microsoft Entra 条件付きアクセスを検索します。

  3. [ポリシー] を選択します。

  4. [新しいポリシー] を選択します。

  5. ポリシーの [クラウド アプリまたは操作] セクションで、ポリシーの設定方法に応じて、クラウド アプリとして Azure AI Search を追加します。

  6. ポリシーの残りのパラメーターを更新します。 たとえば、このポリシーを適用するユーザーとグループを指定します。

  7. ポリシーを保存します。

重要

検索サービスにマネージド ID が割り当てられている場合、特定の検索サービスはクラウド アプリとして表示され、条件付きアクセス ポリシーの一部として含めたり除外したりできます。 特定の検索サービスに条件付きアクセス ポリシーを適用することはできません。 代わりに、一般的な Azure AI Search クラウド アプリを選択してください。

ロール ベースの Access Control の問題のトラブルシューティング

認証にロールベースのアクセス制御を使用するアプリケーションを開発すると、いくつかの一般的な問題が発生する可能性があります。

  • 承認トークンが マネージド ID から取得され、最近適切なアクセス許可を割り当てた場合、これらのアクセス許可の割り当てが有効になるには 数時間かかる場合があります

  • Search Service の既定の構成は、キーベースの認証です。 既定のキー設定を [両方 ] または [ ロールベースのアクセス制御] に変更しない場合、基になるアクセス許可に関係なく、ロールベースの認証を使用するすべての要求が自動的に拒否されます。