关于 alibabacloud-sas-multiaccount-manage
通过 aliyun CLI 和 Python 脚本管理 Alibaba Cloud 资源目录账户,并批量导出 Security Center 报告。它将已启用账户的基线和漏洞结果合并为 Excel 文件。
主要功能
- 01刷新并搜索账户列表
- 02启用或停用导出账户
- 03批量导出基线报告
- 04导出四类漏洞报告
- 05将多账户结果合并为 Excel
适用场景
- 01汇总多个账户的 CSPM 结果
- 02查看多个账户的系统基线风险
- 03整合多个账户的漏洞报告
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ aliyun/ alibabacloud-aiops-skills --skill alibabacloud-sas-multiaccount-manage安装后在 Claude Code 中输入/alibabacloud-sas-multiaccount-manage确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/ram-policies.mdscripts/accounts.pybaseline.pymerge.pypyproject.tomlrequirements.txtvuln.py详细介绍
阿里云云安全中心多账号管理与基线报告导出
使用 aliyun CLI 和 Python 脚本管理资源目录中的多个阿里云账号,并为每个账号批量导出云安全中心基线报告。
前置条件与环境设置
1. 安装 Alibaba Cloud CLI
# macOS
brew install aliyun-cli
# Or download from GitHub: https://github.com/aliyun/aliyun-cli/releases
检查凭据:
aliyun sts get-caller-identity
如果调用失败,请提示用户运行 aliyun configure 并设置凭据(交互步骤,必须由用户完成)。
1.1 配置 AI 模式和插件模式(必需)
此技能需要使用 aliyun CLI 插件模式命令(kebab-case)和固定的 User-Agent 声明。
# Keep plugins up to date
aliyun plugin update
# Install required product plugins if missing
aliyun plugin install --names aliyun-cli-sts,aliyun-cli-sas
# Enable AI mode and set required UA segment
aliyun configure ai-mode enable
aliyun configure ai-mode set-user-agent --user-agent AlibabaCloud-Agent-Skills
# Optional checks / rollback
aliyun configure ai-mode show
aliyun configure ai-mode disable
2. 安装 Python ≥ 3.6
# Check version
python3 --version # Requires 3.6+, 3.9+ recommended
3. 创建虚拟环境并安装依赖项
在 <skill-path>/scripts/ 中创建虚拟环境,并安装 pyproject.toml 中声明的依赖项:
cd scripts/
# Option A: use venv
python3 -m venv .venv
.venv/bin/pip install -e .
# Option B: use uv (optional)
uv sync
# Option C: if current Python version is unsupported, install as system dependencies
pip install -r requirements.txt
4. 运行命令
所有脚本都必须使用虚拟环境中的 Python 执行(无论虚拟环境是通过 venv、uv、conda 等创建的)。本文示例使用 .venv/bin/python;请将其替换为实际的虚拟环境路径。
工作目录
accounts.json 和导出的 Excel 文件会保存在 Agent 的当前工作目录(执行命令的目录)中。脚本文件本身位于 <skill-path>/scripts/。运行命令时请勿切换到 scripts 目录,否则 accounts.json 的位置可能会意外改变。
# Example: run from any directory
.venv/bin/python /path/to/scripts/accounts.py refresh
功能 1:账号管理(accounts.py)
工作流
- 首次使用:运行
refresh,从资源目录获取账号列表。 - 按需筛选:使用
search查找目标账号并获取 AccountId。 - 启用/禁用控制:使用
enable/disable决定哪些账号参与批量导出。
快速入门
刷新账号列表
从阿里云资源目录获取最新账号列表并写入 accounts.json。现有的 enable 状态会保留;新账号默认启用。
.venv/bin/python accounts.py refresh
列出所有账号
.venv/bin/python accounts.py list
示例输出:
1225574417218097 cwx [enabled]
1234567890123456 prod-account [disabled]
搜索账号
按 DisplayName 模糊搜索,并返回 AccountId 和启用状态。
.venv/bin/python accounts.py search cwx
.venv/bin/python accounts.py search prod
启用/禁用账号
控制账号是否参与后续批量导出。
.venv/bin/python accounts.py enable 1225574417218097
.venv/bin/python accounts.py disable 1234567890123456
accounts.json 结构
[
{
"AccountId": "1225574417218097",
"DisplayName": "cwx",
"FolderId": "r-1Q4pqB",
"IsMaAccount": "NO",
"SasVersion": "0",
"enable": true
}
]
功能 2:批量导出基线报告(baseline.py)
为所有 enable=true 的账号并发启动导出任务。轮询任务直至完成后,下载文件、解压并合并为一个 Excel 文件。
工作流
- 并发提交:为所有已启用账号提交
export-record请求(QPS ≤ 5)。 - 并发轮询:针对每个账号轮询
describe-export-info,直至导出完成。 - 下载并解压:下载 zip 并解压 xlsx。
- 合并输出:通过
merge.py将所有账号的 xlsx 文件合并为一个文件,并添加“资源目录账号”列。 - 清理临时文件:合并后删除各账号的临时 xlsx 文件。
前置条件
- 已运行
accounts.py refresh,并完成账号启用/禁用配置。 - aliyun CLI 已配置有效凭据,并具有 SAS
export-record和describe-export-info权限。 - 账号必须已购买云安全中心(免费版账号会自动跳过)。
导出云平台配置检查结果(CSPM)
为所有已启用账号导出 baselineCspm 结果,并合并为 baseline-cspm-merged-{date}.xlsx。
# Export for all enabled accounts
.venv/bin/python baseline.py export-cspm
# Export for one specific account
.venv/bin/python baseline.py export-cspm --account-id 1225574417218097
导出系统基线风险列表
为所有已启用账号导出 exportHcWarning 风险列表(高/中/低,所有状态),并合并为 system-warning-merged-{date}.xlsx。
# Export for all enabled accounts
.venv/bin/python baseline.py export-system-warning
# Export for one specific account
.venv/bin/python baseline.py export-system-warning --account-id 1225574417218097
输出文件
| 文件 | 描述 |
|---|---|
baseline-cspm-merged-{date}.xlsx | 合并后的云平台配置检查结果,包含“资源目录账号”列 |
system-warning-merged-{date}.xlsx | 合并后的系统基线风险列表,包含“资源目录账号”列 |
错误处理
| 场景 | 行为 |
|---|---|
FreeVersionNotPermit | 静默跳过此账号并继续处理其他账号 |
NoPermission / Forbidden | 静默跳过此账号 |
| 导出失败(服务端错误) | 输出 [failed] 消息并继续处理其他账号 |
| 跳过所有账号 | 输出消息并退出,不生成输出文件 |
功能 3:批量导出漏洞(vuln.py)
为所有 enable=true 的账号并发启动漏洞导出任务。支持四种漏洞类型。轮询任务完成后,自动下载、解压并合并文件。
工作流
- 并发提交:为所有启用的账号提交
export-vul --force请求(QPS ≤ 5)。 - 并发轮询:为每个账号轮询
describe-vul-export-info --force,直到导出完成。 - 下载并解压:下载 zip 并解压 xlsx。
- 合并输出:通过
merge.py将所有账号的 xlsx 文件合并为一个文件,并追加“资源目录账号”列。 - 清理临时文件:合并后删除每个账号的临时 xlsx 文件。
当前账号与调用方的主账号相同时,将自动省略
--ResourceDirectoryAccountId。
前提条件
- 已执行
accounts.py refresh,并完成账号启用/停用配置。 - aliyun CLI 已配置有效凭证,并具有 SAS
export-vul和describe-vul-export-info权限。 - 账号必须已购买云安全中心(免费版账号将自动跳过)。
导出 Linux 软件漏洞(CVE)
为所有启用的账号导出未解决的 Linux 软件漏洞(高/中/低优先级),并合并到 vul-cve-merged-{date}.xlsx。
# Export for all enabled accounts
.venv/bin/python vuln.py export-cve
# Export for one specific account
.venv/bin/python vuln.py export-cve --account-id 1225574417218097
导出 Windows 系统漏洞
为所有启用的账号导出未解决的 Windows 系统漏洞(高/中/低优先级),并合并到 vul-sys-merged-{date}.xlsx。
.venv/bin/python vuln.py export-sys
.venv/bin/python vuln.py export-sys --account-id 1225574417218097
导出应用漏洞(包括 SCA)
为所有启用的账号导出未解决的应用漏洞(ECS + 容器,包括软件成分分析),并合并到 vul-app-merged-{date}.xlsx。
.venv/bin/python vuln.py export-app
.venv/bin/python vuln.py export-app --account-id 1225574417218097
导出应急漏洞
为所有启用的账号导出应急漏洞(风险状态),并合并到 vul-emg-merged-{date}.xlsx。
.venv/bin/python vuln.py export-emg
.venv/bin/python vuln.py export-emg --account-id 1225574417218097
输出文件
| 文件 | 描述 |
|---|---|
vul-cve-merged-{date}.xlsx | 合并后的 Linux 软件漏洞列表,包含“资源目录账号”列 |
vul-sys-merged-{date}.xlsx | 合并后的 Windows 系统漏洞列表,包含“资源目录账号”列 |
vul-app-merged-{date}.xlsx | 合并后的应用漏洞列表(包括 SCA),包含“资源目录账号”列 |
vul-emg-merged-{date}.xlsx | 合并后的应急漏洞列表,包含“资源目录账号”列 |
导出参数详情
| 类型 | export-vul 参数 |
|---|---|
export-cve | --Type cve --Necessity asap,later,nntf --Dealed n |
export-sys | --Type sys --Necessity asap,later,nntf --Dealed n |
export-app | --Type app --Necessity asap,later,nntf --AttachTypes sca --AssetType ECS,CONTAINER --Dealed n |
export-emg | --Type emg --RiskStatus y --Dealed n |
错误处理
| 场景 | 行为 |
|---|---|
FreeVersionNotPermit | 静默跳过此账号并继续处理其他账号 |
NoPermission / Forbidden | 静默跳过此账号 |
| 导出失败(服务端错误) | 打印 [failed] 消息并继续处理其他账号 |
| 跳过所有账号 | 打印消息并退出,不生成输出文件 |
注意事项
- 脚本必须在虚拟环境中运行。示例使用
.venv/bin/python;请替换为实际的虚拟环境路径。 - 使用
aliyun configure管理 aliyun CLI 凭证;不要将 AK/SK 硬编码。 - SAS API 仅支持两个端点:
cn-shanghai(中国大陆)和ap-southeast-1(中国大陆以外)。