Azure DDoS Protectionのカスタムポリシーを利用すると、Standard Load BalancerのフロントエンドIPに対して、TCP・UDP・TCP SYNごとのDDoS検出しきい値を固定値で設定できます。
設定できる範囲は50,000~2,000,000 packets per second(pps)です。固定値を設定したプロトコルでは適応型の自動調整が停止しますが、ルールを設定していないプロトコルでは従来どおり自動調整が続きます。
ただし、2026年8月時点ではパブリックプレビューです。対象はStandard Load Balancerの受信トラフィックに限られ、利用できないリージョンもあります。まず通常時のパケットレートを確認し、必要なプロトコルだけを段階的に固定化するのが安全です。
Azure DDoS Protectionカスタムポリシーのしきい値と適用範囲
Azure DDoS Protectionは通常、保護対象リソースのトラフィック傾向を学習し、DDoS緩和を開始する検出しきい値を自動調整します。
カスタムポリシーは、この自動調整を全面的に置き換えるものではありません。特定のプロトコルだけを固定値に変更し、残りを適応型の自動調整に任せるための機能です。(Microsoft Learn)
| 項目 | パブリックプレビュー時点の仕様 |
|---|---|
| 適用対象 | Standard Load BalancerのフロントエンドIP構成 |
| トラフィック方向 | 受信のみ |
| 対応トラフィック | TCP、UDP、TCP SYN |
| しきい値 | 50,000~2,000,000pps |
| 設定単位 | プロトコルごとの固定値 |
| 設定済みプロトコル | 適応型自動調整を停止し、固定値を使用 |
| 未設定プロトコル | 適応型自動調整を継続 |
| 管理方法 | Azure portal、Azure CLI、ARMテンプレート、REST API |
| 提供状態 | パブリックプレビュー |
ここで設定する値は、Standard Load Balancerの帯域上限や流量制限ではありません。Azure DDoS ProtectionがDDoS緩和を開始するための検出しきい値です。
たとえばTCPを500,000ppsに設定しても、TCPトラフィックを500,000ppsで遮断するレートリミットになるわけではありません。受信TCPトラフィックに対するDDoS検出と緩和開始の基準として使われます。
カスタムしきい値を設定すべきケース
Azureの適応型自動調整は、多くの一般的なワークロードに適しています。通常時のパケットレートや繁忙期のピークを把握できていない場合は、無理に固定値へ変更しない方が安全です。
カスタムポリシーは、次のようにトラフィック特性を予測できるシステムで効果を発揮します。(Microsoft Learn)
| ワークロードの状況 | 推奨する考え方 |
|---|---|
| 通常トラフィックの変動が大きい | 適応型自動調整を維持する |
| キャンペーンや発売日にアクセスが急増する | 想定ピークを含めて固定値を検討する |
| 高パケットレートが長時間続く | 実測値を基に高めのしきい値を設定する |
| UDPだけ特殊な通信特性がある | UDPだけ固定し、TCPとTCP SYNは自動調整を残す |
| 接続開始時のSYNだけ急増する | TCP SYNのみ固定値を検討する |
| 通常時のppsを計測していない | 設定前にAzure Monitorで基準値を取得する |
重要なのは、TCP・UDP・TCP SYNをすべて固定値にすることではありません。自動調整では運用しにくいプロトコルだけを固定するのが基本です。
プロトコルごとの考え方
| プロトコル | 主な調整対象 | 想定される利用例 |
|---|---|---|
| TCP | 受信TCPパケット全体 | Web以外も含むTCPベースの高トラフィックサービス |
| UDP | 受信UDPパケット | ゲーム、リアルタイム通信、独自UDPサービス |
| TCP SYN | TCP接続開始時のSYNパケット | 大量の新規接続やSYN floodへの調整 |
TCPとTCP SYNは別のルールとして設定できます。通常のTCPパケット量は安定しているものの、新規接続数だけが特殊なワークロードでは、TCP SYNだけを固定する構成も可能です。
設定前に確認する項目
カスタムポリシーを作成する前に、次の項目を確認します。
- Standard SKUのLoad Balancerに、適用対象となるフロントエンドIP構成が存在する
- 対象リソースがAzure DDoS Protectionの保護対象になっている
- 操作者にNetwork Contributor、または必要な操作を許可したカスタムロールが割り当てられている
- カスタムポリシーを作成するリージョンがプレビュー対象になっている
- 通常時と繁忙時のTCP、UDP、TCP SYNトラフィックを把握している
- 問題発生時にポリシーの関連付けを解除できる運用手順がある
カスタムポリシーは独立したAzureリソースとして作成されます。作成時にStandard Load BalancerのフロントエンドIPを関連付けることも、ポリシーだけを先に作成して後から関連付けることもできます。ただし、ポリシー内には少なくとも1つの検出しきい値ルールが必要です。(Microsoft Learn)
プレビューで利用できないリージョン
2026年7月22日時点のMicrosoft Learnでは、次のリージョンでカスタムポリシーを作成すると、RegionNotEnabledForFeatureエラーが発生すると案内されています。(Microsoft Learn)
| 利用できないリージョン | 利用できないリージョン | 利用できないリージョン |
|---|---|---|
| Sweden South | Southeast US | Indonesia Central |
| Chile Central | Austria East | Southeast US 3 |
| Malaysia West | Belgium Central | Israel Northwest |
パブリックプレビュー中は、対象リージョンが変更される可能性があります。設計時に利用できていても、別リージョンへの展開時には再確認が必要です。
リージョン制限を回避するためだけに、既存のLoad Balancerやワークロードを別リージョンへ移動するのは現実的ではありません。対象外リージョンでは、一般提供またはプレビュー範囲の拡大まで適応型自動調整を利用する方が安全です。
カスタムしきい値の決め方
固定値は、推測ではなく実測値を基に決めます。
しきい値が低すぎると、正規のアクセス増加をDDoSトラフィックとして早期に検出する可能性があります。反対に高すぎると、緩和の開始が期待より遅くなる可能性があります。
通常時のppsを確認する
Azure Monitorでは、保護対象のPublic IP Addressをスコープとして、次のメトリックを確認できます。
- Inbound SYN packets to trigger DDoS mitigation
- Inbound TCP packets to trigger DDoS mitigation
- Inbound UDP packets to trigger DDoS mitigation
- Packet Count
- SYN Count
- Under DDoS attack or not
検出トリガーのメトリックは集計方法を「最大値」にして確認します。
Packet CountやSYN Countは60秒単位の値として表示されるため、ppsへ換算するときは表示値を60で割ります。たとえば60秒間のPacket Countが12,000,000なら、平均値は200,000ppsです。なお、Packet CountにはTCPとUDPの両方が含まれるため、プロトコル別の判断にはフローログやアプリケーション側の通信統計も併用します。(Microsoft Learn)
通常ピークと計画ピークを分ける
次の3種類を分けて記録すると、判断しやすくなります。
| 基準値 | 内容 |
|---|---|
| 通常値 | 平日の一般的なトラフィック |
| 通常ピーク | 毎日または毎週発生する繁忙時間帯 |
| 計画ピーク | キャンペーン、ゲームイベント、製品発売などの予定された増加 |
たとえば、通常時のTCPが100,000pps、通常ピークが220,000pps、イベント時の想定が300,000ppsである場合、最初から250,000ppsに固定すると正規トラフィックとの余裕が小さくなります。
運用例としては、イベント時の想定を上回る400,000~500,000pps程度から検証を始め、監視結果を見ながら調整します。これはAzure共通の推奨計算式ではなく、正規トラフィックと検出しきい値の間に余裕を確保するための設定例です。
最小値にも注意する
設定可能な最小値は50,000ppsです。
TCP SYNの通常ピークが5,000pps程度であっても、20,000ppsのような値は設定できません。この場合は50,000ppsでの固定が適切か、自動調整を残すべきかを判断します。
Azure portalでカスタムポリシーを設定する方法
Azure portalでは、カスタムポリシーの作成、ルール追加、フロントエンドIPとの関連付けを画面上で実行できます。
DDoSカスタムポリシーを作成する
- Azure portalへサインインします。
- 上部の検索欄で「DDoS custom policies」を検索します。
- 検索結果から「DDoS custom policies」を開きます。
- 「作成」を選択します。
- 「基本」タブで必要な情報を入力します。
| 設定項目 | 入力内容 |
|---|---|
| サブスクリプション | カスタムポリシーを作成するサブスクリプション |
| リソースグループ | 既存のグループ、または新規グループ |
| 名前 | カスタムポリシー名 |
| リージョン | プレビューを利用できるリージョン |
ポリシー名は、対象と環境が分かる形式にしておくと管理しやすくなります。
ddoscp-prod-game-eastus
ddoscp-prod-api-eastus
ddoscp-stg-lb-eastus
Standard Load BalancerのフロントエンドIPを選択する
「Load balancer frontend IP address」で「Select frontend IP addresses」を選択し、ポリシーを適用するStandard Load BalancerのフロントエンドIPを指定します。
この関連付けは必須ではありません。まずポリシーだけを作成し、検証後に「Policy settings」からフロントエンドIPを追加することもできます。(Microsoft Learn)
本番環境では、次の順序で作業すると誤適用を防ぎやすくなります。
- ポリシーだけを作成する
- 設定値をレビューする
- 検証用フロントエンドIPへ関連付ける
- Azure Monitorで動作を確認する
- 本番フロントエンドIPへ展開する
検出しきい値ルールを追加する
「Next: Custom rules」を選択し、「Detection threshold」で「Add a rule」を実行します。
| 設定項目 | 入力内容 |
|---|---|
| Name | ルールを識別できる名前 |
| Protocol | TCP、UDP、TCPSYN |
| Threshold | 50,000~2,000,000pps |
| Direction | Inbound |
ルール名には、プロトコルとしきい値を含めると変更履歴を追いやすくなります。
tcp-500k-pps
udp-1200k-pps
tcpsyn-100k-pps
必要なプロトコル分だけルールを追加し、「Review + create」「Create」の順に選択します。設定したプロトコルでは固定値が使用され、ルールを作成していないプロトコルでは自動調整が維持されます。(Microsoft Learn)
作成後に関連付けとルールを確認する
作成したカスタムポリシーを開き、「Policy settings」を選択します。
この画面では次の操作ができます。
- フロントエンドIPの追加または変更
- 検出しきい値ルールの追加
- 既存ルールの編集
- 現在の関連付け状況の確認
「概要」に表示されるルール数と関連付け済みフロントエンドIP数も確認します。より詳細な構成は「JSON View」で確認できます。
Azure CLIでカスタムポリシーを作成する方法
Azure CLIでは、az network ddos-custom-policy createを使ってカスタムポリシーを作成できます。
次の例では、East USに受信TCP用の1,000,000ppsルールを作成します。(Microsoft Learn)
RG="MyResourceGroup"
LOCATION="eastus"
POLICY="MyCustomPolicy"
az network ddos-custom-policy create \
--resource-group "$RG" \
--name "$POLICY" \
--location "$LOCATION" \
--detection-rule-name "tcp-threshold" \
--detection-mode "TrafficThreshold" \
--traffic-type "Tcp" \
--packets-per-second 1000000
--traffic-typeには、次のいずれかを指定します。
Tcp
Udp
TcpSyn
Azure CLIのcreateコマンドで直接作成できる検出ルールは1つです。複数プロトコルのルールをまとめて展開する場合は、Azure portalまたはARMテンプレートを利用します。
作成したポリシーを確認する
az network ddos-custom-policy show \
--resource-group "$RG" \
--name "$POLICY" \
--query "{name:name,state:provisioningState,rules:detectionRules[].trafficDetectionRule}"
provisioningStateがSucceededになっていることと、packetsPerSecond、trafficTypeが意図した値になっていることを確認します。
Standard Load Balancerへ関連付ける
次の例では、作成したポリシーのリソースIDを取得し、Standard Load BalancerのフロントエンドIPへ関連付けます。
LB="MyLoadBalancer"
FRONTEND="MyFrontendIP"
dcpId=$(az network ddos-custom-policy show \
--resource-group "$RG" \
--name "$POLICY" \
--query id \
--output tsv)
az network lb frontend-ip update \
--resource-group "$RG" \
--lb-name "$LB" \
--name "$FRONTEND" \
--ddos-settings "ddos-custom-policy={id:$dcpId}"
関連付けを確認します。
az network lb frontend-ip show \
--resource-group "$RG" \
--lb-name "$LB" \
--name "$FRONTEND" \
--query "{frontendIp:name,customPolicy:ddosSettings.ddosCustomPolicy.id}"
--ddos-settingsはプレビュー機能に関連する引数であり、すべてのAzure CLIバージョンで利用できるとは限りません。unrecognized arguments: --ddos-settingsと表示された場合は、Azure portalから関連付けを行います。(Microsoft Learn)
ポリシーの関連付けを解除する
問題が発生した場合は、次のコマンドで関連付けを解除できます。
az network lb frontend-ip update \
--resource-group "$RG" \
--lb-name "$LB" \
--name "$FRONTEND" \
--ddos-settings "ddos-custom-policy=null"
関連付けを解除すると、そのフロントエンドIPはカスタムポリシーの固定しきい値を使用しなくなります。変更後は、Azure Monitorで検出トリガーを再確認してください。
ARMテンプレートで複数プロトコルを設定する方法
複数環境へ同じルールを展開する場合や、TCP・UDP・TCP SYNをまとめて構成管理したい場合はARMテンプレートが適しています。
次のテンプレートでは、3種類の検出ルールを作成し、Standard Load BalancerのフロントエンドIPへ関連付けます。リソースタイプはMicrosoft.Network/ddosCustomPoliciesです。(Microsoft Learn)
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"policyName": {
"type": "string"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
},
"frontendIPConfigurationId": {
"type": "string"
},
"tcpThreshold": {
"type": "int",
"defaultValue": 500000
},
"udpThreshold": {
"type": "int",
"defaultValue": 1000000
},
"tcpSynThreshold": {
"type": "int",
"defaultValue": 100000
}
},
"resources": [
{
"type": "Microsoft.Network/ddosCustomPolicies",
"apiVersion": "2025-07-01",
"name": "[parameters('policyName')]",
"location": "[parameters('location')]",
"properties": {
"detectionRules": [
{
"name": "tcp-threshold",
"properties": {
"detectionMode": "TrafficThreshold",
"trafficDetectionRule": {
"packetsPerSecond": "[parameters('tcpThreshold')]",
"trafficType": "Tcp"
}
}
},
{
"name": "udp-threshold",
"properties": {
"detectionMode": "TrafficThreshold",
"trafficDetectionRule": {
"packetsPerSecond": "[parameters('udpThreshold')]",
"trafficType": "Udp"
}
}
},
{
"name": "tcpsyn-threshold",
"properties": {
"detectionMode": "TrafficThreshold",
"trafficDetectionRule": {
"packetsPerSecond": "[parameters('tcpSynThreshold')]",
"trafficType": "TcpSyn"
}
}
}
],
"frontEndIpConfiguration": [
{
"id": "[parameters('frontendIPConfigurationId')]"
}
]
}
}
]
}
フロントエンドIP構成のリソースIDは、次のコマンドで取得できます。
az network lb frontend-ip show \
--resource-group MyResourceGroup \
--lb-name MyLoadBalancer \
--name MyFrontendIP \
--query id \
--output tsv
テンプレートをazuredeploy.jsonとして保存し、次のように展開します。
az deployment group create \
--resource-group MyResourceGroup \
--template-file azuredeploy.json \
--parameters \
policyName=MyCustomPolicy \
frontendIPConfigurationId="<frontend-ip-configuration-id>" \
tcpThreshold=500000 \
udpThreshold=1000000 \
tcpSynThreshold=100000
一部のプロトコルを自動調整のまま残したい場合は、そのプロトコルに対応するdetectionRulesの要素をテンプレートから削除します。
設定後に確認すべき監視項目
カスタムポリシーは、作成できた時点で作業完了ではありません。固定値が正規トラフィックに対して適切かをAzure Monitorで確認します。
検出トリガーが設定値に変わったか
Public IP Addressの「メトリック」で、次の項目を表示します。
- Inbound SYN packets to trigger DDoS mitigation
- Inbound TCP packets to trigger DDoS mitigation
- Inbound UDP packets to trigger DDoS mitigation
集計方法は「最大値」にします。
固定値を設定したプロトコルでは、検出トリガーがカスタム値として反映されているかを確認します。未設定のプロトコルでは、トラフィック学習に応じて自動調整される状態が続きます。(Microsoft Learn)
正規トラフィックとの余裕を確認する
次の項目を同じ時間帯で比較します。
| 確認項目 | 判断内容 |
|---|---|
| Packet Count、SYN Count | 正規トラフィックが固定値へ近づいていないか |
| DDoS検出トリガー | 意図した固定値が反映されているか |
| Under DDoS attack or not | 不要な緩和が発生していないか |
| アプリケーション応答時間 | 設定変更後に遅延が増えていないか |
| 接続エラー率 | SYNやTCP関連の失敗が増えていないか |
| Load Balancerの正常性 | バックエンドの正常性に変化がないか |
通常ピークだけでなく、バッチ処理、定期配信、キャンペーン、ゲームイベントなど、最大トラフィックが発生する時間帯を含めて確認します。
よくある失敗と対処方法
| 症状 | 主な原因 | 対処方法 |
|---|---|---|
RegionNotEnabledForFeatureが発生する | プレビュー対象外リージョン | 対応リージョンを確認し、対象外では自動調整を継続する |
| しきい値の検証に失敗する | 50,000未満または2,000,000超 | 指定値を対応範囲内へ修正する |
| ポリシーを作成できない | 検出ルールが1件もない | TCP、UDP、TCP SYNのいずれかを追加する |
| フロントエンドIPを選択できない | Standard Load Balancerではない、権限不足、対象外構成 | SKU、リージョン、フロントエンドIP構成、RBACを確認する |
| ポリシーを作成したのに反映されない | フロントエンドIPと関連付けていない | Policy settingsまたはCLIで関連付ける |
CLIで--ddos-settingsが認識されない | 利用中のAzure CLIがプレビュー引数に未対応 | Azure portalから関連付ける |
| 正規アクセス時に緩和が始まる | 固定しきい値が低すぎる | しきい値を上げるか、ポリシーの関連付けを解除する |
| 繁忙期だけ問題が発生する | 計画ピークを基準値に含めていない | キャンペーンやイベント時のppsを再計測する |
特に避けたいのは、TCP・UDP・TCP SYNへ同じ値を一括設定することです。プロトコルごとの通常トラフィック量は異なるため、それぞれ別の基準で判断する必要があります。
固定しきい値を解除して自動調整へ戻す方法
カスタム設定に問題がある場合は、Standard Load BalancerのフロントエンドIPからポリシーの関連付けを解除します。
Azure portalでは、カスタムポリシーの「Policy settings」を開き、関連付け済みのフロントエンドIPを変更します。
カスタムポリシー自体が不要であれば削除も可能です。ポリシーを削除すると、関連付けられていたフロントエンドIPは適応型自動調整へ戻ります。削除操作は元に戻せないため、先に設定内容をJSONやARMテンプレートとして保存しておくと再作成しやすくなります。(Microsoft Learn)
まとめ
Azure DDoS Protectionのカスタムポリシーでは、Standard Load BalancerのフロントエンドIPに対して、TCP・UDP・TCP SYNの受信検出しきい値を50,000~2,000,000ppsで設定できます。
ただし、固定値を設定したプロトコルでは適応型自動調整が停止します。すべてを一度に固定するのではなく、次の順序で導入することが重要です。
- 対象リージョンとStandard Load Balancerの構成を確認する
- Azure Monitorで通常時と繁忙時のppsを計測する
- 特殊なトラフィック特性を持つプロトコルだけ固定する
- 検証用フロントエンドIPで先に試す
- 検出トリガー、DDoS状態、アプリケーション影響を監視する
- 問題時はポリシーの関連付けを解除する
最初の設定では、最も課題が明確な1プロトコルだけを対象にします。未設定プロトコルの自動調整を残すことで、カスタム制御とAzureの適応型保護を併用できます。

コメント