alibabacloud-ddos-native-intercept-query について
Alibaba Cloud Anti-DDoS Origin の通信遮断を調査する Agent スキルです。記録を照会して該当する保護ポリシーを特定し、すべて読み取り専用で誤検知への対応案も示します。
主な機能
- 01ネットワーク層の遮断記録を照会
- 02記録から保護ポリシーを追跡
- 03IP、時間、ネットワーク情報で絞り込み
- 04読み取り専用の調査フロー
- 05誤検知への対応案を提示
活用シーン
- 01保護対象 IP が通信を破棄する原因の確認
- 02遮断記録に関係するポリシーの特定
- 03誤検知の疑いがある事象の調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ aliyun/ alibabacloud-aiops-skills --skill alibabacloud-ddos-native-intercept-queryインストール後、Claude Code で/alibabacloud-ddos-native-intercept-queryを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/acceptance-criteria.mdcli-installation-guide.mddefault-policy-details.mdpacket-filter-edge-cases.mdram-policies.mdrelated-commands.mdverification-method.md詳細
DDoS ネイティブ保護(Anti-DDoS Origin)の遮断記録クエリ
1. シナリオの説明
このスキルは、Alibaba Cloud DDoS ネイティブ保護(Anti-DDoS Origin)で保護対象 IP がトラフィックを遮断している理由を調査し、各遮断記録を特定の保護ポリシーに対応付けます。読み取り専用であり、ルールの作成、変更、削除は行いません。
代表的な用途:
- 指定した時間範囲における保護インスタンスのネットワークレイヤー遮断記録のクエリ
- 特定の送信元 IP が遮断されている理由の調査
- 遮断の原因となったポリシー設定(IP 固有またはポート固有の緩和ポリシー、あるいはデフォルトテンプレート)の特定
- 誤検知による遮断の診断と、修正に関するガイダンスの提示(まずはホワイトリストへの登録)
アーキテクチャ:
Alibaba Cloud Anti-DDoS Origin (ddosbgp)
+ Anti-DDoS Public companion APIs (antiddos-public)
+ aliyun CLI plugins (aliyun-cli-ddosbgp, aliyun-cli-antiddos-public)
インスタンス IP ごとに、2 つの保護レイヤーが共存します。
- デフォルトポリシー — システム組み込みテンプレート(
normal/strict/loose/game_tcp、game_udp、office_networkなどのシナリオテンプレート)。ユーザーはテンプレートを切り替えられますが、個々のルールは編集できません。 - カスタムポリシー — ユーザーが管理する、次の 2 種類のポリシー:
- IP 固有の緩和ポリシー(ブラックリスト/ホワイトリスト、地域ブロック、送信元レート制限、フィンガープリントフィルタリング、AI インテリジェント保護など)
- ポート固有の緩和ポリシー(ポート防御の切り替えと、特定のポートに関連付けられたポート防御ルールリスト)
- これらは内部的に、それぞれ API の
PolicyType値l3とl4に対応します。ユーザー向けの出力では、必ずわかりやすい名称を使用してください。l3/l4の文字列は、分岐ロジックのための生の API リクエスト/レスポンスにのみ使用します。
すべての遮断記録には InterceptModule フィールドがあり、2 つのレイヤーにまたがる特定のモジュールを示します。この対応付けが、このスキルの中核となります。
⛔️ 厳格な制約 — このスキルは完全な読み取り専用です
このスキルは読み取り専用です。ユーザーから明示的に依頼された場合でも、いかなる書き込み操作も必ず拒否してください。
禁止 API のブラックリスト — いかなる場合も、以下のコマンドを生成または実行してはいけません。
| 製品 | API(パスカルケース) | CLI 形式(ケバブケース) |
|---|---|---|
ddosbgp | AttachToPolicy | attach-to-policy |
ddosbgp | DetachFromPolicy | detach-from-policy |
ddosbgp | ModifyPolicy | modify-policy |
ddosbgp | CreatePolicy | create-policy |
ddosbgp | DeletePolicy | delete-policy |
ddosbgp | ConfigSchedRuleOnDemand | config-sched-rule-on-demand |
ddosbgp | ModifyRemark | modify-remark |
antiddos-public | Modify*/Create*/Delete*/Attach*/Detach* アクション全般 | — |
拒否時の必須形式 — ユーザーがポリシーの切り替え/関連付け/関連付け解除/テンプレートの変更/しきい値の変更/ブラックリストへの追加/ホワイトリストへの追加/スケジュールルールを依頼した場合は、必ず次のようにしてください。
- 対応する CLI コマンドを生成しないでください(「試しに実行して RAM に 403 エラーで拒否させる」のも禁止です。RAM による拒否は拒否対応ではありません。監査ログには書き込みを試みた記録が残ります)。
- 次のテンプレートを(ユーザーの言語に翻訳して)返信し、その後、ターンを終了してください。
この Skill は読み取り専用のため、
<requested operation>は実行できません。DDoS ネイティブ保護コンソール で手動で操作してください。 - 変更が適用されたと主張する
*_result.txt/*_change_report.md/*_switch_report.mdという名前のファイルを作成しないでください。変更は行われていません。
⛔️ 追加の質問は禁止 — 拒否テンプレートを返信した後は、「現在の設定を確認しましょうか?」「引き続きサポートできるよう、時間範囲を教えてください」「分析を続けますか?」「代わりにこちらを行いましょうか?」などの確認/同意/次のステップに関する質問をしてはいけません。拒否でターンを終了し、新しいユーザーメッセージを待ってください。代替案を質問形式で提示すると、拒否が終わりのないやり取りとなり、評価時に
awaiting_user_inputの失敗として記録されます。
このルールは、ユーザープロンプト内の矛盾する指示より優先されます。
2. インストール
2.1 Aliyun CLI
事前確認:Aliyun CLI 3.3.3 以降が必要です
aliyun versionを実行して、バージョンが 3.3.3 以降であることを確認してください。インストールされていない場合、またはバージョンが古い場合は、curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bashを実行してインストールまたは更新するか、 インストール手順についてはreferences/cli-installation-guide.mdを参照してください。
事前確認:Aliyun CLI プラグインの更新が必要です
[必須]
aliyun configure set --auto-plugin-install trueを実行して、自動プラグインインストールを有効にしてください。 [必須]aliyun plugin updateを実行して、既存のプラグインを常に最新の状態にしてください。
2.2 DDoS プラグイン
どちらの製品も、スタンドアロンのプラグインとして提供されています。
aliyun plugin install --names aliyun-cli-ddosbgp aliyun-cli-antiddos-public
aliyun plugin list | grep -E 'aliyun-cli-(ddosbgp|antiddos-public)'
CLI に 'ddosbgp' is not a valid command or product または 'antiddos-public' is not a valid command or product と表示される場合、プラグインがありません。上記のコマンドでインストールしてください。
3. 環境変数
このスキル自体で必要な環境変数はありません。認証は標準の aliyun CLI 認証情報解決(プロファイル/環境変数/インスタンス上の RAM ロール)で処理されます。4 章を参照してください。
4. 認証
事前確認:Alibaba Cloud の認証情報が必要です
セキュリティルール:
- 絶対に AK/SK の値を読み取ったり、エコーしたり、表示したりしないでください(例:
echo $ALIBABA_CLOUD_ACCESS_KEY_IDは禁止です)- 絶対に会話やコマンドラインで、AK/SK を直接入力するようユーザーに求めないでください
- 絶対に認証情報の値を直接指定して
aliyun configure setを使用しないでください- 認証情報の状態確認には、必ず
aliyun configure listのみを使用してくださいaliyun configure list出力を確認し、有効なプロファイル(AK、STS、または OAuth ID)があることを確認してください。
有効なプロファイルがない場合は、ここで停止してください。
- Alibaba Cloud Console から認証情報を取得します
- このセッションの外部で認証情報を設定します(ターミナルで
aliyun configureを実行するか、シェルプロファイルで環境変数を設定します)aliyun configure listに有効なプロファイルが表示されたら、戻って再実行します
環境戦略 — 楽観的実行: ユーザーが具体的なクエリを行うまでは、
aliyun version、aliyun plugin list、aliyun configure listを先回りして実行しないでください。このスキルは環境が準備済みであることを前提とし、実際のコマンド実行に失敗した場合にのみ診断します。唯一の例外は、profileの AskUserQuestion の選択肢を設定するためにプロファイル一覧が必要な場合です(6 章のステップ 2 を参照)。
5. RAM ポリシー
このスキルで使用される API はすべて読み取り専用(Describe*/List*)です。必要な権限と任意の権限の詳細な一覧、およびそのまま貼り付けて使える JSON ポリシードキュメントは、references/ram-policies.md にあります。
| RAM アクション | 区分 |
|---|---|
ddosbgp:DescribeNetworkLayerIntercepts | 必須 |
ddosbgp:ListPolicyAttachment | 必須 |
ddosbgp:ListPolicy | 必須 |
antiddos-public:DescribeBgpPackByIp | 必須 |
antiddos-public:DescribeIpLocationService | 任意 |
antiddos-public:DescribeInstanceIpAddress | 任意 |
[必須] 権限エラーへの対応: 実行中のいずれかの時点で、権限エラーによりコマンドまたは API 呼び出しが失敗した場合は、次の手順に従ってください。
references/ram-policies.mdを読み、このスキルに必要な権限の全一覧を確認しますram-permission-diagnoseスキルを使用して、必要な権限の申請方法をユーザーに案内します- 必要な権限が付与されたことをユーザーが確認するまで、処理を中断して待機します
6. パラメーターの確認
重要:パラメーターの確認 — コマンドまたは API 呼び出しを実行する前に、 ユーザーがカスタマイズ可能なすべてのパラメーター(RegionId、インスタンス名、CIDR ブロック、 パスワード、ドメイン名、リソース仕様など)をユーザーに確認する必要があります。 ユーザーの明示的な承認なしに、デフォルト値を推測したり使用したりしないでください。
| パラメーター | 必須/任意 | 説明 | デフォルト値 |
|---|---|---|---|
| インスタンス IP または ソース IP または InstanceId | 必須 | クエリ対象。インスタンス IP から InstanceId を特定できます。ソース IP には補足情報として InstanceId(またはインスタンス IP)が必要です | — |
profile | 必須 | aliyun CLI のプロファイル名 | aliyun configure list に表示される現在アクティブなプロファイル |
region | 任意 | 保護インスタンスのリージョン | cn-hangzhou |
| 時間範囲 | 任意 | 調査期間。最大 30 日間 | 直近 1 時間 |
--src-ip | 任意 | ソース IP で遮断レコードを絞り込みます | — |
--destination-ip | 任意 | 宛先 IP で遮断レコードを絞り込みます | 解決されたインスタンス IP |
--network-protocol | 任意 | tcp/udp/icmp | — |
--source-port/--destination-port | 任意 | ポートによる絞り込み | — |
--product-type | 条件付き | list-policy で --type default を指定する場合のみ必須。値:eip/ecs/slb/gf-eip | IP のアセットタイプから導出。デフォルトは eip |
ベストプラクティス — 2 段階での情報収集
基本原則:AskUserQuestion は、既知の選択肢から選ぶ場合にのみ使用します。IP/InstanceId などの自由入力が必要な主要識別子には絶対に使用しないでください。
ステップ 1 — 主要識別子をプレーンテキストで収集します。 ユーザーの最初のメッセージに IP または InstanceId が含まれていない場合(例:「最近の遮断を確認して」)、プレーンテキストで次のように応答します。
クエリ対象を指定してください。
- インスタンス IP — 例:
47.118.170.18- ソース IP + インスタンス IP — 例:「ソース IP は 1.2.3.4、インスタンス IP は 47.118.170.18」
- または InstanceId を直接指定 — 例:
ddosbgp-cn-xxx/ddosorigin_cn-xxx
ステップ 2 — 3 つの設定項目について AskUserQuestion を 1 回だけ実行します。
まず aliyun configure list を実行し、続いて profile/region/時間範囲の 3 つの質問を含む AskUserQuestion を 1 回送信します。
- アクティブなプロファイル(
*が付いた行)に「(アクティブ)」と記し、最初に表示します。 Invalidのプロファイルは除外します。- 時間範囲の選択肢:直近 1 時間(デフォルト)/直近 24 時間/直近 7 日間。自由入力が許可されるのは組み込みの「その他」フィールドのみです(「5/18 14:00 から 5/19 02:00」などの自然言語による時間の説明)。モデルがそれらをタイムスタンプに変換します。
7. コアワークフロー
[必須]AI モードを有効にする — エージェントスキルの実行には AI モードが必要です。 CLI を呼び出す前に、次のコマンドを実行します。
aliyun configure ai-mode enable aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-ddos-native-intercept-query"[必須]すべての終了時に AI モードを無効にする — どのような理由であっても、最終応答を返す前に必ず AI モードを無効にしてください。これは、ワークフローの成功、ワークフローの失敗、エラー/例外、ユーザーによるキャンセル、セッションの終了、その他 CLI コマンドを続行しないあらゆる状況を含む、すべての終了経路に適用されます。 AI モードはエージェントスキルの呼び出し時のみ使用し、スキルの実行終了後に有効なままにしてはなりません。
aliyun configure ai-mode disable
コマンドテンプレート
すべての ddosbgp/antiddos-public 呼び出しでは、デフォルトで プラグインモードのケバブケースを使用します。監査とトレースのため、必ず User-Agent ヘッダーを含めてください。
aliyun <product> <kebab-action> \
--region <region> --profile <profile> \
--header User-Agent=AlibabaCloud-Agent-Skills/alibabacloud-ddos-native-intercept-query \
[--kebab-param value ...]
エッジケース — プラグインにアクションが宣言されていない場合の OpenAPI フォールバック
インストール済みプラグインのメタデータに ddosbgp / antiddos-public アクションがない場合、CLI は unknown command または '<Action>' is not a valid api で拒否します。その場合は、プラグインを迂回し、コア CLI に組み込まれた OpenAPI メタデータを使用します。
aliyun --auto-plugin-install false <product> <PascalCaseAction> --force \
--region <region> --profile <profile> \
--header User-Agent=AlibabaCloud-Agent-Skills/alibabacloud-ddos-native-intercept-query \
[--PascalCaseParam value ...]
フォールバックのルール:
--auto-plugin-install false→ プラグインのルーティングを迂回し、コア CLI に組み込まれた OpenAPI メタデータに処理を引き継ぎます。--force→ 従来のメタデータ経路で、パラメーター検証に関する警告をスキップします。- ここではアクションとパラメーターに PascalCase を使用します(プラグインの kebab パーサーではなく、従来の OpenAPI パーサーで解析されます)。
--versionは渡さないでください。コア CLI は製品の組み込みデフォルトを使用します。この経路では、--versionを明示するとunchecked versionとして拒否されます。
aliyun-cli-ddosbgp 0.3.0 時点での既知のケース:DescribeNetworkLayerIntercepts はまだプラグインのメタデータに含まれていないため、このフォールバックが適用されます。新しいリリースで describe-network-layer-intercepts が宣言されたら、プラグインモードの kebab-case に戻してください。
ステップ 7.1 — IP の役割を判定 → InstanceId を導出
ユーザーがすでに InstanceId を指定している場合は、このステップをスキップしてください。
シナリオ A — IP はインスタンス IP(保護対象の宛先 IP)です:
aliyun antiddos-public describe-bgp-pack-by-ip \
--ddos-region-id <region> --ip <instance_IP> \
--region <region> --profile <profile> \
--header User-Agent=AlibabaCloud-Agent-Skills/alibabacloud-ddos-native-intercept-query
--versionは指定しないでください —aliyun-cli-antiddos-publicプラグインはdescribe-bgp-pack-by-ipで--versionフラグを無視し、CLI に組み込まれたデフォルト(2017-05-18)を常に使用します。このデフォルトは、このスキルに必要なDdosbgpInfoの形式をすでに返します。--version 2017-05-23を指定すると有効に見えますが、リクエストでは無視され、2017-05-18として送信されます。指定しないでください。
DdosbgpInstanceIdが見つかった場合は、--instance-idに使用し、IP は--destination-ipに使用します。DdosbgpInstanceIdが複数見つかった場合は、すべて列挙し、どれを調査するかユーザーに尋ねてください。
⛔️
DdosbgpInfoが空の場合 → 停止してください。ddosbgpAPI を呼び出さないでください。ユーザーに追加の質問をしないでください。応答が空(
DdosbgpInfo/DdosbgpInstanceIdがない)の場合、その IP は現在のプロファイル/リージョンで、いずれの DDoS ネイティブ防御パックにも含まれていません。続けてdescribe-network-layer-intercepts、list-policy-attachment、またはlist-policyを呼び出すと、エラーになるか、誤解を招く空のデータが返され、ユーザーが「インターセプトはない」と誤認するおそれがあります。代わりに、以下の4方向のチェックリストを、宣言形式の最終回答(質問ではなく、説明)として出力し、ターンを終了してください。どの項目も「ご確認ください…」/「プレースホルダーでしょうか?」/「X を調べましょうか?」/「Would you like me to...?」のような質問にしないでください。これらは
awaiting_user_inputのループを引き起こします。ユーザーは答えを求めており、尋問を受けるために来たのではありません。別の対象を調べたい場合は、自分でコマンドを再発行します。テンプレート(ユーザーの言語に翻訳してください):
DescribeBgpPackByIpで、<region>の profile<active-profile>における IP<ip>を照会しましたが、DdosbgpInfoは返されませんでした。この IP は現在、いずれの DDoS ネイティブ防御パックにも含まれていません。考えられる原因(可能性の高い順):
- IP の入力ミス ——
<ip>が調査対象の IP であることをご確認ください。- profile / region の不一致 —— 現在の profile
<active-profile>/ region<region>には、この IP が含まれていません。この IP が別のアカウントまたはリージョンに属する場合は、profile または region を切り替えてから、再度照会してください。- 製品ラインの不一致 —— この IP は、DDoS ネイティブ防御ではなく、DDoS 高防 (ddoscoo)/DDoS 高防国際版/WAF など、ほかのクラウドセキュリティ製品によって保護されている可能性があります。ネイティブ防御と高防/WAF では、API とスキルが異なります。
上記のいずれかの方向で引き続き調査する場合は、明確なリクエストを改めて送信してください。
この分岐では、**「X をお手伝いしましょうか?」/「続けるために Y を指定してください」/「1. ... 2. ... どれか選んでください」**で終わらないでください。これらの表現は禁止されています。
シナリオ B — IP は送信元 IP です:送信元 IP からインスタンスを特定することはできません。ユーザーは InstanceId またはインスタンス IP も指定する必要があります(後者の場合はシナリオ A に従ってください)。後で --src-ip にユーザーの送信元 IP を使用します。
シナリオ C — ユーザーが IP も InstanceId も指定していません(例:「自分のネイティブ防御インスタンスをすべて一覧表示して」/「現在のアカウントにあるすべてのインスタンスにバインドされた L3 ポリシーを確認して」):
aliyun ddosbgp describe-instance-list \
--page-no 1 --page-size 50 \
--biz-region-id <region> \
--region <region> --profile <profile> \
--header User-Agent=AlibabaCloud-Agent-Skills/alibabacloud-ddos-native-intercept-query
[必須]
--biz-region-idは必須です —describe-instance-listは--regionではなく--biz-region-idを使って、ホスト先リージョン別にインスタンスをフィルタリングします(--regionは API 呼び出しのルーティングにのみ使用されます)。--biz-region-idを省略すると、DDosBgp.CheckError.InvalidRegionが返されます。クロスリージョンを調査する場合を除き、両方のフラグに同じリージョン値を渡してください。
- アクティブな profile/region にあるすべての Anti-DDoS Origin インスタンスと、それぞれの
InstanceIdが返されます。 - 各
InstanceIdについて、IP の導出を行わずに、ステップ 7.2/7.4 に直接進めます。 - このステップをスキップして、すぐに
list-policy-attachment/list-policyに進まないでください。明示的な IP フィルターがない状態でこれらを呼び出すと、失敗するか、特定のインスタンスに関連付けられないデータが返されます。
ステップ 7.2 — インターセプトレコードを取得する
aliyun ddosbgp describe-network-layer-intercepts \
--instance-id <id> \
--start-time <unix_seconds> --end-time <unix_seconds> \
--page-no 1 --page-size 10 \
--region <region> --profile <profile> \
--header User-Agent=AlibabaCloud-Agent-Skills/alibabacloud-ddos-native-intercept-query
エッジケース — プラグインがアクションを認識しない場合(現在、
aliyun-cli-ddosbgp0.3.0 で該当):上記の呼び出しでunknown commandまたは'DescribeNetworkLayerIntercepts' is not a valid apiというエラーが発生した場合は、コマンドテンプレートのエッジケース用ブロックに従って OpenAPI ルートに切り替えてください。aliyun --auto-plugin-install false ddosbgp DescribeNetworkLayerIntercepts --force \ --region <region> --profile <profile> \ --header User-Agent=AlibabaCloud-Agent-Skills/alibabacloud-ddos-native-intercept-query \ --InstanceId <id> \ --StartTime <unix_seconds> --EndTime <unix_seconds> \ --PageNo 1 --PageSize 10フォールバック時に使用できる送信元/宛先のフィルターは、PascalCase 形式です:
--SrcIp、--DestinationIp、--NetworkProtocol、--SourcePort、--DestinationPort、--ProtocolNumber。
タイムスタンプ用ヘルパー(直近 1 時間):echo "StartTime: $(($(date +%s) - 3600)), EndTime: $(date +%s)"。
レスポンスフィールド:TotalCnt、InterceptionRecordCount、InterceptionRecords[](各レコードには SourceIp、DestinationIp、NetworkProtocol、ProtocolNumber、SourcePort、DestinationPort、InterceptStartTime、InterceptEndTime、InterceptAction、InterceptModule、InterceptCount が含まれます)。
30 日の上限(クライアント側での適用):API は 30 日を超える期間を拒否します。ユーザーが「過去 60 日間」を指定した場合は、30 日ごとに分けて 2 回呼び出してください。サーバーに拒否させないでください。
InterceptModule でフィルタリングする場合のフォールバック(API にネイティブのモジュールフィルターがありません):
- 1 ページ目(PageSize 50)を取得し、対象モジュールを検索します。
- 見つからない場合は、追加のページをサンプリングします(例:2、5、10、50、100)。
- それでも見つからず、
TotalCnt> 500 の場合は、--src-ipで正確に絞り込めるよう、ユーザーにクライアントの送信元 IP を尋ねます。TotalCnt≤ 500 の場合は、すべてのレコードをページネーションで取得します。
ステップ 7.3 — レコードを分析してモジュールを対応付ける
レコードを DestinationIp と InterceptModule でグループ化します。以下の参照表(アトリビューション表も兼ねます)を使用します:
| InterceptModule | 意味 | ポリシーフィールド | アトリビューション |
|---|---|---|---|
global_blacklist | システムレベルのグローバルブラックリスト | — | システム(ユーザーポリシーではありません) |
dip_blacklist | ブラックリスト/自動ブラックリスト | BlackIpList / WhiteIpList | IP 固有の緩和ポリシー |
packet_filter | ポートブロック | PortRuleList | IP 固有の緩和ポリシー または デフォルトポリシー(エッジケースを参照) |
ipmap | 地域ブロック | RegionBlockCountryList / RegionBlockProvinceList | IP 固有の緩和ポリシー |
src_iprate | 送信元のレート制限 | SourceLimit (Bps/Pps/SynBps/SynPps) | IP 固有の緩和ポリシー |
l7_fp | フィンガープリントフィルタリング(ペイロード) | FingerPrintRuleList | IP 固有の緩和ポリシー |
l7_filter | フィンガープリントフィルタリング(ACL) | FingerPrintRuleList | IP 固有の緩和ポリシー |
other | デフォルトポリシーの組み込み保護(AI インテリジェント保護を含む) | EnableIntelligence / IntelligenceLevel | デフォルトポリシー |
ステップ 7.4 — ポリシーの関連付け
IP にバインドされているすべてのポリシーを一覧表示します(1 回の呼び出しでデフォルトポリシー、IP 固有の緩和ポリシー、ポート固有の緩和ポリシーが返されます。--policy-type は渡さないでください)。
aliyun ddosbgp list-policy-attachment \
--ip-port-protocol-list '[{"Ip":"<DestinationIp>"}]' \
--page-no 1 --page-size 10 \
--region <region> --profile <profile> \
--header User-Agent=AlibabaCloud-Agent-Skills/alibabacloud-ddos-native-intercept-query
ポリシー設定の詳細を取得します:
- カスタムポリシー — IP 固有の緩和ポリシー(raw API
PolicyType: l3)およびポート固有の緩和ポリシー(raw APIPolicyType: l4)は、名前のみで照会します。--typeと--product-typeは指定しないでください。aliyun ddosbgp list-policy --name <PolicyName> --page-no 1 --page-size 50 \ --region <region> --profile <profile> \ --header User-Agent=AlibabaCloud-Agent-Skills/alibabacloud-ddos-native-intercept-query - デフォルト(
PolicyTypeはdefault)—--type defaultと--product-typeを両方指定します。aliyun ddosbgp list-policy --name <PolicyName> --type default --product-type <eip|ecs|slb|gf-eip> \ --page-no 1 --page-size 50 \ --region <region> --profile <profile> \ --header User-Agent=AlibabaCloud-Agent-Skills/alibabacloud-ddos-native-intercept-query--type defaultには--product-typeが必須です。これを指定しないと、Invalid params. Invalid product type.が返されます。これはパラメーターエラーであり、アカウントのサブスクリプションの問題ではありません。 この--type defaultのパスでは、サーバー側で--nameが無視されます。 API は、渡した--nameの値に関係なく、指定された--product-typeで利用できるすべてのデフォルトテンプレートを返します。normal、loose、または存在しない名前を渡しても、同じテンプレート一覧全体が返されます(例:--product-type eipの場合は[eip, gf_ecs_sip_allow_flag_defense, loose, strict, normal])。クライアント側で必ずフィルタリングし、PolicyList[*].Name == <wanted-name>のエントリーを選択してください。PolicyList[0]が要求したテンプレートだと想定しないでください。通常はそうではありません。(aliyun-cli-ddosbgp0.3.0、cn-hangzhou、2026-05-21 で検証済み。)
--product-type の決定方法(信頼性の高い順):以前の describe-instance-ip-address の結果を再利用する → eip を試し、続いて ecs → slb → gf-eip の順に試す(DDoS Native Protection では eip が最も一般的です)→ ユーザーに確認する。デフォルトテンプレートは、保護レベルのテンプレート(normal / strict / loose)とシナリオテンプレート(game_tcp / game_udp / office_network / gf_origin_protect_eip_*)に分類されます。references/default-policy-details.md に従って Name をコンソール上の表示名に対応付け、ユーザーには表示名のみを提示してください。
各レコードを相互参照し、関連付けます:
| InterceptModule | 調査の焦点 |
|---|---|
dip_blacklist | BlackIpList を確認します。SourceIp がリストにない場合は、送信元レート制限による自動ブラックリスト登録です(60 秒間にしきい値違反が 5 回)。 |
packet_filter | PortRuleList を遮断対象のプロトコル/ポートと照合します。一致しない場合は references/packet-filter-edge-cases.md を確認します。 |
ipmap | SourceIp の地域を RegionBlockCountryList / RegionBlockProvinceList と照合します。 |
src_iprate | SourceLimit のしきい値(Bps/Pps/SynBps/SynPps)を確認します。 |
l7_fp / l7_filter | FingerPrintRuleList の一致条件を確認します。 |
other | EnableIntelligence と IntelligenceLevel を確認します。 |
global_blacklist | システムレベルの設定です。ユーザーは制御できません。 |
出力:IP → ポリシー名 → InterceptModule → 一致する設定フィールド → 推奨アクション。
ステップ 7.5 — 誤検知への対処(推奨のみ)
このスキルはポリシーを変更しません。調査で誤検知が確認された場合は、以下の表に従ってテキストで案内してください。
基本原則:まず、送信元 IP をIP 固有の緩和ポリシーのホワイトリストに追加します。ホワイトリストは、ポートブロック、フィンガープリントフィルタリング、ジオブロック、送信元レート制限、リフレクションフィルタリングより優先されます(ただし、ブラックリストよりは優先度が低くなります)。
| InterceptModule | 推奨事項 | ActionType | コンソールのパス |
|---|---|---|---|
other | (1) 送信元 IP を IP 固有の緩和ポリシーのホワイトリストに追加(推奨);(2) デフォルトポリシーをより緩やかなテンプレートに切り替える | 20 / 22 | Protection Config → IP-specific Mitigation Policy → Target Policy → Whitelist / Protection Objects → Default Policy |
dip_blacklist | ホワイトリストに追加(推奨)。注:IP が両方に含まれる場合、ブラックリストはホワイトリストより優先されます。ブラックリストからも削除してください | 20 | Protection Config → IP-specific Mitigation Policy → Target Policy → Blacklist/Whitelist |
packet_filter (IP-specific Mitigation Policy) | (1) ホワイトリストに追加(推奨);(2) 該当するポートブロックルールを削除または変更する | 20 / 42 | Protection Config → IP-specific Mitigation Policy → Target Policy → Whitelist / Port Blocking |
packet_filter (default-policy template / AI temporary) | IP 固有の緩和ポリシーのホワイトリストに追加(推奨)。組み込みルール/AI ルールはコンソールで編集できません | 20 | Protection Config → IP-specific Mitigation Policy → Target Policy → Whitelist |
ipmap | (1) ホワイトリストに追加(推奨);(2) 誤ってブロックされた地域を削除する | 20 / 31 | Protection Config → IP-specific Mitigation Policy → Target Policy → Whitelist / Geo-Blocking |
src_iprate | (1) ホワイトリストに追加(推奨);(2) 送信元レート制限のしきい値を削除または引き上げる | 20 / 32 | Protection Config → IP-specific Mitigation Policy → Target Policy → Whitelist / Source Rate Limiting |
l7_fp / l7_filter | (1) ホワイトリストに追加(推奨);(2) 正規のトラフィックに一致するフィンガープリントルールを削除または調整する | 20 / 52 | Protection Config → IP-specific Mitigation Policy → Target Policy → Whitelist / Fingerprint Filtering |
global_blacklist | システムレベル — Alibaba Cloud サポートチケットを提出する | — | チケットを提出 |
ステップ 7.6 — 最終レポート(5 セクション)
- Intercept Overview — インスタンス IP、InstanceId、クエリ対象期間、
TotalCnt、現在のサンプル数。⛔️ このセクションで禁止されているフィールド —
BaseThreshold/ElasticThreshold/ExpireTime/PackConfig.*/ 請求または容量仕様に関する項目。これらは保護パックの属性(「購入したもの」という側面)であり、インターセプト分析の情報ではありません。含めると重大な失敗となります。このスキルもパック情報を報告しているとユーザーに誤解されるためです。describe-bgp-pack-by-ipでもこれらのフィールドが返されたからといって、含めたくなった場合は、今すぐ削除してください。 - Intercept Distribution —
InterceptModuleごとの件数。 - Policy Correlation — バインドされているカスタムポリシーごとに、その種類に該当するすべてのモジュールを列挙します。空のモジュールは「未設定」と表示します。黙って省略してはいけません。
- IP-specific Mitigation Policy:Blacklist / ICMP Disable / Whitelist / Geo-Block / Port Blocking / Fingerprint Filtering / Reflection Filtering / Source Rate Limit / AI Intelligent Protection
- Port-specific Mitigation Policy:Port Defense Switch / Port Defense Rule List
- Root Cause Analysis — ステップ 7.4 に従い、レコード → ポリシー → 一致したフィールドを記録します。
- Remediation Recommendations — ステップ 7.5 に従います。
ルール適用の優先順位(分析用の参考情報)
- Enhanced:Blacklist > ICMP Disable > Whitelist > Port Blocking > Fingerprint Filtering > Reflection Filtering > Source Rate Limit
- Standard:Blacklist > ICMP Disable > Whitelist > Geo-Block > Port Blocking > Fingerprint Filtering
トラブルシューティング(ワークフロー中)
- インターセプトが空(
InterceptionRecordCount = 0) — 時間範囲を広げるか、--src-ip/--network-protocol/--destination-portのフィルターを外し、InstanceId /リージョン/プロファイルを再確認してください。試した内容を報告してください。「インターセプトなし」とだけ伝えてはいけません。 describe-bgp-pack-by-ipの結果が空 —describe-network-layer-interceptsに進んではいけません。IP、プロファイル、リージョン、およびその IP が本当に DDoS Native Protection を利用しているか(DDoS Pro などではないか)を確認してください。- 時間範囲が 30 日を超える — クライアント側で分割してください。サーバーに拒否させてはいけません。
Forbidden.RAM/NoPermission— 不足している Action を提示し、references/ram-policies.mdを案内してください。セクション 5 の権限エラー処理ブロックを実行してください。- タイムアウト/5xx /
Throttling.User— 1~2 回再試行してください(間隔は 2~5 秒)。PageSize /時間範囲を小さくしてください。タイムアウトを「インターセプトなし」として処理してはいけません。RequestId とともに元のエラーを提示してください。 is not a valid command or product— 不足しているプラグインをインストールしてください(aliyun plugin install --names aliyun-cli-ddosbgp aliyun-cli-antiddos-public)。
終了チェックポイント — AI モードを無効化:最終レポートを作成する前(成功時)と、その他すべての終了時点(エラー、キャンセル、権限ゲートなど)に、まず
aliyun configure ai-mode disableを実行してください。
8. 成功確認方法
手順ごとの確認コマンドと、9 項目の出力チェックリストは references/verification-method.md にあります。最終レポートを提出する前に、内容が完全で正しい形式になっていることを確認するために使用してください。
9. クリーンアップ
このスキルは読み取り専用です。Alibaba Cloud リソースの作成、変更、スケジュール設定は行いません。状態を変更する操作はセクション 7 の AI モード切り替えのみで、終了時には必ず無効化します。
aliyun configure ai-mode disable
その他にクリーンアップが必要なものはありません。
10. コマンド表
このスキルで使用する CLI コマンドの全一覧(すべてのパラメーター、有効な列挙値、JSON 形式、タイムスタンプヘルパーを含む)は references/related-commands.md にあります。
11. ベストプラクティス
- 楽観的に実行し、エラー発生時に診断する — ユーザーが具体的な質問をする前に、
aliyun version/aliyun plugin list/aliyun configure listを事前確認のために実行してはいけません(プロファイルに関する質問に必要なconfigure listを1回だけ対象を絞って実行する場合を除きます)。 - すべての
ddosbgp/antiddos-publicの呼び出しに--header User-Agent=...を必ず含めることで、Skills のトラフィックを監査できるようにします。 - 6つのAPIすべてで、デフォルトではプラグインモードのケバブケースを使用します。 プラグインがアクションを拒否した場合(
unknown command/'X' is not a valid api)、つまりそのアクションがインストール済みプラグインのメタデータにない場合に限り、OpenAPI ルートにフォールバックします。形式はaliyun --auto-plugin-install false <product> <PascalCaseAction> --forceとし、パラメーターには PascalCase を使用し、--versionは付けません。aliyun-cli-ddosbgp0.3.0 以降、これはDescribeNetworkLayerInterceptsに適用されます。セクション7「コマンドテンプレート」を参照してください。 - ユーザー入力は2段階で収集します — IP/InstanceId(厳密な形式が必要)にはプレーンテキストを使用し、プロファイル/リージョン/期間にのみ AskUserQuestion を使用します。「その他」を選択できるのは期間に限ります。
- 修正ではホワイトリストを最優先します — IP固有の緩和ポリシーのホワイトリストは、ポートブロック/フィンガープリント/地域ブロック/送信元レート制限/リフレクションフィルタリングより優先されます。誤検知のシナリオでは、常に最初にこれを推奨してください。
- パックのしきい値をインターセプト分析と混同してはいけません —
BaseThreshold/ElasticThresholdはスクラビング開始のしきい値であり、ルールによるインターセプトの結果ではありません。インターセプト概要には含めないでください。 - ポリシーの相関分析では、IP固有とポート固有の両方の緩和ポリシーについて、すべてのモジュールを一覧表示し、空のモジュールには「未設定」と明記します — これにより、ユーザーは「確認済みだが空」と「確認し忘れ」を区別できます。
PortRuleListと一致しないpacket_filterレコードは、デフォルトポリシー(テンプレート組み込みまたはAIデプロイ済み)によるものとして扱います。 「システムの異常」や「データの不一致」と決して主張しないでください。references/packet-filter-edge-cases.mdを参照してください。- 解決できていないエラーでは、必ず RequestId を提示します。 特にタイムアウトや5xxエラーでは、「インターセプトなし」として黙って処理しないでください。
- 終了時には、成功/失敗/エラー/キャンセルのいずれの場合も、AIモードを無効にします。 スキルの停止後にAIモードを有効なままにしてはいけません。
- ⛔️ ユーザーに質問するより、宣言的な出力を優先します — 不確かな場合(結果が空、コンテキスト不足、依頼が曖昧)は、ユーザーへの質問ではなく、最善の調査結果と推奨する次の手順を断定文として提示します。「Xを確認してください。」/「Yが必要ですか?」/「Zしましょうか?」といった表現や、回答の最後に選択肢を並べることは避けてください。AskUserQuestion を使用するのは、初回のパラメーター収集フェーズ(セクション6のステップ2)に限ります。ワークフローの途中や、拒否/結果なし/エラーへの応答の最後では使用しないでください。評価器は末尾の質問を
awaiting_user_inputと判定し、実行を失敗として扱います。
12. 参考リンク
| 参考資料 | 参照するタイミング |
|---|---|
| references/cli-installation-guide.md | ユーザーが Aliyun CLI のインストールまたはアップグレードを必要としている場合 |
| references/ram-policies.md | Forbidden.RAM / NoPermission エラーが発生した場合、またはユーザーが「必要な権限は何ですか?」と尋ねた場合 |
| references/default-policy-details.md | ユーザーが特定のデフォルトポリシーテンプレートについて尋ねた場合(例:「normal は何をブロックしますか?」「loose と strict の違いは?」)、またはデフォルトポリシーの Name をユーザーに表示する場合 |
| references/packet-filter-edge-cases.md | packet_filter によるインターセプトがあるものの、一致する PortRuleList ルールがない場合 |
| references/related-commands.md | CLI コマンド、パラメーター、列挙値、ヘルパーの全一覧 |
| references/verification-method.md | ワークフローの実行後、チェックリストに照らして最終レポートを検証する場合 |
| references/acceptance-criteria.md | このスキルのテスト時または新しい動作の開発時 — すべての CLI 呼び出しに対する ✅/❌ パターン |