Share via


チュートリアル: Azure CLI を使用して Azure Front Door Standard/Premium (プレビュー) の配信ルールを追加およびカスタマイズする

Azure Front Door Standard/Premium (プレビュー) は、高速で安全な最新のクラウド CDN です。 Azure Front Door では Microsoft グローバル エッジ ネットワークを使用し、インテリジェントな脅威保護と統合されます。 Azure Front Door Standard では、コンテンツ配信に焦点を当てています。 Azure Front Door Premium では、広範なセキュリティ機能とカスタマイズが追加されます。 このチュートリアルでは、Azure Front Door プロファイルの作成に焦点を当て、Web アプリの動作をより細かく制御する配信ルールを追加します。

Note

このドキュメントは、Azure Front Door Standard/Premium (プレビュー) を対象としています。 Azure Front Door については、 Azure Front Door ドキュメントを参照してください。

このチュートリアルで学習する内容は次のとおりです。

  • Azure Front Door プロファイルを作成する。
  • Web アプリの 2 つのインスタンスを作成する。
  • 新しいセキュリティ ポリシーを作成する。
  • Web アプリへの接続を確認する。
  • ルール セットを作成する。
  • ルールを作成し、ルール セットに追加する。
  • ルールにアクションまたは条件を追加する。

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

前提条件

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。

  • CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。

    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

Azure Front Door を作成する

リソース グループを作成する

このクイックスタートでは、2 つのリソース グループが必要です。 1 つは米国中部、もう 1 つは米国東部に必要です。

az group create を実行して、リソース グループを作成します。

az group create \
    --name myRGFDCentral \
    --location centralus

az group create \
    --name myRGFDEast \
    --location eastus

Azure Front Door プロファイルを作成する

az afd profile create を実行して、Azure Front Door プロファイルを作成します。

az afd profile create \
    --profile-name contosoafd \
    --resource-group myRGFDCentral \
    --sku Premium_AzureFrontDoor \
    --subscription mysubscription

Web アプリの 2 つのインスタンスを作成する

このチュートリアルには、別々の Azure リージョンで実行される、2 つの Web アプリケーション インスタンスが必要です。 どちらの Web アプリケーション インスタンスも "アクティブ/アクティブ " モードで実行されるため、どちらでもトラフィックに対応することができます。

まだ Web アプリがない場合は、次のスクリプトを使用して 2 つのサンプル Web アプリを設定します。

App Service プランを作成する

Web アプリを作成する前に、2 つの App Service プランを、1 つは米国中部に、もう 1 つは米国東部に作成する必要があります。

az appservice plan create を実行して、App Service プランを作成します。

az appservice plan create \
    --name myAppServicePlanCentralUS \
    --resource-group myRGFDCentral

az appservice plan create \
    --name myAppServicePlanEastUS \
    --resource-group myRGFDEast

Web アプリを作成する

az webapp create を実行して、前の手順の各 App Service プランに Web アプリを作成します。 Web アプリ名は、グローバルに一意である必要があります。

az webapp list-runtimes を実行して、Web アプリ用の組み込みスタックの一覧を表示します。

az webapp create \
    --name WebAppContoso-001 \
    --resource-group myRGFDCentral \
    --plan myAppServicePlanCentralUS \
    --runtime "DOTNETCORE|2.1"

az webapp create \
    --name WebAppContoso-002 \
    --resource-group myRGFDEast \
    --plan myAppServicePlanEastUS \
    --runtime "DOTNETCORE|2.1"

次のステップで Front Door をデプロイするときにバックエンド アドレスを定義できるように、各 Web アプリの既定のホスト名をメモしておきます。

エンドポイントの追加

az afd endpoint create を実行して、プロファイルにエンドポイントを作成します。 作成エクスペリエンスを終了したら、プロファイルに複数のエンドポイントを作成できます。

az afd endpoint create \
    --resource-group myRGFDCentral \
    --endpoint-name contoso-frontend \
    --profile-name contosoafd \
    --origin-response-timeout-seconds 60 \
    --enabled-state Enabled

配信元グループを作成する

az afd origin-group create を実行して、2 つの Web アプリを含む配信元グループを作成します。

az afd origin-group create \
    --resource-group myRGFDCentral \
    --origin-group-name og1 \
    --profile-name contosoafd \
    --probe-request-type GET \
    --probe-protocol Http \
    --probe-interval-in-seconds 120 \
    --probe-path /test1/azure.txt \
    --sample-size 4 \
    --successful-samples-required 3 \
    --additional-latency-in-milliseconds 50

配信元をグループに追加する

az afd origin create を実行して、配信元を配信元グループに追加します。

az afd origin create \
    --resource-group myRGFDCentral \
    --host-name webappcontoso-1.azurewebsites.net
    --profile-name contosoafd \
    --origin-group-name og1 \
    --origin-name contoso1 \
    --origin-host-header webappcontoso-1.azurewebsites.net \
    --priority 1 \
    --weight 1000 \
    --enabled-state Enabled \
    --http-port 80 \
    --https-port 443

この手順を繰り返し、2 つ目の配信元を追加します。

az afd origin create \
    --resource-group myRGFDCentral \
    --host-name webappcontoso-2.azurewebsites.net
    --profile-name contosoafd \
    --origin-group-name og1 \
    --origin-name contoso2 \
    --origin-host-header webappcontoso-2.azurewebsites.net \
    --priority 1 \
    --weight 1000 \
    --enabled-state Enabled \
    --http-port 80 \
    --https-port 443

ルートを追加する

az afd route create を実行して、フロントエンド エンドポイントを配信元グループにマッピングします。 このルートは、エンドポイントからの要求を og1 に転送します。

az afd route create \
    --resource-group myRGFDCentral \
    --endpoint-name contoso-frontend \
    --profile-name contosoafd \
    --route-name route1 \
    --https-redirect Enabled \
    --origin-group og1 \
    --supported-protocols Https \
    --link-to-default-domain Enabled \
    --forwarding-protocol MatchRequest

新しいセキュリティ ポリシーを作成する

WAF ポリシーを作成する

az network front-door waf-policy create を実行して、リソース グループの 1 つについての WAF ポリシーを作成します。

Front Door 用の新しい WAF ポリシーを作成します。 この例では、有効化され、保護モードになるポリシーを作成します。

az network front-door waf-policy create
    --name contosoWAF /
    --resource-group myRGFDCentral /
    --sku Premium_AzureFrontDoor
    --disabled false /
    --mode Prevention

注意

Detection モードを選択した場合、WAF は要求をブロックしません。

セキュリティ ポリシーを作成する

az afd security-policy create を実行して、WAF ポリシーをエンドポイントの既定のドメインに適用します。

az afd security-policy create \
    --resource-group myRGFDCentral \
    --profile-name contosoafd \
    --security-policy-name contososecurity \
    --domains /subscriptions/mysubscription/resourcegroups/myRGFDCentral/providers/Microsoft.Cdn/profiles/contosoafd/afdEndpoints/contoso-frontend.z01.azurefd.net \
    --waf-policy /subscriptions/mysubscription/resourcegroups/myRGFDCentral/providers/Microsoft.Network/frontdoorwebapplicationfirewallpolicies/contosoWAF

Azure Front Door を確認する

Azure Front Door Standard/Premium プロファイルを作成する際、グローバルに構成がデプロイされるまでに数分かかります。 完了したら、作成したフロントエンド ホストにアクセスできます。 ブラウザーで contoso-frontend.z01.azurefd.net にアクセスしてください。 要求は、配信元グループ内で指定したサーバーから最も近いサーバーに自動的にルーティングされます。

即時グローバル フェールオーバーをテストするには、次の手順を使用します。

  1. 前述したように、ブラウザーを開き、フロントエンド アドレス (contoso-frontend.azurefd.net) にアクセスします。

  2. Azure portal で、App Services を検索して選択します。 下へスクロールして、いずれかの Web アプリを探します (この例では WebAppContoso-1)。

  3. Web アプリを選択し、 [停止][はい] の順に選択して確認します。

  4. ブラウザーを更新します。 同じ情報ページが表示されるはずです。

    ヒント

    これらの操作では、わずかな待ち時間が発生します。 場合によっては、再度、最新の情報に更新する必要があります。

  5. もう一方の Web アプリを探し、同様に停止します。

  6. ブラウザーを更新します。 今回はエラー メッセージが表示されます。

    Both instances of the web app stopped

ルール セットを作成する

ルール セットを作成して、エッジでの HTTP 要求の処理方法をカスタマイズします。 ルール セットに追加された配信ルールにより、Web アプリケーションの動作をより細かく制御できます。 az afd rule-set create を実行して、Azure Front Door プロファイルにルール セットを作成します。

az afd rule-set create \
    --profile-name contosoafd \
    --resource-group myRGFDCentral \
    --rule-set-name contosorules

配信ルールを作成してルール セットに追加する

ルール セット内に新しい配信ルールを作成します。 az afd rule create を実行して、ルール セット内に新しい配信ルールを作成します。 この例では、http から https へのリダイレクトのルールを作成します。

az afd rule create \
    --resource-group myRGFDCentral \
    --rule-set-name contosorules \
    --profile-name contosoafd \
    --order 1 \
    --match-variable RequestScheme \
    --operator Equal \
    --match-values HTTP \
    --rule-name "redirect" \
    --action-name "UrlRedirect" \
    --redirect-protocol Https \
    --redirect-type Moved

配信ルールにアクションまたは条件を追加する

新しい配信ルールをさらにカスタマイズする必要がある場合があります。 作成後に、必要に応じてアクションまたは条件を追加できます。 az afd rule action add または az afd rule condition add を実行して、ルールを更新します。

アクションを追加する

az afd rule action add \
    --resource-group myRGFDCentral \
    --rule-set-name contosorules \
    --profile-name contosoafd \
    --rule-name redirect \
    --action-name "CacheExpiration" \
    --cache-behavior BypassCache

条件を追加する

az afd rule condition add \
    --resource-group myRGFDCentral \
    --rule-set-name contosorules \
    --profile-name contosoafd \
    --rule-name redirect \
    --match-variable RemoteAddress \
    --operator GeoMatch \
    --match-values "TH"

リソースをクリーンアップする

Front Door のリソースが不要な場合は、両方のリソース グループを削除します。 リソース グループを削除すると、Front Door とそのすべての関連リソースも削除されます。

az group delete を実行します。

az group delete \
    --name myRGFDCentral

az group delete \
    --name myRGFDEast