mcpField
A
alibabacloud-waf-cname-config-export

alibabacloud-waf-cname-config-export

github.com/aliyun安全28139 次安装1 天前更新
代码仓库

关于 alibabacloud-waf-cname-config-export

用于批量导出 Alibaba Cloud WAF 3.0 CNAME 域名配置的 Agent Skill,面向配置审计、交付文档和巡检报告制作。它查询中国内地与非中国内地实例的域名及详细配置,并整理为分区域工作表的 Excel 文件。

主要功能

  1. 01自动发现两个区域的 WAF 实例
  2. 02分页查询 CNAME 域名
  3. 03提取监听、重定向和证书配置
  4. 04按区域生成 Excel 工作表
  5. 05导出包含 18 列的配置表

适用场景

  1. 01审计 WAF 域名配置
  2. 02整理项目交付文档
  3. 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.md
cli-installation-guide.md
ram-policies.md
related-commands.md
verification-method.md
scripts/
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

站点和实例类型
维度中国内地实例非中国内地实例
RegionIdcn-hangzhouap-southeast-1
Endpointwafopenapi.cn-hangzhou.aliyuncs.comwafopenapi.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

如果不存在有效的配置文件,请在此处停止。

  1. 从 Alibaba Cloud Console 获取凭证
  2. 在此会话之外配置凭证
  3. 等到 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 调用因权限错误而失败,请遵循以下流程:

  1. 阅读 references/ram-policies.md,获取此 SKILL 所需权限的完整列表
  2. 使用 ram-permission-diagnose 技能,引导用户申请所需权限
  3. 暂停操作,等待用户确认已授予所需权限

参数确认

重要:参数确认——在执行任何命令或 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。

  1. Excel 文件可以打开,并且每个区域各有一个工作表
  2. 每个工作表都有 18 个列标题,且数据完整
  3. 每个工作表中的域名数量与 WAF 控制台显示一致
  4. 从控制台抽查 2–3 个域名,确认 CNAME 和后端配置准确无误

清理

未创建任何资源——无需清理。

最佳实践

  1. 始终查询两个区域,避免遗漏双实例情况
  2. 将 PageSize 设为 50(最大值),以减少请求次数
  3. 请求之间至少间隔 200ms(time.sleep(0.2)),以避免触发限流
  4. 非 CNAME 域名的 CNAME 字段可能为空;请据此标注
  5. 中国内地和国际站的 CLI 配置文件必须分别配置

References

TopicLink
CLI CommandsSee references/related-commands.md
RAM PoliciesSee references/ram-policies.md
Verification MethodSee references/verification-method.md
Acceptance CriteriaSee references/acceptance-criteria.md
CLI InstallationSee references/cli-installation-guide.md
DescribeDomains APIhttps://help.aliyun.com/zh/waf/web-application-firewall-3-0/developer-reference/api-waf-openapi-2021-10-01-describedomains
DescribeDomainDetail APIhttps://help.aliyun.com/zh/waf/web-application-firewall-3-0/developer-reference/api-waf-openapi-2021-10-01-describedomaindetail
DescribeInstance APIhttps://help.aliyun.com/zh/waf/web-application-firewall-3-0/developer-reference/api-waf-openapi-2021-10-01-describeinstance

评论

支持 Markdown