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

Alibaba Cloud Service Mesh:ASM エグレスゲートウェイを介した LLM サービスへのアクセス

最終更新日:Feb 28, 2026

本トピックでは、Service Mesh (ASM) エグレスゲートウェイを用いて外部の LLM サービスにアクセスする方法について説明します。この方法は、クライアントがクラスター内に実行されており、サイドカープロキシが注入済みであるシナリオに最適です。

前提条件

概要

エグレスゲートウェイを使用しない場合、クライアントからのリクエストはサイドカープロキシによってキャッチされ、その後 LLM サービスプロバイダーに転送されます。サイドカーはクライアントと同じ Pod 内にデプロイされるため、API キーの漏洩や不正アクセスといったセキュリティリスクが発生します。これらのリスクが懸念される場合は、エグレスゲートウェイの使用を強く推奨します。

ASM エグレスゲートウェイをリクエストパスに導入することで、セキュリティが強化されます。エグレスゲートウェイはクライアントとは独立してデプロイされるため、ACK クラスターの RBAC 機構を活用してゲートウェイ管理権限を制限できます。また、API キーは動的に注入され、認証および権限付与ポリシーがエグレスゲートウェイで適用されるため、ASM ゲートウェイが提供する包括的なセキュリティ機能を活用できます。

以下に、本トピックで使用するリクエストパスを示します。

image

ステップ 1:エグレスゲートウェイおよびゲートウェイの作成

  1. エグレスゲートウェイを作成し、ポート 80 を設定して相互 TLS (mTLS) 認証を有効化します。詳細については、「エグレスゲートウェイの作成」をご参照ください。

  2. 以下の内容で egress-gw.yaml という名前のファイルを作成します。

    apiVersion: networking.istio.io/v1beta1
    kind: Gateway
    metadata:
      name: egress-gw
      namespace: istio-system
    spec:
      selector:
        istio: egressgateway
      servers:
        - hosts:
            - '*'
          port:
            name: http
            number: 80
            protocol: HTTPS
          tls:
            mode: ISTIO_MUTUAL
  3. ASM インスタンスの kubeconfig を使用して、以下のコマンドを実行し、ゲートウェイを作成します。

    kubectl apply -f egress-gw.yaml

ステップ 2:ゲートウェイスコープの LLMProvider の作成

LLMProvider をエグレスゲートウェイにスコープ指定することで、API キーがエグレスゲートウェイのメモリ内でのみ格納され、クライアントからはアクセスできないようになります。

  1. 以下の内容で dashscope-qwen.yaml という名前のファイルを作成します。

    apiVersion: istio.alibabacloud.com/v1beta1
    kind: LLMProvider
    metadata:  
      name: dashscope-qwen
      namespace: istio-system
    spec:
      workloadSelector:
        labels:
          istio: egressgateway
      host: dashscope.aliyuncs.com
      path: /compatible-mode/v1/chat/completions
      configs:
        defaultConfig:
          openAIConfig:
            model: qwen1.5-72b-chat  # Qwen オープンソース大規模言語モデルシリーズ
            stream: false
            apiKey: ${API_KEY}
  2. 以下のコマンドを実行して、LLMProvider を作成します。

    kubectl apply -f dashscope-qwen.yaml

ステップ 3:LLMRoute の作成

  1. トラフィックをエグレスゲートウェイにルーティングするため、以下の内容で dashscope-route.yaml という名前のファイルを作成します。

    apiVersion: istio.alibabacloud.com/v1beta1
    kind: LLMRoute
    metadata:  
      name: dashscope-route
    spec:
      host: dashscope.aliyuncs.com
      gateways:
      - mesh
      - istio-system/egress-gw
      rules:
      - name: mesh-route # サイドカーが dashscope.aliyuncs.com へのリクエストを受信した後、リクエストをエグレスゲートウェイに転送します。
        matches:
        - gateways:
          - mesh
        backendRefs:
        - providerHost: istio-egressgateway.istio-system.svc.cluster.local
      - name: egress-gw-route # エグレスゲートウェイが dashscope.aliyuncs.com へのリクエストを受信した後、リクエストを実際のプロバイダーに転送します。
        matches:
        - gateways:
          - istio-system/egress-gw
        backendRefs:
        - providerHost: dashscope.aliyuncs.com
  2. 以下のコマンドを実行して、LLMRoute を作成します。

    kubectl apply -f dashscope-route.yaml

ステップ 4:構成のテスト

ACK クラスターの kubeconfig を使用して、以下のコマンドを実行し、構成をテストします。

kubectl exec deployment/sleep -it -- curl --location 'http://dashscope.aliyuncs.com' --header 'Content-Type: application/json' --data '{
    "messages": [
        {"role": "user", "content": "自分について教えてください"}
    ]
}'

期待される出力:

{"choices":[{"message":{"role":"assistant","content":"私は Alibaba Cloud が提供する大規模言語モデルであり、名前は Qwen です。主な機能は、ユーザーの質問に回答したり、情報を提供したり、会話をすることです。自然言語でユーザーの質問を理解し、それに応じた回答や提案を生成できます。また、新しい知識を学習し、さまざまなシナリオに応用することも可能です。何かご質問やお手伝いが必要な場合は、いつでもお知らせください。全力でサポートいたします。"},"finish_reason":"stop","index":0,"logprobs":null}],"object":"chat.completion","usage":{"prompt_tokens":3,"completion_tokens":72,"total_tokens":75},"created":1720680044,"system_fingerprint":null,"model":"qwen1.5-72b-chat","id":"chatcmpl-1c33b950-3220-9bfe-9066-xxxxxxxxxxxx"}

ステップ 5:権限付与ポリシーの構成

  1. 以下の内容で authpolicy.yaml という名前のファイルを作成します。

    apiVersion: security.istio.io/v1beta1
    kind: AuthorizationPolicy
    metadata:
      name: test
      namespace: istio-system
    spec:
      action: DENY
      rules:
      - from:
        - source:
            principals:
            - cluster.local/ns/default/sa/sleep
        to:
        - operation:
            hosts:
            - dashscope.aliyuncs.com
      selector:
        matchLabels:
          istio: egressgateway
  2. ASM の kubeconfig を使用して、以下のコマンドを実行し、権限付与ポリシーを適用します。

    kubectl apply -f authpolicy.yaml
  3. ステップ 4 のコマンドを再度実行します。

    期待される出力:

    RBAC: access denied

    リクエストは拒否されます。

説明

ASM ゲートウェイは、LLM リクエストに対しても通常の HTTP リクエストと同様のセキュリティ機能(権限付与ポリシー、JWT 認証、カスタム権限付与サービスなど)を提供します。これらのポリシーをエグレスゲートウェイで適用することで、アプリケーションのセキュリティをより効果的に強化できます。