Azure AI Search では、検索サービスへの接続に対して、ID ベースの認証とキーベースの認証の両方がサポートされています。 API キーは、ランダムに生成された 52 個の数字と文字から成る一意の文字列です。
ソース コードでは、要求ヘッダーで API キーを直接指定できます。 または、 環境変数またはアプリ 設定としてプロジェクトに格納し、要求で変数を参照することもできます。
重要
検索サービスを作成する際には、キーベース認証が既定値となりますが、これが最も安全な選択肢というわけではありません。 これをロールベースのアクセスに置き換えることをお勧めします。
既定で有効
キーベースの認証は、新しい検索サービスの既定です。 検索サービス エンドポイントに対して行われた要求は、要求と API キーの両方が有効であり、検索サービスが要求で API キーを許可するように構成されている場合に受け入れられます。
Azure portal の [設定]>[キー]ページで認証を指定します。 API キーまたは両方のいずれかが、キーのサポートを提供します。
キーの種類
要求の認証には、次の 2 種類のキーが使用されます。
| タイプ | アクセス許可レベル | 作成方法 | 最大値 |
|---|---|---|---|
| [Admin] | すべてのコンテンツ操作に対するフル アクセス (読み取り/書き込み) | Azure portal で "プライマリ" および "セカンダリ" キーと呼ばれる 2 つの管理者キーがサービスの作成時に生成され、必要に応じてそれらを個別に生成し直すことができます。 | 2 1 |
| クエリ | 検索インデックスのドキュメント コレクションを対象とした読み取り専用アクセス | サービスで 1 つのクエリ キーが生成されます。 検索サービス管理者は、さらに必要に応じて作成できます。 | 50 |
1 2 つあることで、サービスへの継続的なアクセスに 1 つのキーを使用している間に、もう 1 つのキーをロールオーバーできます。
管理者キーとクエリ キーに見た目の違いはありません。 どちらのキーも、ランダムに生成された 52 個の英数字からなる文字列です。 アプリケーションで指定されているキーの種類がわからなくなった場合、Azure portal でキーの値を確認できます。
キーと役割のマッピング
この記事では、API キーについて説明します。 ただし、ロールベースのアクセスに移行する場合は、 Azure AI Search の組み込みロールにキーがどのようにマップされるかを理解すると便利です。
- 管理キーは、 Search Service 共同作成者 ロールと 検索インデックス データ共同作成者 ロールに対応します。
- クエリ キーは、 検索インデックス データ閲覧者 ロールに対応します。
キーを表示または管理するためのアクセス許可
API キーを表示および管理するためのアクセス許可は、ロールの割り当てによって伝達されます。 次のロールのメンバーは、キーの表示と再生成が可能です:
- [所有者]
- 投稿者
- Search Service サービス貢献者
- 管理者と共同管理者 (クラシック)
次のロールは API キーにアクセスできません。
- 閲覧者
- 検索インデックス データ共同作成者
- 検索インデックス データ閲覧者
既存のキーを見つける
API キーは、 Azure portal、 PowerShell、 Azure CLI、または REST API を使用して表示および管理できます。
Azure portal にサインインし、ご利用の検索サービスを探します。
左側のウィンドウで [設定]>[キー ]を選択して、管理者キーとクエリ キーを表示します。
接続でキーを使用する
API キーは、 インデックスや Search Service REST API で表されるその他の要求の作成やアクセスなど、データ プレーン (コンテンツ) 要求に使用されます。
コントロール プレーン (サービス) 要求には、API キーまたは ロール を使用できます。 API キーを使用する場合:
管理キーは、オブジェクトの作成、変更、または削除に使用されます。 管理キーは、 LIST インデックス や GET サービス統計などの GET オブジェクト定義とシステム情報にも使用されます。
通常、クエリを発行するクライアント アプリケーションにクエリ キーが配布されます。
要求ヘッダーに管理者キーを設定します。 URI または要求の本文で管理者キーを渡すことはできません。
インデックス作成要求での管理者 API キーの使用方法の例を次に示します。
@baseUrl=https://my-demo-search-service.search.windows.net
@adminApiKey=aaaabbbb-0000-cccc-1111-dddd2222eeee
### Create an index
POST {{baseUrl}}/indexes?api-version=2025-09-01 HTTP/1.1
Content-Type: application/json
api-key: {{adminApiKey}}
{
"name": "my-new-index",
"fields": [
{"name": "docId", "type": "Edm.String", "key": true, "filterable": true},
{"name": "Name", "type": "Edm.String", "searchable": true }
]
}
POST の要求ヘッダーまたは GET の URI にクエリ キーを設定します。 クエリ キーは、index/docs コレクションを対象とする操作 (ドキュメントの検索、オートコンプリート、提案、またはドキュメントの取得 (GET)) に使用されます。
ドキュメントの検索 (GET) 要求でのクエリ API キーの使用方法の例を次に示します。
### Query an index
GET /indexes/my-new-index/docs?search=*&api-version=2025-09-01&api-key={{queryApiKey}}
注
api-key などの機密データを要求 URI で渡すことは、セキュリティ上推奨されません。 このため、Azure AI Search はクエリ文字列内の api-key としてクエリ キーのみを受け入れます。 一般的なルールとして、api-key は要求ヘッダーとして渡すことをお勧めします。
クエリ キーを作成する
クエリ キーは、ドキュメント コレクションをターゲットとする操作のために、インデックス内のドキュメントへの読み取り専用アクセスに使用されます。 検索、フィルター、および推奨クエリは、いずれもクエリ キーを取得する操作です。 インデックス定義やインデクサーの状態など、システム データまたはオブジェクト定義を返す読み取り専用操作には、管理者キーが必要です。
クライアント アプリでアクセスと操作を制限することは、サービスで検索アセットを保護するために不可欠です。 クライアント アプリから発信されたクエリには、常に管理者キーではなくクエリ キーを使用します。
Azure portal にサインインし、ご利用の検索サービスを探します。
左側のウィンドウで、[設定]>[キー] を選択して API キーを表示します。
[クエリ キーの管理] で、サービス用に既に生成されているクエリ キーを使用するか、新しいクエリ キーを作成します。 既定のクエリ キーには名前はありませんが、生成された他のクエリ キーには、管理を容易にするために名前を付けることができます。
管理者キーを再生成する
ビジネス継続性のためにセカンダリ キーを使用しているときに、プライマリ キーをローテーションできるように、サービスごとに 2 つの管理者キーが作成されます。
Azure portal にサインインし、ご利用の検索サービスを探します。
次に、左側のペインで [設定]>[キー] を選択します。
セカンダリ キーをコピーします。
すべてのアプリケーションについて、セカンダリ キーを使用するように API キーの設定を更新します。
プライマリ キーを再生成します。
新しいプライマリ キーを使用するように、すべてのアプリケーションを更新します。
誤って両方のキーを同時に再生成すると、それらのキーを使用するすべてのクライアント要求が HTTP 403 Forbidden で失敗します。 ただし、コンテンツは削除されず、永続的にロックアウトされることはありません。
引き続き、Azure portal またはプログラムを使ってサービスにアクセスできます。 管理機能は、サービス API キーではなくサブスクリプション ID を使用して操作するため、自分の API キーがない場合でも使用できます。
ポータルまたは管理レイヤーを介して新しいキーを作成した後に、要求時にそのキーを指定すると、アクセスがコンテンツ (インデックス、インデクサー、データ ソース、シノニム マップ) に復元されます。
セキュリティで保護されたキー
ロールの割り当てを使用して、API キーへのアクセスを制限します。
カスタマー マネージド キー暗号化を使用して API キーを暗号化することはできません。 CMK で暗号化できるのは、検索サービス自体内の機密データ (データ ソース オブジェクト定義のインデックス コンテンツや接続文字列など) のみです。
Azure portal にサインインし、ご利用の検索サービスを探します。
左側のウィンドウで、[ アクセス制御 (IAM)] を選択し、[ロールの 割り当て ] タブを選択します。
[ロール] フィルターで、キーを表示または管理するアクセス許可を持つロール (所有者、共同作成者、Search Service 共同作成者) を選択します。 これらのロールに割り当てられた結果のセキュリティ プリンシパルは、検索サービスに対するキーのアクセス許可を持ちます。
予防措置として、[クラシック管理者] タブを確認して、管理者と共同管理者がアクセス権を持っているかどうかを確認します。
ベスト プラクティス
運用ワークロードの場合、Microsoft Entra ID とロールベースのアクセスに切り替えます。 また、API キーを引き続き使用する場合は、API キーに アクセスできるユーザーを 常に監視し、定期的に API キーを再生成 してください。
データ漏えいのリスクがない (サンプル データを使用する場合など) 場合や、ファイアウォールの背後で操作している場合にのみ、API キーを使用します。 API キーを公開すると、データと検索サービスの両方が不正使用のリスクにさらされます。
API キーを使用する場合は、それを Azure Key Vault などの別の場所に安全に保存します。 API キーは、コード内に直接含めないようにし、絶対に公開しないでください。
コード、サンプル、トレーニング資料は公開前に必ず確認し、API キーを誤って公開しないようにしてください。