すべてのプロダクト
Search
ドキュメントセンター

Server Load Balancer:拡張 ALB を使用したインバウンド API キー認証の実装

最終更新日:Mar 14, 2026

拡張 Application Load Balancer (ALB) は、インバウンド API キー認証をサポートしています。この機能により、リクエストがバックエンドの大規模言語モデル (LLM) サービスに転送される前に認証情報が検証され、不正なアクセスが拒否されて AI サービスが保護されます。

ソリューションアーキテクチャ

拡張 Application Load Balancer (ALB) インスタンスがクライアントからのリクエストを受信し、転送ルールが HTTP ヘッダーに基づいてこれらのリクエストを照合します。サービス拡張を通じて転送ルールに関連付けられた API キー認証コンポーネントは、転送アクションの前に実行されます。このコンポーネントは、HTTP リクエストヘッダーから API キーを抽出し、事前に設定された認証情報を照合します。キーが一致した場合、リクエストはバックエンドの AI サービスに転送されます。キーが一致しない場合、またはキーが提供されていない場合は、ALB が 401 応答を返してリクエストをブロックします。

  • 拡張 ALB インスタンス:負荷分散およびトラフィック転送機能を提供します。

  • AI 型サーバーグループ:バックエンドの LLM サービスに接続します。

  • HTTPS リスナー:クライアントからのリクエストを受信します。

  • 転送ルール:HTTP ヘッダー条件に基づいてリクエストを照合および転送します。

  • サービス拡張:API キー認証コンポーネントを使用して、インバウンド認証および転送制御を実装します。

image

範囲

  • 拡張 ALB のパブリックプレビューをご利用になれます。

  • 中国 (ウランチャブ) リージョンで仮想プライベートクラウド (VPC) を作成済みです。また、ウランチャブゾーン A およびウランチャブゾーン B で vSwitch を作成済みであり、vSwitch に対してパブリック SNAT を有効化しています。これにより、AI サーバーグループがパブリックの LLM サービスにアクセスできます。

  • Alibaba Cloud Model Studio を有効化し、API キーを取得済みです。

  • カスタムドメイン名を登録済みです。本トピックで説明する ALB インスタンスは中国 (ウランチャブ) リージョンにデプロイされているため、ドメイン名にはICP 登録が必要です。

  • カスタムドメイン名に対応するサーバー証明書を保有しています。証明書を Alibaba Cloud で購入していない場合は、Alibaba Cloud 証明書サービスにアップロードする必要があります。

操作手順

1. 拡張 ALB インスタンスの作成

  1. ALB コンソールにログインし、中国 (ウランチャブ) リージョンを選択して、ALB の作成 をクリックします。

  2. 購入ページで以下の設定を指定し、今すぐ購入 をクリックします。

    • リージョン には、中国 (ウランチャブ) を選択します。

    • インスタンスのネットワークタイプ には、パブリックネットワーク を選択します。

    • VPC および ゾーン:対象の VPC、ウランチャブゾーン A および ウランチャブゾーン B のチェックボックス、および対応する vSwitch を選択します。その後、パブリック IP アドレスを自動割り当て を選択します。

    • プロトコルバージョン には、IPv4 を選択します。

    • 機能バージョン (インスタンス料金) には、Extended Edition を選択します。

  3. 注文内容の確認 ページでインスタンスの構成を確認し、今すぐ有効化 をクリックします。

2. AI 型サーバーグループの作成

Alibaba Cloud Model Studio に接続するための AI 型サーバーグループを作成します。

  1. サーバーグループコンソールで、サーバーグループの作成 をクリックし、サーバーグループタイプAI サービス に設定し、sgp-ai-qwen のような名前を入力して、作成 をクリックします。

  2. サーバーグループが作成されました ダイアログボックスで、バックエンドサーバーの追加 をクリックします。

  3. Add AI Service ダイアログボックスで、以下の設定を指定し、OK をクリックします。

    • Model provider には、Alibaba Cloud Model Studio を選択します。

    • Endpoint:このフィールドは、Model provider を選択すると自動的に入力されます。

    • API Key:Alibaba Cloud Model Studio から取得した API キーを入力します。

3. リスナーの作成

  1. ALB コンソールで、対象のインスタンス ID をクリックして インスタンスの詳細 ページを開きます。リスナー タブで、リスナーの作成 をクリックします。

  2. リスナーの設定 ステップで、リスナープロトコルの選択HTTPS に、リスニングポート443 に設定し、次へ をクリックします。

  3. SSL 証明書の設定 ステップで、カスタムドメイン名に対応するサーバー証明書を選択し、次へ をクリックします。

  4. サーバーグループの選択 ステップで、AI サービス タイプおよび sgp-ai-qwen サーバーグループを選択します。その後、次へ をクリックします。

    選択したサーバーグループは、リスナーのデフォルト転送ルールに使用されます。このルールは、他の転送ルールに一致しないリクエストを処理します。必要に応じて、この設定を変更できます。
  5. 設定の確認 ステップで設定内容を確認し、送信 をクリックします。

4. サービス拡張の作成

サービス拡張を作成し、HTTP ヘッダーから API キーを抽出してインバウンド認証を適用する API キー認証コンポーネントを追加します。

  1. サービス拡張コンソールで、Create Service Extension をクリックします。その後、Service Extension Configuration セクションで、Extension name として ext-apikey-auth のような名前を入力します。

  2. Extension Type には、デフォルトのオプションである プラグイン を選択します。Component name には、API キー認証 を選択します。認証ポリシーを設定し、作成 をクリックします。

    • Credential Source:デフォルト値は Authorization:Bearer<token> です。

      <token> は、クライアントがリクエストの Authorization: Bearer の後に含める API キーのプレースホルダーです。ALB はこのフィールドから API キーを抽出して検証します。
    • Generation Method:デフォルトは System です。

    • 本トピックでは、Timeout および Processing policy のデフォルト値 (1000 および Stop) を使用します。必要に応じて、これらの値を調整できます。

    Credential Source パラメーターは、Authorization:Bearer<token> (デフォルト)、Custom HTTP headerCustom Query String、または Custom Cookie など、複数の方法をサポートしています。ビジネス要件に応じた方法を選択してください。
    System メソッドでは、API キー認証情報が自動的に生成されます。サービス拡張が作成された後、その Details ページで認証情報を表示およびコピーできます。あるいは、Custom メソッドを選択して、API キーを手動で入力することもできます。

5. 転送ルールの設定

リスナー上で転送ルールを作成し、HTTP ヘッダー条件を追加してサービス拡張を関連付けます。

  1. ALB コンソールで、対象のインスタンス ID をクリックして インスタンスの詳細 ページに移動します。このページで、リスナー タブをクリックします。その後、対象のリスナー ID をクリックして リスナーの詳細 ページに移動します。このページで、転送ルール タブをクリックします。

  2. 新しいルールの追加 をクリックし、以下の設定を指定して OK をクリックします。

    • 転送条件HTTP ヘッダー を選択し、キーk に、v に設定します。

      k: v は単なる例です。本番環境では、HTTP ヘッダーのキーと値のペアを必要に応じて設定するか、他のタイプの転送条件を使用してください。
    • サービス拡張 (任意):デフォルトで 既存のサービス拡張を使用 オプションが選択されています。ドロップダウンリストから ext-apikey-auth を選択します。

    • 転送操作転送先 を選択し、AI サービスのサーバーグループを sgp-ai-qwen に設定します。

転送ルールが作成された後、HTTP ヘッダー k: v を含むリクエストがこのルールに一致します。サービス拡張は、<token>Authorization HTTP リクエストヘッダーから抽出し、API キーとして認証に使用します。認証が成功した場合、リクエストは sgp-ai-qwen サーバーグループに転送されます。

6. 名前解決の設定

CNAME レコードを使用して、カスタムドメイン名を ALB インスタンスの DNS 名にポイントします。これにより、クライアントがカスタムドメイン名を介して ALB にアクセスできるようになります。

本トピックでは、Alibaba Cloud DNS を例として説明します。ドメイン名が Alibaba Cloud で登録されていない場合は、まずAlibaba Cloud DNS コンソールにドメイン名を追加する必要があります。

  1. ALB コンソールで、対象のインスタンスの ドメイン名 をコピーします。

  2. Alibaba Cloud DNS コンソールにログインします。対象のドメイン名について、解決設定 をクリックします。Actions 列の 解決設定 ページで、Add Record をクリックします。

  3. 以下の情報を使用して CNAME レコードを追加し、OK をクリックします。

    • Record Type には、CNAME を選択します。

    • Hostname:ドメイン名のプレフィックス(例:ai)を入力します。たとえば、ルートドメインが example.com の場合、完全なドメイン名は ai.example.com になります。

    • Query Source および TTL:デフォルト値を使用します。

    • Record Value:ALB インスタンスの DNS 名です。

  4. Change Resource Record Confirmation ダイアログボックスで詳細を確認し、OK をクリックします。

7. 検証テストの実行

curl コマンドを使用してリクエストを送信し、API キー認証機能を検証します。リクエストは以下の条件を満たす必要があります:

  • 転送ルールの照合ヘッダー:リクエストには、サービス拡張に関連付けられた転送ルールに一致させるための k: v ヘッダーを含める必要があります。

  • OpenAI 互換プロトコル:リクエスト URI は /v1/completions/v1/chat/completions、または /v1/embeddings である必要があり、全体のフォーマットが準拠している必要があります。

以下のテストコマンドに記載されているドメイン名 ai.example.com は例です。テストを実行する際は、ステップ 6 で設定した実際のドメイン名に置き換えてください。名前解決が有効になっていること を確認してください。

正しい認証情報を含むリクエスト

リクエストには Authorization: Bearer <token> ヘッダーフィールドが含まれており、<token> はステップ 4 でシステムによって生成された API キーです。

curl -v \
    -H "k: v" \
    -H "Authorization: Bearer <token>" \
    -H "Content-Type: application/json" \
    -d '{
        "model": "qwen-turbo",
        "messages": [
            {
                "role": "user", 
                "content": "Who are you"
            }
        ]
    }' \
    https://ai.example.com/v1/chat/completions

正常なリクエストでは、HTTP 200 ステータスコードおよび AI サービスからの応答が返されます:

{
    "choices": [
        {
            "message": {
                "role": "assistant",
                "content": "Hello! I am Qwen, a super-large language model developed by the Tongyi Lab of Alibaba Group..."
            },
            "finish_reason": "stop",
            "index": 0
        }
    ],
    "object": "chat.completion",
    "usage": {
        "prompt_tokens": 14,
        "completion_tokens": 53,
        "total_tokens": 67
    },
    "model": "qwen-turbo"
}

誤った認証情報または認証情報なしのリクエスト

誤った認証情報を含むリクエスト

リクエストには Authorization: Bearer <token> ヘッダーフィールドが含まれていますが、<token> は有効な認証情報ではありません。

curl -v \
    -H "k: v" \
    -H "Authorization: Bearer wrong-api-key" \
    -H "Content-Type: application/json" \
    -d '{
        "model": "qwen-turbo",
        "messages": [
            {
                "role": "user", 
                "content": "Who are you"
            }
        ]
    }' \
    https://ai.example.com/v1/chat/completions

認証情報なしのリクエスト

リクエストには Authorization: Bearer <token> ヘッダーフィールドが含まれていません。

curl -v \
    -H "k: v" \
    -H "Content-Type: application/json" \
    -d '{
        "model": "qwen-turbo",
        "messages": [
            {
                "role": "user", 
                "content": "Who are you"
            }
        ]
    }' \
    https://ai.example.com/v1/chat/completions

失敗したリクエストでは、HTTP 401 ステータスコードおよび認証失敗メッセージを含む応答ボディが返されます。

HTTP ヘッダー:

HTTP/2 401 
content-length: 29
content-type: text/plain
date: Wed, 21 Jan 2026 05:58:31 GMT

応答ボディ:

Client authentication failed

応答の説明:

  • HTTP ステータスコード401。このステータスコードは、身分認証の失敗によりリクエストが拒否されたことを示します。

  • 応答ボディ:プレーンテキストのメッセージ Client authentication failed。このメッセージは、クライアントの認証が失敗したことを示します。

関連情報

課金

  • 拡張 ALB:現在 パブリックプレビュー であり、無料でご利用いただけます。

  • パブリックネットワークアクセス料金:インターネット NAT ゲートウェイは、インスタンス料金および容量単位 (CU) 料金 を課金します。NAT ゲートウェイおよび拡張 ALB インスタンスにアタッチされた弾性 IP アドレス (EIP) には、個別の課金ルールがあります。EIP ごとに料金が発生します。

  • ドメイン名および名前解決料金:プロバイダーから徴収されるドメイン名料金に加えて、Alibaba Cloud で名前解決を設定する場合は、パブリック権威 DNS 解決料金 を支払う必要があります。

  • 証明書料金:Alibaba Cloud で証明書を購入する場合、または Alibaba Cloud に証明書をアップロードする場合は、サーバー証明書料金 を支払う必要があります。

  • Model Studio モデル料金:Alibaba Cloud Model Studio LLMAPI を呼び出す際に課金されます。

拡張 ALB をサポートするリージョン

エリア

リージョン

ゾーン

中国

中国 (ウランチャブ)

ゾーン A、ゾーン B、およびゾーン C

中国 (杭州)

ゾーン J およびゾーン K

アジア太平洋

シンガポール

ゾーン A、ゾーン B、およびゾーン C

ヨーロッパおよびアメリカ大陸

ドイツ (フランクフルト)

ゾーン A およびゾーン B

使用推奨事項

  • API キー管理:API キーを定期的にローテーションしてください。長期間にわたって同一の認証情報を使用しないでください。システム生成方式を使用する場合は、生成された API キーを安全に保管して漏洩を防止してください。

  • 認証情報のソース選択:認証情報のソースを選択してください。デフォルトの Authorization:Bearer<token> 方式は OpenAI 互換であり、ほとんどのシナリオに適しています。カスタム設定の場合は、Custom HTTP header または Custom Query String 方式を使用して、API キーが URL に露出することを防いでください。

よくある質問

エラー: upstream connect error or disconnect/reset before headers. reset reason: connection timeout

このエラーは、通常、バックエンドサービスに到達できないことを示します。ALB インスタンスが配置されている vSwitch に対して SNAT が正しく設定されていることを確認してください。これにより、ALB がパブリックの Model Studio LLM サービスにリクエストを転送できるようになります。

API キー認証が設定されているにもかかわらず、認証情報なしのリクエストが成功する

  • 転送条件がリクエストの形式と一致し、転送ルールの優先度が十分に高いことを確認してください。これにより、認証を必要とするリクエストが正しい転送ルールに一致します。

  • API キー認証コンポーネントがサービス拡張に正しく追加され、拡張が転送ルールに関連付けられていることを確認してください。