Azure Front Door 用の WAF で IP 制限規則を構成する

この記事では、Azure portal、Azure CLI、Azure PowerShell、または Azure Resource Manager テンプレートを使って、Azure Front Door 用の Web アプリケーション ファイアウォール (WAF) で IP 制限規則を構成する方法を示します。

IP アドレス ベースのアクセス制御規則は、Web アプリケーションへのアクセスの制御を可能にするカスタム WAF 規則です。 規則では、Classless Inter-Domain Routing (CIDR) 形式で IP アドレスまたは IP アドレス範囲の一覧が指定されます。

IP アドレスの一致には、RemoteAddrSocketAddr の 2 種類の一致変数があります。 RemoteAddr 変数は、通常は X-Forwarded-For 要求ヘッダーを介して送信される元のクライアントの IP です。 SocketAddr 変数は、WAF が認識するソース IP アドレスです。 ユーザーがプロキシの内側にある場合、SocketAddr は通常、プロキシ サーバーのアドレスです。

既定では、Web アプリケーションにはインターネットからアクセスできます。 既知の IP アドレスまたは IP アドレス範囲の一覧からクライアントへのアクセスを制限する場合、照合値として IP アドレスの一覧が含まれ、演算子を Not (否定が true) に、アクションを Block に設定する IP 照合ルールを作成する必要があります。 IP 制限規則が適用されると、この許可リストに含まれていないアドレスからの要求は、403 (禁止) 応答を受け取ります。

Azure portal で WAF ポリシーを構成する

Azure portalを使用して WAF ポリシーを構成するには、次の手順に従います。

前提条件

Azure Front Door プロファイルを作成するには、「クイック スタート: グローバル Web アプリケーションの高可用性を実現するフロント ドアを作成する」に記載されている手順に従ってください。

WAF ポリシーを作成する

  1. Azure portal で、 [リソースの作成] を選択します。 [検索サービスとマーケットプレース] 検索ボックスに「Web アプリケーション ファイアウォール」と入力し、Enter キーを押します。 [Azure Web Application Firewall (WAF)] を選択します。

  2. [作成] を選択します

  3. [Create a WAF policy]/(WAF ポリシーの作成/) ページで、次の値を使用して [基本] タブを完成させます。

    設定
    次に対するポリシー グローバル WAF (フロント ドア)。
    Front Door のレベル Azure Front Door のレベルに合わせて Premium または Standard を選択します。
    サブスクリプション サブスクリプションを選択します。
    Resource group Azure Front Door があるリソース グループを選択します。
    ポリシー名 ポリシーの名前を入力します。
    [ポリシーの状態] オンにします。
    ポリシー モード 防止。
  4. Next:[Next: Managed rules]/(次へ: マネージド ルール/) を選択します。

  5. [次へ: ポリシー設定] を選択します。

  6. [ポリシー設定] タブで、ブロックの応答本文に「You've been blocked!」と入力します。これにより、カスタム ルールが有効であることを確認できます。

  7. Next:[Next: Custom rules]/(次へ: カスタム ルール/) を選択します。

  8. [カスタム ルールの追加] を選択します。

  9. [カスタム ルールの追加] ページで、次のテスト値を使用してカスタム ルールを作成します。

    設定
    カスタム ルール名 FdWafCustRule
    Status Enabled
    規則の種類 一致したもの
    Priority 100
    一致の種類 IP アドレス
    一致変数 SocketAddr
    操作 [次の値を含まない]
    IP アドレスまたは範囲 10.10.10.0/24
    THEN トラフィックを拒否する

    カスタム規則

    [追加] を選択します。

  10. Next:[Next: Association]/(次へ: 関連付け/) を選択します。

  11. [Associate a Front door profile](Font Door プロファイルを関連付ける) を選択します。

  12. [Frontend profile](フロントエンド プロファイル) では、フロントエンド プロファイルを選択します。

  13. [ドメイン] では、ドメインを選択します。

  14. [追加] を選択します。

  15. [Review + create](レビュー + 作成) を選択します。

  16. ポリシー検証に合格した後、 [作成] を選択します。

WAF ポリシーをテストする

  1. WAF ポリシーのデプロイが完了したら、Azure Front Door フロントエンド ホスト名を参照します。

  2. カスタム ブロック メッセージが表示されています。

    WAF 規則のテスト

    Note

    プライベート IP アドレスは、必ずルールがトリガーされるように、カスタム ルールで意図的に使用されていました。 実際のデプロイでは、特定の状況に対して IP アドレスを使用して、許可および拒否ルールを作成します。

Azure CLI で WAF ポリシーを構成する

Azure CLI を使用して WAF ポリシーを構成するには、次の手順に従います。

[前提条件]

IP 制限ポリシーの構成を始める前に、ご自分の CLI 環境をセットアップして、Azure Front Door プロファイルを作成します。

Azure CLI 環境をセットアップする

  1. Azure CLI をインストールするか、Azure Cloud Shell を使用します。 Azure Cloud Shell は、Azure Portal 内で直接実行できる無料の Bash シェルです。 Azure CLI が事前にインストールされており、アカウントで使用できるように構成されています。 次の CLI コマンドの [使ってみる] ボタンを選択します。 次に、オープンされる Cloud Shell セッションに Azure アカウントでサインインします。 セッションが開始されたら、az extension add --name front-door を入力して Azure Front Door 拡張機能を追加します。
  2. Bash でローカルに CLI を使用している場合は、az login を使って Azure にサインインします。

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

Azure Front Door プロファイルを作成するには、「クイック スタート: グローバル Web アプリケーションの高可用性を実現するフロント ドアを作成する」に記載されている手順に従ってください。

WAF ポリシーを作成する

az network front-door waf-policy create コマンドを使用して WAF ポリシーを作成します。 次の例で、ポリシー名 IPAllowPolicyExampleCLI を一意のポリシー名に置き換えます。

az network front-door waf-policy create \
  --resource-group <resource-group-name> \
  --subscription <subscription ID> \
  --name IPAllowPolicyExampleCLI

カスタム IP アクセス制御規則を追加する

az network front-door waf-policy custom-rule create コマンドを使用して、作成した WAF ポリシーのカスタム IP アクセス制御規則を追加します。

次の例で以下を実行します。

  • IPAllowPolicyExampleCLI を、先ほど作成した一意のポリシーに置き換えます。
  • ip-address-range-1ip-address-range-2 を独自の範囲に置き換えます。

最初に、前の手順で作成したポリシーの IP 許可規則を作成します。

Note

規則には次の手順で追加される一致条件が必要なため、 --defer が必要です。

az network front-door waf-policy rule create \
  --name IPAllowListRule \
  --priority 1 \
  --rule-type MatchRule \
  --action Block \
  --resource-group <resource-group-name> \
  --policy-name IPAllowPolicyExampleCLI --defer

次に、一致条件を規則に追加します。

az network front-door waf-policy rule match-condition add \
--match-variable SocketAddr \
--operator IPMatch \
--values "ip-address-range-1" "ip-address-range-2" \
--negate true \
--name IPAllowListRule \
  --resource-group <resource-group-name> \
  --policy-name IPAllowPolicyExampleCLI

WAF ポリシーの ID を見つける

az network front-door waf-policy show コマンドを使用して、WAF ポリシーの ID を見つけます。 次の例の IPAllowPolicyExampleCLI を、先ほど作成した一意のポリシーに置き換えます。

az network front-door  waf-policy show \
  --resource-group <resource-group-name> \
  --name IPAllowPolicyExampleCLI

az network front-door update コマンドを使用して、Azure Front Door の WebApplicationFirewallPolicyLink ID をポリシー ID に設定します。 IPAllowPolicyExampleCLI を、前に作成した一意のポリシーに置き換えます。

az network front-door update \
  --set FrontendEndpoints[0].WebApplicationFirewallPolicyLink.id=/subscriptions/<subscription ID>/resourcegroups/resource-group-name/providers/Microsoft.Network/frontdoorwebapplicationfirewallpolicies/IPAllowPolicyExampleCLI \
  --name <frontdoor-name> \
  --resource-group <resource-group-name>

この例では、WAF ポリシーは FrontendEndpoints[0] に適用されます。 WAF ポリシーは、お使いのどのフロントエンドにもリンクできます。

Note

WAF ポリシーを Azure Front Door フロント エンドにリンクするには、WebApplicationFirewallPolicyLink プロパティを 1 回だけ設定する必要があります。 それ以降のポリシーの更新は、自動的にフロントエンドに適用されます。

Azure PowerShell を使用して WAF ポリシーを構成する

Azure PowerShell を使用して WAF ポリシーを構成するには、次の手順に従います。

[前提条件]

IP 制限ポリシーの構成を始める前に、PowerShell 環境をセットアップして、Azure Front Door プロファイルを作成します。

PowerShell 環境をセットアップする

Azure PowerShell には、Azure リソースを管理するために Azure Resource Manager モデルを使用する一連のコマンドレットが用意されています。

Azure PowerShell をローカル コンピューターにインストールして、すべての PowerShell セッションで使用することができます。 ページの手順に従い、Azure の資格情報を使用して PowerShell にサインインし、次に Az モジュールをインストールします。

  1. 次のコマンドを使用して Azure に接続し、次に対話型ダイアログを使用してサインインします。

    Connect-AzAccount
    
  2. Azure Front Door モジュールをインストールする前に、PowerShellGet モジュールの最新バージョンがインストールされていることを確認します。 次のコマンドを実行し、それから PowerShell を再度開きます。

    Install-Module PowerShellGet -Force -AllowClobber
    
  3. 次のコマンドを使用して Az.FrontDoor モジュールをインストールします。

    Install-Module -Name Az.FrontDoor
    

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

Azure Front Door プロファイルを作成するには、「クイック スタート:高可用性グローバル Web アプリケーション向けのフロント ドアを作成する」で説明されている手順に従ってください。

IP の一致条件を定義する

IP の一致条件を定義するには、New-AzFrontDoorWafMatchConditionObject コマンドを使います。 次の例で、ip-address-range-1ip-address-range-2 を独自の範囲に置き換えます。

$IPMatchCondition = New-AzFrontDoorWafMatchConditionObject `
-MatchVariable  SocketAddr `
-OperatorProperty IPMatch `
-MatchValue "ip-address-range-1", "ip-address-range-2"
-NegateCondition 1

カスタム IP 許可規則を作成する

アクションを定義して優先順位を設定するには、New-AzFrontDoorWafCustomRuleObject コマンドを使用します。 次の例では、リストに一致するクライアント IP からではない要求が禁止されます。

$IPAllowRule = New-AzFrontDoorWafCustomRuleObject `
-Name "IPAllowRule" `
-RuleType MatchRule `
-MatchCondition $IPMatchCondition `
-Action Block -Priority 1

WAF ポリシーを構成する

Get-AzResourceGroup を使用して、Azure Front Door プロファイルが含まれているリソース グループの名前を見つけます。 次に、New-AzFrontDoorWafPolicy を使用して、IP 規則で WAF ポリシーを構成します。

  $IPAllowPolicyExamplePS = New-AzFrontDoorWafPolicy `
    -Name "IPRestrictionExamplePS" `
    -resourceGroupName <resource-group-name> `
    -Customrule $IPAllowRule`
    -Mode Prevention `
    -EnabledState Enabled

ヒント

既存の WAF ポリシーの場合は、Update-AzFrontDoorWafPolicy を使用してポリシーを更新できます。

WAF ポリシー オブジェクトを既存のフロントエンド ホストにリンクして、Azure Front Door のプロパティを更新します。 最初に、Get-AzFrontDoor を使用して Azure Front Door オブジェクトを取得します。 次に、Set-AzFrontDoor コマンドを使用して、WebApplicationFirewallPolicyLink プロパティを、前のステップで作成した $IPAllowPolicyExamplePS のリソース ID に設定します。

  $FrontDoorObjectExample = Get-AzFrontDoor `
    -ResourceGroupName <resource-group-name> `
    -Name $frontDoorName
  $FrontDoorObjectExample[0].FrontendEndpoints[0].WebApplicationFirewallPolicyLink = $IPBlockPolicy.Id
  Set-AzFrontDoor -InputObject $FrontDoorObjectExample[0]

注意

この例では、WAF ポリシーは FrontendEndpoints[0] に適用されます。 WAF ポリシーは、お使いのどのフロントエンドにもリンクできます。 WAF ポリシーを Azure Front Door フロント エンドにリンクするには、WebApplicationFirewallPolicyLink プロパティを 1 回だけ設定する必要があります。 それ以降のポリシーの更新は、自動的にフロントエンドに適用されます。

Resource Manager テンプレートを使用して WAF ポリシーを構成する

カスタム IP 制限規則を使用して Azure Front Door ポリシーと WAF ポリシーを作成するテンプレートを表示するには、GitHub にアクセスしてください。

次のステップ

Azure Front Door プロファイルを作成する方法について学習します。