社内アプリケーションに対してAPIファーストのアプローチを採用する企業が増えており、Webアプリケーションに対するセキュリティ攻撃の数と複雑さは絶えず進化しています。 この状況では、企業はさまざまなWebアプリケーション攻撃からAPIを保護するための強力なセキュリティ戦略を採用する必要があります。
Azure Web Application Firewall (WAF) は、さまざまな OWASP トップ 10 Web 攻撃、CVE、悪意のあるボット攻撃から API を保護する Azure ネットワーク製品です。
この記事では、Azure Front Door で Azure Web Application Firewall を使用して、Azure API Management でホストされている API を保護する方法について説明します
APIM インスタンスを作成し、モック API 応答を生成する API を APIM で公開します
APIM インスタンスを作成します。 詳細については、「 クイック スタート: Azure portal を使用して新しい Azure API Management サービス インスタンスを作成する」を参照してください。
次のスクリーンショットは、 contoso-afd-apim-resource という APIM インスタンスが作成されたことを示しています。 API Management サービスを作成してアクティブ化するには、最大 30 分から 40 分かかる場合があります。
API を作成し、モック API 応答を生成します。 詳細については、「 チュートリアル: モック API 応答」を参照してください。
上記のチュートリアルで示した Test API のAPIの名前を Book APIに置き換えてください。
Book API は、API の URL パスとして
_/test_
の GET 操作を行います。 API の応答は 200 OK に設定され、コンテンツ タイプは application/json、テキストは{“Book”:” $100”}
に設定されていることがわかります。[API 設定] タブの [サブスクリプションが必要 ] チェック ボックスの選択を解除し、[ 保存] を選択します。
APIM インターフェースからのモックレスポンスをテストします。 200 OK の応答を受け取る必要があります。
これで、Book API が作成されました。 この URL の呼び出しが成功すると、 200 OK 応答が返され、書籍の価格が $100 として返されます。
APIM でホストされる API を配信元として Azure Front Door Premium インスタンスを作成する
Microsoft が管理する既定のルール セットは、 OWASP コア ルール セット に基づいており、Microsoft 脅威インテリジェンス ルールが含まれています。
注
マネージド ルール セットは、Azure Front Door Standard SKU では使用できません。 さまざまな SKU の詳細については、「 Azure Front Door レベルの比較」を参照してください。
「簡易作成オプション」で説明されている手順を使用して、同じリソース グループ内に WAF セキュリティ ポリシーが関連付けられた Azure Front Door Premium プロファイルを作成します。
クイックスタート: Azure Front Door プロファイルを作成する - Azure ポータル
Azure Front Door プロファイルを作成するときは、次の設定を使用します。
- [名前]: myAzureFrontDoor
- エンドポイント名: bookfrontdoor
- オリジンタイプ: API Management
- 配信元のホスト名: contoso-afd-apim-resource.azure-api.net(contoso-afd-apim-resource)
- WAF ポリシー: bookwafpolicy という名前の新しい WAF ポリシーを作成します。
その他の設定はすべてデフォルト値のままです。
Azure Web Application Firewall を防止モードで有効にする
Azure WAF ポリシーとして "bookwafpolicy" を選択し、ポリシーの概要タブで [ポリシー モード] が [防止] に設定されていることを確認します
Azure WAF 検出モードは、ポリシーのテストと検証に使用されます。 検出では通話はブロックされませんが、検出されたすべての脅威がログに記録されますが、攻撃が検出された場合、防止モードでは通話がブロックされます。 通常は、防止モードに切り替える前にシナリオをテストします。 この演習では、予防モードに切り替えます。
Azure Front Door の Azure Web アプリケーション ファイアウォール には、さまざまな WAF ポリシー モードに関する詳細情報があります。
Azure Front Door 経由の APIM アクセスのみを制限する
Front Door 経由でルーティングされる要求には、Front Door の構成に固有のヘッダーが含まれます。 check-header ポリシーを受信 APIM ポリシーとして構成し、API Management に送信される X-Azure-FDID HTTP 要求ヘッダーの一意の値に基づいて受信要求をフィルター処理できます。 このヘッダー値は Azure Front Door ID で、AFD の [概要] ページで確認できます。
AFD の概要ページから Front Door ID をコピーします。
APIM API ページにアクセスし、Book API を選択し、[ デザイン ] と [すべての操作] を選択します。 [受信ポリシー] で、 [+ ポリシーの追加] を選択します。
[その他のポリシー] を選択します
「スニペットを表示」を選択し、「 HTTPヘッダーを確認」を選択します。
HTTP ヘッダー
X-Azure-FDID
の受信ポリシーに次のコードを追加します。{FrontDoorId}
を、このセクションの最初のステップでコピーしたAFD IDに置き換えます。<check-header name="X-Azure-FDID" failed-check-httpcode="403" failed-check-error-message="Invalid request" ignore-case="false"> <value>{FrontDoorId}</value> </check-header>
保存 を選択します。
この時点で、APIM アクセスは Azure Front Door エンドポイントのみに制限されています。
API 呼び出しが Azure Front Door 経由でルーティングされ、Azure Web Application Firewall によって保護されていることを確認します
新しく作成した Azure Front Door エンドポイントを Front Door マネージャーから取得します。
配信元グループを確認し、配信元のホスト名が contoso-afd-apim-resource.azure-api.net であることを確認します。 この手順では、APIM インスタンスが新しく構成された Azure Front Door Premium の配信元であることを確認します。
「セキュリティ・ポリシー」セクションで、WAFポリシーbookwafpolicyがプロビジョニングされていることを確認します。
「bookwafpolicy」を選択し、bookwafpolicyに管理対象ルールがプロビジョニングされていることを確認します。 最新バージョンの Microsoft_DefaultRueSet U と Microsoft_BotManagerRuleSet がプロビジョニングされ、OWASP Top 10 の脆弱性や悪意のあるボット攻撃からオリジンが保護されます。
この時点で、エンドツーエンドの呼び出しが設定され、API は Azure Web Application Firewall によって保護されます。
設定を確認します
ブラウザーから Azure Front Door エンドポイントを使用して API にアクセスします。 API は次の応答を返す必要があります。
APIM がインターネット経由で直接アクセスできず、AFD 経由でのみアクセス可能であることを確認します。
次に、OWASP Top 10攻撃またはボット攻撃を介してAFDエンドポイントURLを呼び出そうとすると、
REQUEST IS BLOCKED
メッセージが表示され、リクエストはブロックされます。 この API は、Azure Web Application Firewall によって Web 攻撃から保護されています。