Azure PowerShell を使用して WAF ポリシーを構成する
Web アプリケーション ファイアウォール (WAF) ポリシーでは、要求が Azure Front Door に到着したときに必要な検査が定義されています。
この記事では、いくつかのカスタム ルールと有効にされた Azure マネージド デフォルト ルールセットで構成される WAF ポリシーを構成する方法を示します。
Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
前提条件
レート制限ポリシーの設定を開始する前に、PowerShell 環境を設定して Azure Front Door プロファイルを作成します。
PowerShell 環境をセットアップする
Azure PowerShell には、Azure リソースの管理に Azure Resource Manager モデルを使う一連のコマンドレットが用意されています。
Azure PowerShell をローカル コンピューターにインストールして、すべての PowerShell セッションで使用することができます。 ページの手順に従って Azure の資格情報を使ってサインインします。 次に、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 プロファイルを作成するには、「クイック スタート: Azure Front Door プロファイルの作成」で説明されている手順に従います。
HTTP パラメーターに基づくカスタム ルール
次の例では、New-AzFrontDoorWafMatchConditionObject を使用して 2 つの一致条件のあるカスタムルールを構成する方法を示します。 要求は参照元によって定義されている指定サイトからのもので、クエリ文字列に password
は含まれません。
$referer = New-AzFrontDoorWafMatchConditionObject -MatchVariable RequestHeader -OperatorProperty Equal -Selector "Referer" -MatchValue "www.mytrustedsites.com/referpage.html"
$password = New-AzFrontDoorWafMatchConditionObject -MatchVariable QueryString -OperatorProperty Contains -MatchValue "password"
$AllowFromTrustedSites = New-AzFrontDoorWafCustomRuleObject -Name "AllowFromTrustedSites" -RuleType MatchRule -MatchCondition $referer,$password -Action Allow -Priority 1
HTTP 要求メソッドに基づくカスタム ルール
New-AzFrontDoorWafCustomRuleObject を使用して、PUT メソッドをブロックする規則を作成します。
$put = New-AzFrontDoorWafMatchConditionObject -MatchVariable RequestMethod -OperatorProperty Equal -MatchValue PUT
$BlockPUT = New-AzFrontDoorWafCustomRuleObject -Name "BlockPUT" -RuleType MatchRule -MatchCondition $put -Action Block -Priority 2
サイズ制約に基づくカスタム規則を作成する
次の例では、Azure PowerShell を使用して、100 文字より長い URL が含まれる要求をブロックするルールを作成します。
$url = New-AzFrontDoorWafMatchConditionObject -MatchVariable RequestUri -OperatorProperty GreaterThanOrEqual -MatchValue 100
$URLOver100 = New-AzFrontDoorWafCustomRuleObject -Name "URLOver100" -RuleType MatchRule -MatchCondition $url -Action Block -Priority 3
マネージド デフォルト ルールセットの追加
次の例では、Azure PowerShell を使用して、マネージド デフォルト ルールセットを作成します。
$managedRules = New-AzFrontDoorWafManagedRuleObject -Type DefaultRuleSet -Version 1.0
セキュリティ ポリシーを構成する
Get-AzResourceGroup
を使用して、Azure Front Door プロファイルが含まれているリソース グループの名前を見つけます。 次に、New-AzFrontDoorWafPolicy を使用して、Azure Front Door プロファイルが含まれる指定のリソース グループに、前の手順で作成したルールによってセキュリティ ポリシーを構成します。
$myWAFPolicy=New-AzFrontDoorWafPolicy -Name $policyName -ResourceGroupName $resourceGroupName -Customrule $AllowFromTrustedSites,$BlockPUT,$URLOver100 -ManagedRule $managedRules -EnabledState Enabled -Mode Prevention
ポリシーを Azure Front Door のフロントエンド ホストにリンクする
セキュリティ ポリシー オブジェクトを既存の Azure Front Door フロントエンド ホストにリンクして、Azure Front Door のプロパティを更新します。 最初に、Get-AzFrontDoor を使用して Azure Front Door オブジェクトを取得します。
次に、Set-AZFrontDoor を使って前のステップで作成した $myWAFPolicy$
の resourceId
にフロントエンドの WebApplicationFirewallPolicyLink
プロパティを設定します。
Note
Azure Front Door Standard と Premium の場合は、「Get-AzFrontDoorCdnProfile」を使用する必要があります。
次の例では、お客様が Azure Front Door プロファイルを作成したときに、「クイック スタート: Azure Front Door の作成」で説明されている手順に従ったと想定して、myResourceGroupFD1
という名前のリソース グループを使用しています。 また、次の例では、$frontDoorName
を Azure Front Door プロファイルの名前に置き換えます。
$FrontDoorObjectExample = Get-AzFrontDoor `
-ResourceGroupName myResourceGroupFD1 `
-Name $frontDoorName
$FrontDoorObjectExample[0].FrontendEndpoints[0].WebApplicationFirewallPolicyLink = $myWAFPolicy.Id
Set-AzFrontDoor -InputObject $FrontDoorObjectExample[0]
Note
Azure Front Door フロントエンドにセキュリティ ポリシーをリンクさせるために必要な WebApplicationFirewallPolicyLink
プロパティを 1 度設定するだけです。 それ以降のポリシーの更新は、自動的にフロントエンドに適用されます。
次のステップ
- Azure Front Door の詳細を確認します。
- Azure Front Door 上の Azure Web Application Firewall について説明します。