次の方法で共有


クイック スタート: 検索サービスに接続する

このクイック スタートでは、ロールベースのアクセス制御 (RBAC) と Microsoft Entra ID を使用して、Azure AI Search サービスへのキーレス接続を確立します。 その後、Visual Studio Code で Python を使用してサービスを操作します。

キーレス接続では、詳細なアクセス許可と ID ベースの認証によってセキュリティが強化されます。 ハードコーディングされた API キーはお勧めしませんが、必要に応じて、 キーを使用した Azure AI Search への接続に関するページを参照してください。

前提条件

ロールベースのアクセスを構成する

このセクションでは、Azure AI Search サービスで RBAC を有効にし、検索オブジェクトの作成、読み込み、クエリに必要なロールを割り当てます。 これらの手順の詳細については、「 ロールを使用して Azure AI Search に接続する」を参照してください。

アクセスを構成するには:

  1. Azure portal にサインインし、検索サービスを選択します。

  2. 左側のウィンドウで、[ 設定] > キーを選択します

  3. クライアントを RBAC に移行する時間が必要な場合は、[ ロールベースのアクセス制御 ] または [両方 ] を選択します。

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

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

  5. [追加>][ロール割り当ての追加] の順に選択します。

    Azure portal でロールの割り当てを追加するためのドロップダウン メニューのスクリーンショット。

  6. Search Service 共同作成者ロールをユーザー アカウントまたはマネージド ID に割り当てます。

  7. 検索インデックス データ共同作成者のロールの割り当てを繰り返します。

サービス情報を取得する

このセクションでは、Azure AI Search サービスのサブスクリプション ID とエンドポイントを取得します。 サブスクリプションが 1 つしかない場合は、サブスクリプション ID をスキップし、エンドポイントのみを取得します。 これらの値は、このクイックスタートの残りのセクションで使用します。

サービス情報を取得するには:

  1. Azure portal にサインインし、検索サービスを選択します。

  2. 左側のウィンドウで、[ 概要] を選択します。

  3. サブスクリプション ID とエンドポイントを書き留めます。

    Azure portal のサブスクリプション ID とエンドポイントのスクリーンショット。

Azure にサインインする

Azure AI Search サービスに接続する前に、Azure CLI を使用して、サービスを含むサブスクリプションにサインインします。 この手順では、次のセクションで要求を認証するために DefaultAzureCredential が使用する Microsoft Entra ID を確立します。

サインインするには、次の手順を行います。

  1. ローカル システムで、コマンド ライン ツールを開きます。

  2. ローカル環境でアクティブなテナントとサブスクリプションを確認します。

    az account show
    
  3. アクティブなサブスクリプションとテナントが検索サービスに対して有効でない場合は、変数を変更します。 サブスクリプション ID は、Azure portal の検索サービスの概要ページで確認できます。 サブスクリプションをクリックしてテナント ID を確認できます。 Azure portal では、テナント ID は 親管理グループと呼ばれます。 検索サービスに有効な値をメモし、次のコマンドを実行してローカル環境を更新します。

     az account set --subscription <your-subscription-id>
    
     az login --tenant <your-tenant-id>
    

このセクションでは、キーレス接続の基本的な Python パターンを示します。 包括的なガイダンスについては、「クイックスタート: Azure AI 検索でエージェント取得を使用する」などの特定のクイック スタートまたはチュートリアルを参照してください。

Visual Studio Code で Python ノートブックを使用して、Azure AI Search サービスに要求を送信できます。 要求認証の場合は、Azure ID ライブラリの DefaultAzureCredential クラスを使用します。

Python を使用して接続するには:

  1. ローカル システムで、Visual Studio Code を開きます。

  2. .ipynb ファイルを作成します。

  3. azure-identityライブラリとazure-search-documents ライブラリをインストールするコード セルを作成します。

    pip install azure-identity azure-search-documents
    
  4. 認証して検索サービスに接続する別のコード セルを作成します。

    from azure.identity import DefaultAzureCredential
    from azure.search.documents.indexes import SearchIndexClient
    
    service_endpoint = "PUT-YOUR-SEARCH-SERVICE-ENDPOINT-HERE"
    credential = DefaultAzureCredential()
    client = SearchIndexClient(endpoint=service_endpoint, credential=credential)
    
    # List existing indexes
    indexes = client.list_indexes()
    
    for index in indexes:
       index_dict = index.as_dict()
       print(json.dumps(index_dict, indent=2))
    
  5. service_endpointに、サービス情報の取得で取得した値を設定します。

  6. [ すべて実行] を選択して、両方のコード セルを実行します。

    出力には、検索サービス上の既存のインデックス (存在する場合) が一覧表示され、接続が成功したことが示されます。

401 エラーをトラブルシューティングする

401 エラーが発生した場合は、次のトラブルシューティング手順に従います。

  • 「ロールベースのアクセスを構成する」を再検討します。 検索サービスでは 、ロールベースのアクセス制御 または 両方 が有効になっている必要があります。 サブスクリプションまたはリソース グループ レベルのポリシーによって、ロールの割り当てがオーバーライドされる場合もあります。

  • Azureにサインインを再訪問する。 検索サービスを含むサブスクリプションにサインインする必要があります。

  • エンドポイント変数に囲まれた引用符があることを確認します。

  • 他のすべてが失敗した場合は、デバイスを再起動してキャッシュされたトークンを削除し、このクイックスタートの手順を繰り返します。その後、 Azure へのサインインから始めます。

このクイック スタートでは、ロールベースのアクセス制御 (RBAC) と Microsoft Entra ID を使用して、Azure AI Search サービスへのキーレス接続を確立します。 その後、Visual Studio Code で REST を使用してサービスを操作します。

キーレス接続では、詳細なアクセス許可と ID ベースの認証によってセキュリティが強化されます。 ハードコーディングされた API キーはお勧めしませんが、必要に応じて、 キーを使用した Azure AI Search への接続に関するページを参照してください。

前提条件

ロールベースのアクセスを構成する

このセクションでは、Azure AI Search サービスで RBAC を有効にし、検索オブジェクトの作成、読み込み、クエリに必要なロールを割り当てます。 これらの手順の詳細については、「 ロールを使用して Azure AI Search に接続する」を参照してください。

アクセスを構成するには:

  1. Azure portal にサインインし、検索サービスを選択します。

  2. 左側のウィンドウで、[ 設定] > キーを選択します

  3. クライアントを RBAC に移行する時間が必要な場合は、[ ロールベースのアクセス制御 ] または [両方 ] を選択します。

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

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

  5. [追加>][ロール割り当ての追加] の順に選択します。

    Azure portal でロールの割り当てを追加するためのドロップダウン メニューのスクリーンショット。

  6. Search Service 共同作成者ロールをユーザー アカウントまたはマネージド ID に割り当てます。

  7. 検索インデックス データ共同作成者のロールの割り当てを繰り返します。

サービス情報を取得する

このセクションでは、Azure AI Search サービスのサブスクリプション ID とエンドポイントを取得します。 サブスクリプションが 1 つしかない場合は、サブスクリプション ID をスキップし、エンドポイントのみを取得します。 これらの値は、このクイックスタートの残りのセクションで使用します。

サービス情報を取得するには:

  1. Azure portal にサインインし、検索サービスを選択します。

  2. 左側のウィンドウで、[ 概要] を選択します。

  3. サブスクリプション ID とエンドポイントを書き留めます。

    Azure portal のサブスクリプション ID とエンドポイントのスクリーンショット。

Azure にサインインする

Azure AI Search サービスに接続する前に、Azure CLI を使用して、サービスを含むサブスクリプションにサインインします。

  1. ローカル環境でアクティブなテナントとサブスクリプションを確認します。

    az account show
    
  2. アクティブなサブスクリプションとテナントが検索サービスに対して有効でない場合は、変数を変更します。 サブスクリプション ID は、Azure portal の検索サービスの概要ページで確認できます。 サブスクリプションをクリックしてテナント ID を確認できます。 Azure portal では、テナント ID は 親管理グループと呼ばれます。 検索サービスに有効な値をメモし、次のコマンドを実行してローカル環境を更新します。

     az account set --subscription <your-subscription-id>
    
     az login --tenant <your-tenant-id>
    

トークンを取得する

REST API 呼び出しには、Microsoft Entra ID トークンを含める必要があります。 このトークンを使用して、次のセクションで要求を認証します。

トークンを取得するには:

  1. ローカル システムで、コマンド ライン ツールを開きます。

  2. アクセス トークンを生成します。

    az account get-access-token --scope https://search.azure.com/.default --query accessToken --output tsv
    
  3. トークン出力をコピーします。

このセクションでは、キーレス接続の基本的な REST パターンを示します。 包括的なガイダンスについては、「クイックスタート: Azure AI 検索でエージェント取得を使用する」などの特定のクイック スタートまたはチュートリアルを参照してください。

Visual Studio Code の REST クライアント拡張機能を使用して、Azure AI Search サービスに要求を送信できます。 要求認証の場合は、前に生成した Microsoft Entra ID トークンを含む Authorization ヘッダーを含めます。

REST を使用して接続するには:

  1. ローカル システムで、Visual Studio Code を開きます。

  2. .restまたは.http ファイルを作成します。

  3. 次のプレースホルダーと要求をファイルに貼り付けます。

    @baseUrl = PUT-YOUR-SEARCH-SERVICE-ENDPOINT-HERE
    @token = PUT-YOUR-PERSONAL-IDENTITY-TOKEN-HERE
    
    ### List existing indexes
    GET {{baseUrl}}/indexes?api-version=2025-09-01  HTTP/1.1
       Content-Type: application/json
       Authorization: Bearer {{token}}
    
  4. @baseUrlを、「サービス情報の取得」で取得した値に置き換えます。

  5. @tokenGet トークンで取得した値に置き換えます。

  6. [ ### List existing indexesで、[ 要求の送信] を選択します。

    検索サービスへの接続が成功したことを示す HTTP/1.1 200 OK 応答を受け取る必要があります。

401 エラーをトラブルシューティングする

401 エラーが発生した場合は、次のトラブルシューティング手順に従います。

  • 「ロールベースのアクセスを構成する」を再検討します。 検索サービスでは 、ロールベースのアクセス制御 または 両方 が有効になっている必要があります。 サブスクリプションまたはリソース グループ レベルのポリシーによって、ロールの割り当てがオーバーライドされる場合もあります。

  • トークンを再取得します。 検索サービスを含むサブスクリプションにサインインする必要があります。

  • エンドポイント変数とトークン変数に周囲の引用符や余分なスペースがないことを確認します。

  • トークンに要求ヘッダーに @ 記号が含まれていないことを確認します。 たとえば、変数が @tokenされている場合、要求内の参照は {{token}}する必要があります。

  • それ以外のすべてが失敗した場合は、デバイスを再起動してキャッシュされたトークンを削除し、このクイックスタートの手順を繰り返します(トークンの 取得から始めます)。