关于 alibabacloud-waf-cname-config-export
用于批量导出 Alibaba Cloud WAF 3.0 CNAME 域名配置的 Agent Skill,面向配置审计、交付文档和巡检报告制作。它查询中国内地与非中国内地实例的域名及详细配置,并整理为分区域工作表的 Excel 文件。
主要功能
- 01自动发现两个区域的 WAF 实例
- 02分页查询 CNAME 域名
- 03提取监听、重定向和证书配置
- 04按区域生成 Excel 工作表
- 05导出包含 18 列的配置表
适用场景
- 01审计 WAF 域名配置
- 02整理项目交付文档
- 03制作配置巡检报告
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ aliyun/ alibabacloud-aiops-skills --skill alibabacloud-waf-cname-config-export安装后在 Claude Code 中输入/alibabacloud-waf-cname-config-export确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/acceptance-criteria.mdcli-installation-guide.mdram-policies.mdrelated-commands.mdverification-method.mdscripts/alibabacloud_waf_cname_config_export.py详细介绍
Alibaba Cloud WAF 3.0 CNAME 域名配置批量导出
批量查询 WAF 3.0 实例下所有基于 CNAME 的域名配置,并生成结构化的 Excel 文件,用于配置审计、交付文档和巡检报告。
架构:WAF 3.0 Instance → CNAME Domains (DescribeDomains) → Domain Config: Listen + Redirect + Cert (DescribeDomainDetail) → Excel Export
站点和实例类型
| 维度 | 中国内地实例 | 非中国内地实例 |
|---|---|---|
| RegionId | cn-hangzhou | ap-southeast-1 |
| Endpoint | wafopenapi.cn-hangzhou.aliyuncs.com | wafopenapi.ap-southeast-1.aliyuncs.com |
单个账号可能同时拥有这两种实例。导出时必须同时查询两个 RegionId 并合并结果。
安装
预检查:需要 Aliyun CLI >= 3.3.3
运行
aliyun version确认版本 >= 3.3.3。如果尚未安装,请参阅 references/cli-installation-guide.md。
预检查:需要更新 Aliyun CLI 插件
aliyun configure set --auto-plugin-install true
aliyun plugin update
Python 依赖项(固定版本以确保可复现性):
pip install openpyxl==3.1.5
身份验证
预检查:需要 Alibaba Cloud 凭证
安全规则:
- 绝不读取、回显或打印 AK/SK 值
- 绝不要求用户直接输入 AK/SK
- 绝不使用
aliyun configure set和明文凭证值- 仅使用
aliyun configure list检查凭证状态aliyun configure list如果不存在有效的配置文件,请在此处停止。
- 从 Alibaba Cloud Console 获取凭证
- 在此会话之外配置凭证
- 等到
aliyun configure list显示有效配置文件后,返回并重新运行
国际站用户必须配置单独的配置文件(例如
aliyun configure --profile intl)。中国内地站和国际站的 AK 不能互换使用。
RAM 策略
| 操作 | 说明 |
|---|---|
yundun-waf:DescribeInstance | 查询 WAF 实例信息 |
yundun-waf:DescribeDomains | 查询域名列表 |
yundun-waf:DescribeDomainDetail | 查询域名详细配置 |
建议:附加系统策略 AliyunYundunWAFReadOnlyAccess。
完整 RAM 策略列表:请参阅 references/ram-policies.md
[MUST] 权限失败处理: 在执行期间的任何时候,如果命令或 API 调用因权限错误而失败,请遵循以下流程:
- 阅读
references/ram-policies.md,获取此 SKILL 所需权限的完整列表- 使用
ram-permission-diagnose技能,引导用户申请所需权限- 暂停操作,等待用户确认已授予所需权限
参数确认
重要:参数确认——在执行任何命令或 API 调用之前, 必须与用户确认所有可自定义的参数(例如 RegionId、实例名称、CIDR 块、 密码、域名、资源规格等)。未经用户明确批准,不要假设或使用默认值。
| 参数 | 必填/可选 | 说明 | 默认值 |
|---|---|---|---|
| RegionId | 自动 | 查询两个地域(cn-hangzhou + ap-southeast-1) | 两者 |
| InstanceId | 自动 | 通过 DescribeInstance 自动发现 | — |
| CLI Profile | 可选 | 使用默认配置文件;如果用户指定,则添加 --profile <name> | default |
| 输出文件 | 自动 | 使用带时间戳的固定文件名 | waf_cname_config_export_YYYYMMDD_HHMMSS.xlsx |
核心工作流
在核心工作流开始时(执行任何 CLI 调用之前): [MUST] 启用 AI-Mode — 执行 Agent Skill 时必须启用 AI-mode。
aliyun configure ai-mode enable aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-waf-cname-config-export"
步骤 1:自动发现 WAF 实例
[MUST] 无条件查询两个区域。 即使用户表示自己“只有国内实例”/“只有海外实例”/“只用一个区域”,也必须执行下面两个命令。用户关于实例分布的说法不能作为跳过任何一个区域的理由。实例发现是唯一权威来源。
aliyun waf-openapi describe-instance --region cn-hangzhou
aliyun waf-openapi describe-instance --region ap-southeast-1
如果响应包含非空的 InstanceId,则表示实例存在。国际站用户需添加 --profile intl。
步骤 2:批量查询域名列表
aliyun waf-openapi describe-domains \
--region cn-hangzhou \
--instance-id <InstanceId> \
--page-number 1 \
--page-size 50
分页:当 TotalCount > 50 时,循环递增 PageNumber。
步骤 3:查询每个域名的详细配置
aliyun waf-openapi describe-domain-detail \
--region cn-hangzhou \
--instance-id <InstanceId> \
--domain <DomainName>
返回 Listen(HttpPorts/HttpsPorts/TLSVersion/CipherSuite/Http2Enabled/CertId)和 Redirect(BackendList/BackupBackends/Loadbalance/SniEnabled/SniHost/Timeouts)。
[MUST] 对每个发现的实例,至少调用一次 DescribeDomainDetail。 遍历步骤 2 中的域名列表,并对每个域名调用此 API。如果步骤 2 对某个实例返回空列表(
TotalCount == 0),仍必须对该实例使用占位域名(例如--domain none)调用一次describe-domain-detail,以验证 API 可访问性和权限,然后记录“无域名”并继续。不得因列表为空而跳过此步骤。
步骤 4:生成 Excel 导出文件
每个区域使用一个工作表(“中国内地”/“非中国内地”)。共 18 列:Domain、CNAME、Status、HTTP Ports、HTTPS Ports、Backends、Backup Backends、Load Balancing、TLS Version、HTTP/2、Cert ID、SNI、SNI Host、Connect Timeout(s)、Read Timeout(s)、Write Timeout(s)、Force HTTP Backend、Resource Group。
[MUST] 必须使用随附脚本——这是唯一允许的执行方式:
python scripts/alibabacloud_waf_cname_config_export.py
不要用自己的 Python 代码重写、内联或重新实现导出逻辑。随附脚本封装了正确的 18 列架构、按区域划分的工作表布局、分页和字段命名约定。如果脚本失败,请诊断并修复根本原因(缺少
openpyxl==3.1.5、凭证问题等)——不要退而使用临时编写的代码。
字段名称说明:负载均衡字段为
Redirect.Loadbalance(而不是LoadBalanceType)。后端 IP 列表为Redirect.BackendList(字符串数组)。证书 ID 位于Listen.CertId。
步骤 5:禁用 AI-Mode
[MUST] 在每个退出点禁用 AI-Mode——无论何种原因,在给出最终回复之前,都必须先禁用 AI-mode。
aliyun configure ai-mode disable
成功验证
详细验证步骤请参阅 references/verification-method.md。
- Excel 文件可以打开,并且每个区域各有一个工作表
- 每个工作表都有 18 个列标题,且数据完整
- 每个工作表中的域名数量与 WAF 控制台显示一致
- 从控制台抽查 2–3 个域名,确认 CNAME 和后端配置准确无误
清理
未创建任何资源——无需清理。
最佳实践
- 始终查询两个区域,避免遗漏双实例情况
- 将 PageSize 设为 50(最大值),以减少请求次数
- 请求之间至少间隔 200ms(
time.sleep(0.2)),以避免触发限流 - 非 CNAME 域名的 CNAME 字段可能为空;请据此标注
- 中国内地和国际站的 CLI 配置文件必须分别配置
References
| Topic | Link |
|---|---|
| CLI Commands | See references/related-commands.md |
| RAM Policies | See references/ram-policies.md |
| Verification Method | See references/verification-method.md |
| Acceptance Criteria | See references/acceptance-criteria.md |
| CLI Installation | See references/cli-installation-guide.md |
| DescribeDomains API | https://help.aliyun.com/zh/waf/web-application-firewall-3-0/developer-reference/api-waf-openapi-2021-10-01-describedomains |
| DescribeDomainDetail API | https://help.aliyun.com/zh/waf/web-application-firewall-3-0/developer-reference/api-waf-openapi-2021-10-01-describedomaindetail |
| DescribeInstance API | https://help.aliyun.com/zh/waf/web-application-firewall-3-0/developer-reference/api-waf-openapi-2021-10-01-describeinstance |