マネージド ID を使用して接続するように検索サービスを構成する

Note

Azure AI 検索は、Azure ポータル、REST API、およびAzure SDKから使用できます。 また、Foundry IQ は、エンタープライズ コンテンツを、Microsoft Foundry ポータルのエージェントの再利用可能なアクセス許可に対応したナレッジ ベースに変換するマネージド ナレッジ レイヤーです。

Azure AI 検索から、インデックス作成またはクエリ中にデータ、応用 AI、またはベクター化を提供する他の Azure リソースへの送信接続には、Microsoft Entra ID セキュリティ プリンシパルとロールの割り当てを使用できます。

送信接続でロールを使用するには、まず、Microsoft Entra テナントの検索サービスのセキュリティ プリンシパルとして、システム割り当てマネージド ID またはユーザー割り当てマネージド ID を使用するように検索サービスを構成します。 マネージド ID を作成したら、承認されたアクセスのロールを割り当てることができます。 マネージド ID とロールの割り当てにより、接続文字列またはコードでシークレットと資格情報を渡す必要がなくなります。

前提 条件

  • Basic 層以上の任意のリージョンにあるAzure AI 検索 サービス。

  • 有効なロールの割り当てを持つMicrosoft Entra セキュリティ プリンシパルからの受信要求を受け入れるAzure リソース。

  • マネージド ID を作成するには、所有者またはユーザー アクセス管理者である必要があります。 ロールを割り当てるには、所有者、ユーザー アクセス管理者、ロールベースアクセス制御管理者、またはMicrosoft.Authorization/roleAssignments/write 権限を持つカスタムロールのメンバーである必要があります。

サポートされているシナリオ

マネージド ID は、次のシナリオで使用できます。

シナリオ システム割り当て ユーザー割り当て
インデクサー データ ソースへの接続1 はい はい
Azure OpenAI、Microsoft Foundry、およびAzure Functionsのスキル/ベクター化2を介して、埋め込みモデルとチャット完了モデルに接続します。 はい はい
カスタマー マネージド キーのAzure Key Vaultに接続します はい はい
デバッグ セッションへの接続 (Azure Storage でホスト)1 はい いいえ
Azure Storage (プレビュー)1,3でホストされているエンリッチメント キャッシュに接続する はい はい 4
ナレッジ ストアへの接続 (Azure Storage でホスト)1 はい はい

1 検索とストレージの間の接続の場合、ネットワーク セキュリティでは、使用できるマネージド ID の種類に制約が課されます。 Azure Storageへの同じリージョン接続にはシステム マネージド ID のみを使用でき、その接続は trusted service exception またはリソース インスタンス ルールを使用する必要があります。 詳細については、 ネットワークで保護されたストレージ アカウントへのアクセス を参照してください。

2 スキルやベクターライザーを介した Azure OpenAI、Foundry、および Azure Functions への接続には、Custom skill、Custom vectorizer、Azure OpenAI 埋め込みスキル、Azure OpenAI ベクターライザー、AML スキル、および Microsoft Foundry モデルカタログ ベクターライザー が含まれます。

3 AI 検索サービスは、 現在、共有キーアクセスが無効になっているストレージ アカウントのテーブルに接続できません。

エンリッチメント キャッシュ接続用の 4 つのユーザー割り当てマネージド ID には、プレビュー REST API (2025-11-01-preview 以降) またはプレビュー SDK パッケージが必要です。 この表の他のすべてのユーザー割り当てマネージド ID シナリオは、REST API バージョン 2026-04-01 以降でサポートされています。

システム マネージド ID を作成する

システムに割り当てられたマネージドIDは、Azure AI 検索サービスなどのAzureリソースに自動的に作成されリンクされる、Microsoft Entra IDのセキュリティプリンシパルです。

検索サービスごとに 1 つのシステム割り当てマネージド ID を持つことができます。 これは検索サービスに固有であり、その有効期間中はサービスにバインドされます。

システム割り当てマネージド ID を有効にすると、Microsoft Entra IDは、他のAzure リソースに対する認証に使用される検索サービスのセキュリティ プリンシパルを作成します。 その後、ロールの割り当てでこの ID を使用して、データと操作への承認されたアクセスを行うことができます。

  1. Azure ポータルで検索サービスに移動します。

  2. 左側のウィンドウで、 設定>Identity を選択します。

  3. [ システム割り当て済み ] タブの [ 状態]で [オン] を選択します。

  4. [保存] を選択します。

    Azure portal の ID ページのスクリーンショット

    設定を保存すると、ページが更新され、検索サービスに割り当てられているオブジェクト識別子が表示されます。

    システム ID オブジェクト識別子のスクリーンショット。

ユーザー割り当てマネージド ID を作成する

ユーザー割り当てマネージド ID は、サブスクリプション、リソース グループ、またはリソースの種類にスコープを設定できるAzure リソースです。

ロールの割り当ての粒度を高める目的で、複数のユーザー割り当てマネージド ID を作成できます。 たとえば、アプリケーションやシナリオごとに個別の ID が必要な場合があります。 独立して作成されたマネージド リソースとして、サービス自体にバインドされません。

ユーザー割り当てマネージド ID を設定する手順は次のとおりです。

  • Azure サブスクリプションで、ユーザー割り当てマネージド ID を作成します。

  • 検索サービスで、ユーザー割り当てマネージド ID を検索サービスに関連付けます。

  • 接続する他のAzure サービスで、ID のロールの割り当てを作成します。

ユーザー割り当てマネージド ID と Azure AI 検索 サービスの関連付けは、Azure ポータル、Search Management REST API、および機能を提供する SDK パッケージでサポートされています。

  1. Azure ポータルにサインインします。

  2. ダッシュボードの左上隅にある [リソースの作成] を選択 します。

  3. 検索ボックスを使用して ユーザー割り当てマネージド ID を検索し、[ 作成] を選択します。

    Azure Marketplace のユーザー割り当てマネージド ID タイルのスクリーンショット。

  4. サブスクリプション、リソース グループ、リージョンを選択します。 ID にわかりやすい名前を付けます。

  5. [ 作成] を選択し、リソースのデプロイが完了するまで待ちます。

    ID を使用するには数分かかります。

  6. 検索サービス のページで、[設定]>[Identity] を選択します。

  7. [ ユーザー割り当て ] タブで、[ 追加] を選択します。

  8. サブスクリプションと、前に作成したユーザー割り当てマネージド ID を選択します。

ロールを割り当てる

マネージド ID を取得したら、Azure リソースに対する検索サービスのアクセス許可を決定するロールを割り当てます。

  • 読み取りアクセス許可は、インデクサー データ接続と、Azure Key Vaultでカスタマー マネージド キーにアクセスするために必要です。

  • ナレッジ ストアでデバッグ セッション データ、エンリッチメント キャッシュ、および長期コンテンツ ストレージをホストするためにAzure Storageを使用する AI エンリッチメント機能には、書き込みアクセス許可が必要です。

次の手順は、ロールの割り当てのワークフローを示しています。 この例は、Azure OpenAI 用です。 その他のAzureリソースについては、「 Azure Storage、 Azure Cosmos DB、または Azure SQLを参照してください。

  1. Azure ポータルで Azure OpenAI リソースに移動します。

  2. 左側のメニューから [アクセス制御 ] を選択します。

  3. [ 追加] を選択し、[ ロールの割り当ての追加] を選択します。

  4. [ジョブ関数ロール] で、[Cognitive Services OpenAI ユーザー] を選択し、[次へ] を選択します。

  5. [ メンバー] で [ マネージド ID ] を選択し、[メンバー] を選択 します。

  6. サブスクリプションとリソースの種類 (Search サービス) でフィルター処理し、検索サービスのマネージド ID を選択します。

  7. レビュー + 割り当て を選択します。

接続文字列の例

他のAzure リソースへの接続文字列でマネージド ID を使用できることを、シナリオの説明から思い出してください。 このセクションでは、例を示します。

システム割り当てマネージド ID 接続では、一般公開されている REST API バージョンが使用されます。 ユーザー割り当てマネージド ID 接続では、プレビュー API バージョンが必要なエンリッチメント キャッシュ接続を除き、REST API バージョン 2026-04-01 以降が使用されます。

ヒント

これらのオブジェクトのほとんどは、Azure ポータルでシステム割り当てマネージド ID またはユーザー割り当てマネージド ID を指定して作成し、JSON 定義を表示して接続文字列を取得できます。

BLOB データ ソース (システム マネージド ID):

インデクサー データ ソースには、データ ソースへの接続方法を決定する credentials プロパティが含まれています。 次の例は、ストレージ アカウントの一意のリソース ID を指定する接続文字列を示しています。

システム マネージド ID は、接続文字列がMicrosoft Entra ID対応サービスまたはアプリケーションの一意のリソース ID である場合に示されます。 ユーザー割り当てマネージド ID は、 identity プロパティを使用して指定します。

"credentials": {
    "connectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name};"
    }

BLOB データ ソース (ユーザーマネージド ID):

ユーザー割り当てマネージド ID は、REST API バージョン 2026-04-01 以降の identity の プロパティを使用してサポートされます。

"credentials": {
    "connectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name};"
    },
  . . .
"identity": {
    "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
    "userAssignedIdentity": "/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{user-assigned-managed-identity-name}"
  }

ナレッジ ストア (システム マネージド ID):

ナレッジストアの定義には、Azure Storageに接続するための接続文字列が含まれています。 接続文字列は、ストレージ アカウントの一意のリソース ID です。 この文字列には、パスにコンテナーまたはテーブルが含まれていないことに注意してください。 これらは、接続文字列ではなく、埋め込みプロジェクション定義で定義されます。

"knowledgeStore": {
  "storageConnectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name};"
}

ナレッジ ストア (ユーザーマネージド ID):

ユーザー割り当てマネージド ID は、REST API バージョン 2026-04-01 以降の identity の プロパティを通じてサポートされます。

"knowledgeStore": {
  "storageConnectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name};",
  "identity": {
    "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
    "userAssignedIdentity": "/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{user-assigned-managed-identity-name}"
  }
}

エンリッチメント キャッシュ (プレビュー):

インデクサーは、キャッシュされたエンリッチメントに使用されるコンテナーを作成、使用、および記憶します。 キャッシュ接続文字列にコンテナーを含める必要はありません。 オブジェクト ID は、Azure ポータルの検索サービスの Identity ページにあります。

"cache": {
  "enableReprocessing": true,
  "storageConnectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name};"
}

デバッグ セッション:

デバッグ セッションは、Azure ポータルで実行され、セッションの開始時に接続文字列を受け取ります。 次の例のような文字列を貼り付けることができます。

"ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name}/{container-name};",

カスタム スキル:

カスタム スキルは、カスタム コードをホストするAzure関数またはアプリのエンドポイントを対象とします。

  • uri は、関数またはアプリのエンドポイントです。

  • authResourceId は、マネージド ID を使用して接続するように検索サービスに指示し、ターゲット関数またはアプリのアプリケーション ID をプロパティに渡します。

{
  "@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
  "description": "A custom skill that can identify positions of different phrases in the source text",
  "uri": "https://contoso.count-things.com",
  "authResourceId": "<Azure-AD-registered-application-ID>",
  "batchSize": 4,
  "context": "/document",
  "inputs": [ ... ],
  "outputs": [ ...]
}

モデルの接続例

マネージド ID を使用して行われた接続の場合、このセクションでは、検索サービスが別のリソースのモデルに接続するために使用する接続情報の例を示します。 システム マネージド ID を介した接続は透過的です。ID とロールが配置され、正しく構成されている場合は接続が成功します。 これに対し、ユーザーマネージド ID には追加の接続プロパティが必要です。

Azure OpenAI 埋め込みスキル および Azure OpenAI vectorizer:

AI Search の Azure OpenAI 埋め込みスキルとベクターライザーは、埋め込みモデルをホストする Azure OpenAI のエンドポイントを対象とします。 エンドポイントは、Azure OpenAI 埋め込みスキル定義 または Azure OpenAI ベクターライザー定義 で指定されます。

システム マネージド ID は、次の例に示すように、 "apikey" と "authIdentity" が空の場合に自動的に使用されます。 "authIdentity" プロパティは、ユーザー割り当てマネージド ID にのみ使用されます。

システム マネージド ID の例:

{
  "@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill",
  "description": "Connects a deployed embedding model.",
  "resourceUri": "https://url.openai.azure.com/",
  "deploymentId": "text-embedding-ada-002",
  "modelName": "text-embedding-ada-002",
  "inputs": [
    {
      "name": "text",
      "source": "/document/content"
    }
  ],
  "outputs": [
    {
      "name": "embedding"
    }
  ]
}

システム割り当てマネージド ID 用に構成された ベクターライザーの例 を次に示します。 ベクター化は検索インデックスで指定されます。

 "vectorizers": [
    {
      "name": "my_azure_open_ai_vectorizer",
      "kind": "azureOpenAI",
      "azureOpenAIParameters": {
        "resourceUri": "https://url.openai.azure.com",
        "deploymentId": "text-embedding-ada-002",
        "modelName": "text-embedding-ada-002"
      }
    }
  ]

ユーザー割り当てマネージド ID の例:

"apiKey"が空で、有効な"authIdentity"が指定されている場合は、ユーザー割り当てマネージド ID が使用されます。

{
  "@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill",
  "description": "Connects a deployed embedding model.",
  "resourceUri": "https://url.openai.azure.com/",
  "deploymentId": "text-embedding-ada-002",
  "modelName": "text-embedding-ada-002",
  "inputs": [
    {
      "name": "text",
      "source": "/document/content"
    }
  ],
  "outputs": [
    {
      "name": "embedding"
    }
  ],
  "authIdentity": {
    "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
    "userAssignedIdentity": "/subscriptions/<subscription_id>/resourcegroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned-managed-identity-name>"
   }
}

ユーザー割り当てマネージド ID 用に構成された ベクターライザーの例 を次に示します。 ベクター化は検索インデックスで指定されます。

 "vectorizers": [
    {
      "name": "my_azure_open_ai_vectorizer",
      "kind": "azureOpenAI",
      "azureOpenAIParameters": {
        "resourceUri": "https://url.openai.azure.com",
        "deploymentId": "text-embedding-ada-002",
        "modelName": "text-embedding-ada-002"
        "authIdentity": {
            "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
            "userAssignedIdentity": "/subscriptions/<subscription_id>/resourcegroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned-managed-identity-name>"
          }
      }
    }
  ]

ファイアウォール アクセスを確認する

Azure リソースがファイアウォールの内側にある場合は、検索サービスとAzure ポータルからの要求を許可する受信規則があることを確認します。

関連項目