この記事では、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 アドレス範囲の一覧が指定されます。
既定では、Web アプリケーションにはインターネットからアクセスできます。 既知の IP アドレスまたは IP アドレス範囲の一覧からクライアントへのアクセスを制限する場合、照合値として IP アドレスの一覧が含まれ、演算子を Not
(否定が true) に、アクションを Block
に設定する IP 照合ルールを作成する必要があります。 IP 制限規則が適用されると、この許可リストに含まれていないアドレスからの要求は、403 (禁止) 応答を受け取ります。
Azure portal を使用して WAF ポリシーを構成するには、次の手順に従います。
前提条件
Azure Front Door プロファイルを作成するには、「クイック スタート: グローバル Web アプリケーションの高可用性を実現するフロント ドアを作成する」に記載されている手順に従ってください。
WAF ポリシーを作成する
Azure portal で、 [リソースの作成] を選択します。 [検索サービスとマーケットプレース] 検索ボックスに「Web アプリケーション ファイアウォール」と入力し、Enter キーを押します。 [Azure Web Application Firewall (WAF)] を選択します。
[作成] を選択します
[Create a WAF policy]/(WAF ポリシーの作成/) ページで、次の値を使用して [基本] タブを完成させます。
設定 |
値 |
次に対するポリシー |
グローバル WAF (フロント ドア)。 |
Front Door のレベル |
Azure Front Door のレベルに合わせて Premium または Standard を選択します。 |
サブスクリプション |
サブスクリプションを選択します。 |
Resource group |
Azure Front Door があるリソース グループを選択します。 |
ポリシー名 |
ポリシーの名前を入力します。 |
[ポリシーの状態] |
選択済み |
ポリシー モード |
防止 |
[Next : Managed rules]\(次へ : マネージド ルール\) を選択します。
[次へ: ポリシー設定] を選択します。
[ポリシー設定] タブで、ブロックの応答本文に「You've been blocked!」と入力します。これにより、カスタム ルールが有効であることを確認できます。
Next:[Next: Custom rules]/(次へ: カスタム ルール/) を選択します。
[カスタム ルールの追加] を選択します。
[カスタム ルールの追加] ページで、次のテスト値を使用してカスタム ルールを作成します。
設定 |
値 |
カスタム ルール名 |
FdWafCustRule |
Status |
Enabled |
規則の種類 |
一致したもの |
Priority |
100 |
一致の種類 |
IP アドレス |
一致変数 |
SocketAddr |
操作 |
[次の値を含まない] |
IP アドレスまたは範囲 |
10.10.10.0/24 |
THEN |
トラフィックを拒否する |
[追加] を選択します。
Next:[Next: Association]/(次へ: 関連付け/) を選択します。
[Associate a Front door profile](Font Door プロファイルを関連付ける) を選択します。
[Frontend profile](フロントエンド プロファイル) では、フロントエンド プロファイルを選択します。
[ドメイン] では、ドメインを選択します。
[追加] を選択します。
[Review + create](レビュー + 作成) を選択します。
ポリシー検証に合格した後、 [作成] を選択します。
WAF ポリシーをテストする
WAF ポリシーのデプロイが完了したら、Azure Front Door フロントエンド ホスト名を参照します。
カスタム ブロック メッセージが表示されています。
Note
プライベート IP アドレスは、必ずルールがトリガーされるように、カスタム ルールで意図的に使用されていました。 実際のデプロイでは、特定の状況に対して IP アドレスを使用して、許可および拒否ルールを作成します。
Azure CLI を使用して WAF ポリシーを構成するには、次の手順に従います。
前提条件
IP 制限ポリシーの構成を始める前に、ご自分の CLI 環境をセットアップして、Azure Front Door プロファイルを作成します。
Azure CLI 環境をセットアップする
- 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 拡張機能を追加します。
- 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-1、ip-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
WAF ポリシーを Azure Front Door のフロントエンド ホストにリンクする
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 ポリシーを構成するには、次の手順に従います。
前提条件
IP 制限ポリシーの構成を始める前に、PowerShell 環境をセットアップして、Azure Front Door プロファイルを作成します。
PowerShell 環境をセットアップする
Azure PowerShell には、Azure リソースを管理するために Azure Resource Manager モデルを使用する一連のコマンドレットが用意されています。
Azure PowerShell をローカル コンピューターにインストールして、すべての PowerShell セッションで使用することができます。 ページの手順に従い、Azure の資格情報を使用して PowerShell にサインインし、次に Az PowerShell モジュールをインストールします。
次のコマンドを使用して Azure に接続し、次に対話型ダイアログを使用してサインインします。
Connect-AzAccount
Azure Front Door モジュールをインストールする前に、PowerShellGet モジュールの最新バージョンがインストールされていることを確認します。 次のコマンドを実行し、それから PowerShell を再度開きます。
Install-Module PowerShellGet -Force -AllowClobber
次のコマンドを使用して Az.FrontDoor モジュールをインストールします。
Install-Module -Name Az.FrontDoor
Azure Front Door プロファイルを作成する
Azure Front Door プロファイルを作成するには、「クイック スタート:高可用性グローバル Web アプリケーション向けのフロント ドアを作成する」で説明されている手順に従ってください。
IP の一致条件を定義する
IP の一致条件を定義するには、New-AzFrontDoorWafMatchConditionObject コマンドを使います。
次の例で、ip-address-range-1 と ip-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
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 ポリシーを Azure Front Door のフロントエンド ホストにリンクする
WAF ポリシー オブジェクトを既存のフロントエンド ホストにリンクして、Azure Front Door のプロパティを更新します。 最初に、Get-AzFrontDoor を使用して Azure Front Door オブジェクトを取得します。 次に、Set-AzFrontDoor コマンドを使用して、前の手順で作成した $IPAllowPolicyExamplePS
のリソース ID に WebApplicationFirewallPolicyLink
プロパティを設定します。
$FrontDoorObjectExample = Get-AzFrontDoor `
-ResourceGroupName <resource-group-name> `
-Name $frontDoorName
$FrontDoorObjectExample[0].FrontendEndpoints[0].WebApplicationFirewallPolicyLink = $IPBlockPolicy.Id
Set-AzFrontDoor -InputObject $FrontDoorObjectExample[0]
Note
この例では、WAF ポリシーが FrontendEndpoints[0]
に適用されます。 WAF ポリシーは、お使いのどのフロントエンドにもリンクできます。 WAF ポリシーを Azure Front Door のフロント エンドにリンクするのに必要なのは WebApplicationFirewallPolicyLink
プロパティを 1 度設定するだけです。 それ以降のポリシーの更新は、自動的にフロントエンドに適用されます。
カスタム IP 制限規則を使用して Azure Front Door ポリシーと WAF ポリシーを作成する Resource Manager テンプレートを表示するには、GitHub にアクセスしてください。