Algolia の Search API を利用するに当たり必要となる API キーについてのまとめです。
Algolia を利用して検索やインデクシング等の操作を行う場合場合、原則としてリクエスト中で API キーを指定する必要があります。
例えばJavaScript などの API Client や InstantSearch.js といったライブラリを利用する場合、Client 利用時にAlgolia アプリケーションを識別するアプリケーションIDと合わせて検索専用APIキーを指定します。
1const searchClient = algoliasearch('YourApplicationID', 'YourSearchOnlyAPIKey');
APIキーの種別
Algolia アプリケーションを作ると、アカウントに対し権限の異なる複数のAPIキーが自動で生成されます。
これらのキーをPredefined API keys(事前定義済APIキー)と呼びます。
具体的には以下のキーが作成されます。
- Admin API key: すべての操作が可能な強い権限を持った API キー。
- Search-only API key: インデックスに対する検索リクエストが許可されたキー。
- Monitoring API key: Monitoring APIへのリクエストが許可されたAPIキー。
- Usage API key: Usage API へのリクエストが許可されたAPIキー。
- Analytics API key: Analytics API へのリクエストが許可されたAPI キー。Analytics APIが使えるアカウントでのみ発行されます。
これらのキーは Algolia Dashboard の 'API Keys' メニューから確認が可能です。
また、すべてのキーを一覧するときは 'All API Keys' タブを選択します。
キーの作成、リストアなどのメニューもこちらのタブ上に表示されます。
API キーの管理: 新規作成
事前定義 API キーに加えた新たな API キーの発行は Algolia dashboard および API から可能です。
作成時に ACL および API キーに対する制限(任意)を設定します。
ACL設定
キー生成時には利用する用途に合わせて ACL を付与する必要があります。
以下の権限を個別に付与することができます。
- Search (search): 検索を許可
- Browse Index (browse): ブラウズ操作により全レコードの取得を許可
- Add records (addObject): インデックスへのレコードの追加、更新を許可
- Delete records (deleteObject): レコードの削除を許可
- List indices (listIndexes): インデックス一覧の取得を許可
- Delete index (deleteIndex): インデックスの削除を許可
- Get index settings (settings): インデックス設定の取得を許可
- Set index settings (editSettings): インデックス設定の更新を許可
- Use analytics API (analytics): Analytics API を使用した情報取得を許可
- Use recommendation API (recommendation): Recommendation API への操作を許可
- Use usage API (usage): Usage API を使用したデータ取得を許可.
- Access logs (logs): 検索ログへのアクセスを許可
- Get unretrievable attributes (seeUnretrievableAttributes): unretrievableAttributes の取得を許可
API キーの制限
キーを作成する際、そのキーの利用に対し複数の条件で制限をかけることができます。
- インデックス: 検索可能なインデックスを制限する
- Rate limit: 1時間ごとに実行可能な API リクエスト数を制限する
- レコード数: 一度に取得可能なレコード数を制限する
- 有効期限: API キーの有効期限を設定する
- HTTPリファラ: API キー使用時の HTTP リファラを制限する
- クエリパラメータ: 使用可能なクエリパラメータを制限する
制限の利用例としては以下のようなものがあります。
- 特定の IP アドレスからの過度なアクセスを防止する
- クエリパラメータ中に facetFolters を指定し、でアクセス可能な検索結果を制限する
API キーの管理: Secured API キーの生成
Secured API キーは既存の検索専用 APIキーから派生して作成することができる API キーです。元になったAPIキーの権限、制限を継承する事ができます。モバイルアプリケーションなどへの一時的な権限付与を目的として使用することが推奨されます。
Secured API キーについては Algolia Dashboard からの管理はできず、生成する場合にはAPI経由での操作が必要です。
生成するときは API クライアントの generateSecuredApiKey
メソッドを使用します。
API キーの管理: 事前定義キーのローテーション
API キーの漏洩などの理由で事前定義 API キーを変更したい場合、Algolia Dashboard 上から API キーのRegenerate(再生成)が可能です。
API キーの管理: キーのリストア
一度削除してしまったキーについてもあとからリストアすることが可能です。
Algolia は最大1000件のキー情報を保持しており、リストアされた場合には当該キーに振られていた権限も一緒に復旧されます。
API キーに関する制限事項
- 作成可能な API キーの上限は 5000 となり、これを超えないように管理する必要があります。数千個を超えるようなユースケースであれば数の上限の無い Secured API keyの使用を検討してください。
ベストプラクティス
API キーの取り扱いについては 以下の点に注意してください。
- フロントエンドに埋め込むのは Search-only API キーのみにする
- Admin API key は絶対に公開しない
- できるだけ権限を制限したキーを使用する。例えばインデックス用にはWrite API Keyを作成して使用する
- API キーは年一度程度を目安に定期的にローテーションさせる
- モバイルアプリには API キーをハードコードせず、Secure API キーを利用する