クイックスタート: キーを使用せずに接続する
Azure AI 検索を Microsoft Entra ID 認証とロールベースのアクセス制御 (RBAC) を使用するように構成し、ローカル システムから API キーなしで、Jupyter Notebook または REST クライアントを使用して検索サービスと対話できるようにします。
API キーを使用して接続する他のクイックスタートを段階的に学習した方向けに、このクイックスタートでは、サンプル コードにハードコーディングされたキーを使用しないように、ID ベースの認証に切り替える方法について説明します。
前提条件
Azure サブスクリプション。 無料で作成できます。
Azure AI 検索。任意のリージョンまたはレベル。ただし、Azure AI 検索用にマネージド ID を構成するには、Basic 以上が必要です。
PowerShell や Bash などのコマンド ライン ツールと、Azure CLI。
手順 1: Azure サブスクリプションとテナント ID を取得する
この手順は、複数のサブスクリプションまたはテナントがある場合に必要です。
検索サービス用の Azure サブスクリプションとテナントを取得します。
Azure portal にサインインし、検索サービスに移動します。
[概要]>[Essentials] にあるサブスクリプション名と ID を確認します。
次のページで、サブスクリプション名を選択して、親管理グループ (テナント ID) を表示します。
これで、どのサブスクリプションとテナントの Azure AI 検索が使用されているかがわかります。 ローカル デバイスとコマンド プロンプトに切り替え、デバイス上のアクティブな Azure サブスクリプションとテナントを特定します。
az account show
アクティブなサブスクリプションとテナントが前の手順で取得した情報と異なる場合は、サブスクリプション ID を変更します。 次に、前の手順で見つけたテナント ID を使用して、Azure にサインインします。
az account set --subscription <your-subscription-id> az login --tenant <your-tenant-id>
手順 2: RBAC 用に Azure AI 検索を構成する
Azure portal にサインインし、Azure AI 検索サービスに移動します。
ロール ベースのアクセス制御 (RBAC) を有効にします。
[設定]>[キー] に移動します。
クライアントをロールベースのアクセス制御に移行する時間が必要な場合は、[ロールベースの制御] または [両方] を選択します。
[ロールベースの制御] を選択した場合は、次の手順にある "すべて" のロールを必ず自分自身に割り当ててください。そうしないと、Azure portal またはローカル クライアントを使用してタスクを完了できません。
Azure portal でロールを割り当てます。
お使いの検索サービスに移動します。
左側のナビゲーション ペインで [アクセス制御 (IAM)] を選択します。
[+ 追加]>[ロール割り当ての追加] の順に選択します。
ロール (Search Service 共同作成者、検索インデックス データ共同作成者、検索インデックス データ閲覧者) を選択し、Microsoft Entra ユーザーまたはグループ ID に割り当てます。
各ロールについて繰り返します。
Azure AI 検索でオブジェクトが作成、読み込み、クエリを実行するには、Search Service 共同作成者に加えて、検索インデックス データ共同作成者が必要です。 詳細については、ロールを使用する接続に関する記事を参照してください。
ヒント
後で認証エラーが発生した場合は、このセクションの設定を再確認します。 指定した API 設定をオーバーライドするポリシーが、サブスクリプションまたはリソース グループ レベルにある可能性があります。
手順 3: ローカル システムから接続する
Azure にまだサインインしていない場合は、次の手順を実行します。
az login
Python と Jupyter ノートブックの使用
Azure ID と Azure Search のライブラリをインストールします。
pip install azure-identity azure-search-documents
Azure AI 検索の認証を受けて接続します。
from azure.identity import DefaultAzureCredential from azure.search.documents import SearchClient service_endpoint = "https://<your-search-service-name>.search.windows.net" index_name = "hotels-sample-index" credential = DefaultAzureCredential() client = SearchClient(endpoint=service_endpoint, index_name=index_name, credential=credential) results = client.search("beach access") for result in results: print(result)
REST クライアントの使用
一部のクイックスタートとチュートリアルでは、REST 拡張機能を使用する Visual Studio Code などの REST クライアントを使用します。 Visual Studio Code から Azure AI 検索に接続する方法を次に示します。
「クイック スタート ベクトル検索」で説明されているファイルと同様に、.rest
または .http
ファイルが必要です。
アクセス トークンを生成します。
az account get-access-token --scope https://search.azure.com/.default --query accessToken --output tsv
ファイルの先頭で、その関係に使用する変数を設定し、完全な検索サービス エンドポイントと、前の手順で取得したアクセス トークンを貼り付けます。 それらの変数は、次の例のように見えるはずです。 値が引用符で囲まれていないことに注意してください。
@baseUrl = https://contoso.search.search.windows.net @token = <a long GUID>
REST 呼び出しで認可ベアラー トークンを指定します。
POST https://{{baseUrl}}/indexes/hotels-sample-index/docs/search?api-version=2024-07-01 HTTP/1.1 Content-type: application/json Authorization: Bearer {{token}} { "queryType": "simple", "search": "beach access", "filter": "", "select": "HotelName,Description,Category,Tags", "count": true }
401 エラーをトラブルシューティングする
アクティブなサブスクリプションとテナントを確認 (
az account show
) して、それが Search Service に対して有効であることを確認します。Azure portal 内で [Search Service] の [設定]>[キー] オプションを確認し、サービスが [両方] または [ロールベースのアクセス制御] に構成されていることを確認します。
REST クライアントのみの場合: ファイル内で指定されているトークンとエンドポイントを確認し、引用符の囲いまたは余分なスペースがないことを確認します。
それでもうまくいかない場合は、デバイスを再起動してキャッシュされたトークンを削除してから、このセクション内の手順を az login
から繰り返してください。
追加の設定
送信接続用のマネージド ID を構成します。
検索サービス用にシステム割り当てまたはユーザー割り当てマネージド ID を構成します。
ロールの割り当てを使用して、他の Azure リソースへのアクセスを認可します。
ネットワーク アクセスの構成:
- IP アドレスに基づいて Azure AI 検索への要求を受け入れるか拒否するために、インバウンド規則を設定します。