Pre-check: Aliyun CLI >= 3.3.3 required
> Run aliyun version to verify >= 3.3.3. If not installed or version too low,
> run curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash to update,
> or see references/cli-installation-guide.md for installation instructions.
Pre-check: Aliyun CLI plugin update required
> [MUST] run aliyun configure set --auto-plugin-install true to enable automatic plugin installation.
> [MUST] run aliyun plugin update to ensure that any existing plugins are always up-to-date.
At the start of the Core Workflow (before any CLI invocation):
[MUST] Enable AI-Mode — AI-mode is required for Agent Skill execution.
Run the following commands before any CLI invocation:
aliyun configure ai-mode enable
aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-waf-checkresponse-intercept-query"
[MUST] Disable AI-Mode at EVERY exit point — Before delivering the final response for ANY reason, always disable AI-mode first. This applies to ALL exit paths: workflow success, workflow failure, error/exception, user cancellation, session end, or any other scenario where no further CLI commands will be executed.
AI-mode is only used for Agent Skill invocation scenarios and MUST NOT remain enabled after the skill stops running.
aliyun configure ai-mode disable
[MUST] CLI User-Agent — Every aliyun CLI command invocation must include:
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-waf-checkresponse-intercept-query
Before execution, you must collect the following information from the user:
| Parameter | Description | Required |
|---|---|---|
| ----------- | ------------- | ---------- |
| Request ID | The traceid obtained from the HTML body of WAF's block (intercept) response, or the Request ID shown on the 405 block page displayed in the browser | Yes |
Optional: WAF Instance ID, SLS Project name, SLS Logstore name (will be auto-discovered if not provided)
Notes:
| RegionId Value | Region | Description |
|---|---|---|
| ---------------- | -------- | ------------- |
cn-hangzhou | Chinese Mainland | WAF instances within mainland China |
ap-southeast-1 | Outside Chinese Mainland | WAF instances in overseas and Hong Kong/Macao/Taiwan regions |
Confirm the Request ID (traceid) with the user. If the user has not provided one, guide them to obtain it from:
If the user has not provided WAF Instance ID and SLS configuration, perform auto-discovery:
# Query WAF instances in both regions in parallel
aliyun waf-openapi DescribeInstance --region cn-hangzhou --RegionId cn-hangzhou --user-agent AlibabaCloud-Agent-Skills/alibabacloud-waf-checkresponse-intercept-query
aliyun waf-openapi DescribeInstance --region ap-southeast-1 --RegionId ap-southeast-1 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-waf-checkresponse-intercept-query
Before retrieving SLS configuration, you MUST first verify that the WAF instance has log service enabled by calling DescribeSlsLogStoreStatus:
aliyun waf-openapi DescribeSlsLogStoreStatus --region <region-id> --InstanceId '<instance-id>' --RegionId '<region-id>' --user-agent AlibabaCloud-Agent-Skills/alibabacloud-waf-checkresponse-intercept-query
SlsLogStoreStatus is true/enabled), skip the enable operation and proceed directly to Step 2c (idempotent: no redundant writes).ModifyUserWafLogStatus to enable it:aliyun waf-openapi ModifyUserWafLogStatus \
--region <region-id> \
--InstanceId '<instance-id>' \
--Status 1 \
--RegionId '<region-id>' \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-waf-checkresponse-intercept-query
> Constraint: This skill only supports enabling log service (Status=1). Disabling log service is not permitted. Never call this API with Status=0.
After enabling, wait a moment and re-verify with DescribeSlsLogStoreStatus to confirm activation.
Once DescribeSlsLogStoreStatus confirms that log service is enabled, you must immediately call DescribeSlsLogStore to obtain the WAF log Project and Logstore information:
aliyun waf-openapi DescribeSlsLogStore --region <region-id> --InstanceId '<instance-id>' --RegionId '<region-id>' --user-agent AlibabaCloud-Agent-Skills/alibabacloud-waf-checkresponse-intercept-query
Key fields in the DescribeSlsLogStore response:
| Field | Description |
|---|---|
| ------- | ------------- |
ProjectName | SLS Project name associated with the WAF instance |
LogStoreName | SLS Logstore name for WAF logs |
Ttl | Log retention period (in days) |
Cross-region note: The SLS log storage region may differ from the WAF instance region (e.g., WAF in ap-southeast-1 but SLS logs stored in ap-southeast-5). When querying SLS in Step 3, always use the region where the SLS Project is located, not the WAF instance region.
Use the ProjectName, LogStoreName and SLS region obtained from Step 2 to query block logs (prefer using the Python script):
# Query using script (recommended, supports automatic time range expansion)
python3 scripts/get_waf_logs.py \
--project <project-name> \
--logstore <logstore-name> \
--request-id <request-id> \
--region <sls-region>
Or use CLI directly:
TO_TIME=$(python3 -c "import time; print(int(time.time()))")
FROM_TIME=$((TO_TIME - 86400))
aliyun sls get-logs \
--project <project-name> \
--logstore <logstore-name> \
--from $FROM_TIME \
--to $TO_TIME \
--query "<request-id>" \
--region <sls-region> \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-waf-checkresponse-intercept-query
Important: The --region here must be the SLS log storage region, which may differ from the WAF instance region. Check the DescribeSlsLogStore response from Step 2 to determine the correct SLS region.
Extract rule_id and final_plugin from the logs to query the rule configuration:
Important: The DescribeDefenseRule API requires the DefenseScene parameter. Common defense scenes include:
custom_acl - Custom access control rulescustom_cc - Custom rate limiting rules (CC rules)waf_group - WAF protection rulesantiscan - Anti-scan rulesdlp - Data leakage preventiontamperproof - Anti-tamperingYou can determine the defense scene from final_plugin field in the logs:
| final_plugin | DefenseScene |
|---|---|
| -------------- | --------------- |
| customrule | custom_acl or custom_cc |
| waf | waf_group |
| scanner_behavior | antiscan |
| dlp | dlp |
# Query rule details with DefenseScene
aliyun waf-openapi DescribeDefenseRule \
--region <region-id> \
--InstanceId '<instance-id>' \
--TemplateId <template-id> \
--RuleId <rule-id> \
--DefenseScene '<defense-scene>' \
--RegionId '<region-id>' \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-waf-checkresponse-intercept-query
Note: If you don't know the TemplateId, first use DescribeDefenseTemplates to list templates:
aliyun waf-openapi DescribeDefenseTemplates \
--region <region-id> \
--InstanceId '<instance-id>' \
--DefenseScene '<defense-scene>' \
--RegionId '<region-id>' \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-waf-checkresponse-intercept-query
Output using the following template:
## WAF Block Analysis Report
### Request Information
- Request ID: {request_id}
- Block Time: {time}
- Client IP: {real_client_ip (masked, e.g. 192.***.***.***)}
- Request URL: {host}{request_path}?{masked_query_params}
### Block Details
- Rule ID: {rule_id}
- Rule Name: {rule_name}
- Action: {action}
### Recommendations
{Provide recommendations based on rule type, refer to references/common-block-reasons.md}
```bash
aliyun waf-openapi DescribeSlsLogStoreStatus --region
```
If not enabled, prompt the user and enable with ModifyUserWafLogStatus (see Step 2b). Only enabling (Status=1) is allowed.
```bash
aliyun waf-openapi DescribeResourceLogStatus --region
```
DescribeResourceLogStatus shows log collection is disabled for the target resource; skip if already enabled):```bash
aliyun waf-openapi ModifyResourceLogStatus \
--region
--InstanceId '
--Resource '
--Status true \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-waf-checkresponse-intercept-query
```
See references/common-block-reasons.md for protection object naming conventions.
If you encounter permission errors, check the following:
```bash
aliyun configure list
```
Required permissions:
waf-openapi:DescribeInstancewaf-openapi:DescribeSlsLogStoreStatuswaf-openapi:DescribeSlsLogStorewaf-openapi:ModifyUserWafLogStatus (optional, for enabling log service)waf-openapi:DescribeDefenseRule (for rule details)sls:GetLogs (for log queries)```bash
aliyun waf-openapi DescribeInstance --profile
```
If the Request ID is not found in the logs:
cn-hangzhou and ap-southeast-1--ttl parameter if differentIf both Chinese Mainland and non-Chinese Mainland instances exist, determine based on query results:
Note: Follow the same discovery commands as in Step 2, then query logs across all discovered SLS projects until the Request ID is found.
When the user requests to disable a rule:
DescribeDefenseRule to query the rule's current status. If the rule is already in the target state (e.g., already disabled), skip the write operation and inform the user (idempotent check-then-act pattern)ModifyDefenseRuleStatus with RuleStatus=0)# Disable a rule (only after confirming it is currently enabled)
aliyun waf-openapi ModifyDefenseRuleStatus \
--region <region-id> \
--InstanceId '<instance-id>' \
--RuleId <rule-id> \
--RuleStatus 0 \
--RegionId '<region-id>' \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-waf-checkresponse-intercept-query
See references/rule-operations.md for detailed instructions.
共 1 个版本