はじめに
AIのAPIキーが流出して課金被害にあったという事例はみなさんも聞いたことがあると思います。
認証の設定ミスだったり、GitHubにあげてしまったり、盗まれたり、
経路は様々ですが、社内であってもAPIキーを渡すことはリスクとなっています。
今回、社内で複数のAIモデルのAPI利用を始めるにあたって、
Kongを利用することでAIのAPIキーを公開することなく、
メンバにAPIを利用してもらえる状態を作れたので、その方法をご紹介します。
概要
API GWにAI Gateway(AI Proxy Advanced)とKey Authenticationプラグインを設定します。
AI Proxy AdvancedにAIモデルのAPIキーを、
Key AuthenticationにRealmsを紐づけることで
Realmsに所属するCentrally-managed Consumersはユーザーごとに発行したKeyで認証するので、
API Keyをユーザーに渡すことなく、AIのAPI利用を実現出来ます。
ユーザーごとにUser Keyを発行するので、使用状況などもDashBoardsから確認出来るようになります。

設定手順
1.ユーザ作成
Realms
Kong Konnectでのユーザーにあたる機能はConsumersです。
そのConsumersをグルーピングするためにますはRealmsを作成します。

初回作成の場合は許可するCPはないと思うので、一旦defaultで存在するCPを選択します。
後述の手順で、対象のCPを再度設定をします。

Centrally-managed Consumers
Kong Konnect v3.10以上であれば、Centrally-managed Consumersを利用することが出来ます。
CPスコープのConsumersと違い、複数のCPを横断的に利用することが出来るので、ユーザーを一元的に管理することが出来ます。
UsernameはKong Konnectのアカウント名と同一が分かりやすいと思います。(今回はQiitaのアカウント名です)
先ほど作成したRealmsを設定しましょう。

作成完了後、Key authenticationタブから、そのユーザー専用のキーを作成します。

任意のカスタムキーを設定したい場合はUser generated keyを選択しますが、ランダム文字列でいい場合はそのまま作成します。
今回は社内の都合でBearer認証も一緒に行いたかったので、User generated keyで無理矢理Bearerという文字列ごとtokenとして登録します。

(Bearer認証を行う場合のみ)
tokenはランダム文字列生成とかで作成するかと思いますが、
仕様上、数字や記号でスタートすると認証エラーが発生してしまうので、
アルファベットから始まっているtokenを作成してください。
Ex) U7tI2rkrQbuTUehX3pB9YU4scWircPyx_d3d1ecbe
2.API Gateway作成
API Gateway
API GW作成についてはご存知の方も多いでしょう。
今回はAPIキーをラップしたいだけなので、
何も自分でたてる必要のないServerlessで作成します。

Key Authenticaion
プラグインからKey Authenticationを選択します。

Key Namesに任意の項目名と
additional settingsであるIdentity Realmsに先ほど作成したRealmsを設定します。
Bearer認証を行う場合は、Key NamesはAuthorizationと入力します。

3.AI Gateway作成
AI Gateway
AI Gateway nameとPathは任意で
Select gatewayで先ほど作成したAPI GWを選択します。

Load balancingの項目からAIモデルの設定を行います。
LLM ProviderやRoute typeは使用用途に合わせて設定してください。
Authentication from gateway to LLMではProvided by the AI gatewayを選択し、
入力欄にAIモデルのAPIキーを入力します。

4.Realms設定
Realms
忘れずにRealmsの設定に戻りましょう。
右端の︙からEditが出来ます。

暫定で設定していたdefaultを削除して、作成したAPI Gatewayを設定します。

5.実践
AI gatewayのOverviewのQuickstartにcurlで動かせる接続テスト用のコマンドがあるので、
これをベースに接続テストを行います。

Consumersで作成したKeyをheaderに設定します。
curl -X POST https://XXXXXXXX.com/openai \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' \
-d '{
"messages": [
{
"role": "user",
"content": "Who are you?"
}
],
"model": "gpt-5.4"
}'
同じ形式でGeminiも作ってみました。
AI Gatewayの実態はAPI Gatewayに設定するAI Proxy Advancedというプラグインなので、
1つのAPI Gatewayに対していくつも設定することが出来ます。
同じAPI Gatewayに設定するとドメイン部分は共通なので、設定したPathを変更することでLLM自体を切り替えることが出来ます。
curl -X POST https://XXXXXXXX.com/gemini \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' \
-d '{
"messages": [
{
"role": "user",
"content": "Who are you?"
}
],
"model": "gemini-3-flash-preview"
}'
Who are you?という質問に対して
OpenAIは一般的なLLMとしての回答ですが、
Geminiは人間的な自己紹介をしていますね。
無事にそれぞれ意図したモデルから回答が返ってきています。
Bearer認証ではないパターンだとこんな感じになります。
curl -X POST https://XXXXXXXX.com/openai \
-H 'Content-Type: application/json' \
-H 'apikey: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' \
-d '{
"messages": [
{
"role": "user",
"content": "Who are you?"
}
],
"model": "gpt-5.4"
}'
6.ダッシュボード作成
AI Gateway
リクエスト数やToken数などはAI GatewayのOverviewから確認することが出来ますが、
誰がどのくらい使ったかや、最近の使用量の変化などは表示されません。

Dashboards
詳細を確認するためにはダッシュボード作成が必要となりますが、
ObservabilityのDashboardsからCreate from templateで簡単に作成出来ます。
中央のAI gateway dashboardを選ぶとAI利用に即した情報を閲覧出来ます。

社内で既にAI gatewayを利用しているので、様々な情報が見えます。
リクエスト数やモデル毎の使用回数、Consumers,Model毎のToken量までテンプレートのデフォルトで確認出来ます。

おわりに
Rate Limitの設定を省いていたり、
Observablityの部分についてはDashboardsしか作っていなかったり、
色々省いた形の手順にはなりますが、Kong KonnectからUIのみでAIモデルのAPI Keyのラップが出来ました。
万が一、ユーザーに配布したKeyが流出したとしても、
誰がどのくらいtokenを使っているかも確認できるので、
異常な使用量のConsumersに紐づくKeyを削除するだけで、周囲への影響なく対応が出来ます。
30分ぐらいで設定できると思うので、設定してみてください!
皆様、Kongで安全なAI APIライフを!


