Azure Front Door 上の Azure Web アプリケーション ファイアウォールを使用して Azure OpenAI を保護する

Azure OpenAI を使用する企業が増え続ける中、Web アプリケーションに対するセキュリティ攻撃の数と複雑さは絶えず進化しています。 Azure OpenAI API をさまざまな Web アプリケーション攻撃から保護するには、強力なセキュリティ戦略が必要です。

Azure Web アプリケーション ファイアウォール (WAF) は、OWASP 上位 10 件のさまざまな Web 攻撃、共通脆弱性識別子 (CVE)、悪意のあるボット攻撃から Web アプリケーションと API を保護する Azure ネットワーク製品です。

この記事では、Azure Front Door 上の Web アプリケーション ファイアウォール (WAF) を使用して Azure OpenAI エンドポイントを保護する方法について説明します。

前提条件

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

gpt-35-turbo モデルを使用して Azure OpenAI インスタンスを作成する

まず、OpenAI インスタンスを作成します。

  1. Azure OpenAI インスタンスを作成し、Azure OpenAI Service リソースの作成とデプロイを使用して gpt-35-turbo モデルをデプロイします。

  2. Azure OpenAI エンドポイントと API キーを特定します。

    Azure OpenAI スタジオを開き、プレイグラウンドの下にあるチャットオプションを開きます。 コードの表示オプションを使用して、エンドポイントと API キーを表示します。 Azure AI Studio チャット プレイグラウンド を示すスクリーンショット。

    エンドポイントとキーのある Azure OpenAI サンプル コードを示すスクリーンショット。

  3. Postman を使用して Azure OpenAI 呼び出しを検証します。 前のステップで見つかった Azure OpenAPI エンドポイントと API キーの値を使用します。 POST 本文で次のコード行を使用します。

    {
    "model":"gpt-35-turbo",
    "messages": [
    {
    "role": "user",
    "content": "What is Azure OpenAI?"
    }
    ]
    }
    
    

    POST 本文を示すスクリーンショット。

  4. POST への応答として、200 OK を受け取るはずです: POST 200 OK を示すスクリーンショット。

    Azure OpenAI では、応答も GPT モデルを使用して生成されます。

Azure WAF を使用して Azure Front Door インスタンスを作成する

次に、Azure portal を使用して、Azure WAF で Azure Front Door インスタンスを作成します。

  1. 同じリソース グループに関連付けられた WAF セキュリティ ポリシーを使用して、Azure Front Door Premium 最適化レベルを作成します。 カスタム作成オプションを使用します。

    1. クイックスタート: Azure Front Door プロファイルを作成する - Azure portal
  2. エンドポイントとルートを追加します。

  3. 配信元のホスト名を追加する: 配信元のホスト名は "testazureopenai.openai.azure.com" です。

  4. WAF ポリシーを追加します。

Web アプリケーションと API の脆弱性から保護するように WAF ポリシーを構成する

防止モードで WAF ポリシーを有効にし、 Microsoft_DefaultRuleSet_2.1Microsoft_BotManagerRuleSet_1.0 が有効になっていることを確認します。

WAF ポリシーを示すスクリーンショット。

Azure Front Door エンドポイント経由で Azure OpenAI へのアクセスを確認する

次に、Azure Front Door エンドポイントを確認します。

  1. Front Door マネージャー から Azure Front Door エンドポイントを取得します。

    Azure Front Door エンドポイントを示すスクリーンショット。

  2. Postman を使用して、POST 要求を Azure Front Door エンドポイントに送信します。

    1. Postman POST 要求の Azure OpenAI エンドポイントを AFD エンドポイントに置き換えます。 最終 POST を示すスクリーンショット。

    Azure OpenAI では、応答も GPT モデルを使用して生成されます。

WAF によって OWASP 攻撃がブロックされるのを確認する

Azure OpenAI エンドポイントに対する OWASP 攻撃をシミュレートする POST 要求を送信します。 WAF は、403 禁止応答 コードを使用して呼び出しをブロックします。

WAF を使用して IP 制限規則を構成する

Azure OpenAI エンドポイントへのアクセスを必須 IP アドレスに制限するには、「Azure Front Door 用の WAF で IP 制限規則を構成する」を参照してください。

一般的な問題

次の項目は、 Azure OpenAI を Azure Front Door と Azure WAF と共に使用する際に発生する可能性がある一般的な問題です。

  • AZURE OpenAI エンドポイントに POST 要求を送信すると、401: アクセス拒否 メッセージが表示されます。

    POST 要求を 作成直後に Azure OpenAI エンドポイントに送信しようとすると、要求に正しい API キーがある場合でも、401: アクセス拒否 メッセージが表示されることがあります。 この問題は通常、直接的な介入なしにしばらくすると解決されます。

  • AZURE OpenAI エンドポイントに POST 要求を送信すると、401: アクセス拒否 メッセージが表示されます。

    Content-Type ヘッダー "text/plain" を使用して POST 要求を Azure OpenAI エンドポイントに送信しようとすると、このメッセージが表示されます。 Postman のヘッダー セクションで、必ず Content-Type ヘッダー を "application/json" に更新してください。