阿里云云安全中心多账号管理与基线报告导出
使用 aliyun CLI 和 Python 脚本管理资源目录中的多个阿里云账号,并批量导出各账号的云安全中心基线报告。
前置条件与环境设置
1. 安装阿里云 CLI
macOS
brew install aliyun-cli
或从 GitHub 下载:https://github.com/aliyun/aliyun-cli/releases
检查凭证:
aliyun sts get-caller-identity
如果调用失败,引导用户运行 `aliyun configure` 设置凭证(交互步骤,必须由用户完成)。
### 1.1 配置 AI 模式和插件模式(必需)
本 Skill 需要 aliyun CLI 插件模式命令(kebab-case)和固定的 User-Agent 声明。
保持插件为最新
aliyun plugin update
如缺失则安装所需产品插件
aliyun plugin install --names aliyun-cli-sts,aliyun-cli-sas
启用 AI 模式并设置必需的 UA 段
aliyun configure ai-mode enable
aliyun configure ai-mode set-user-agent --user-agent AlibabaCloud-Agent-Skills
可选检查 / 回滚
aliyun configure ai-mode show
aliyun configure ai-mode disable
### 2. 安装 Python ≥ 3.6
检查版本
python3 --version # 需要 3.6+,推荐 3.9+
### 3. 创建虚拟环境并安装依赖
在 `<skill-path>/scripts/` 中创建虚拟环境并安装 `pyproject.toml` 中声明的依赖:
cd scripts/
选项 A:使用 venv
python3 -m venv .venv
.venv/bin/pip install -e .
选项 B:使用 uv(可选)
uv sync
选项 C:如果当前 Python 版本不受支持,作为系统依赖安装
pip install -r requirements.txt
### 4. 运行命令
所有脚本都必须用**虚拟环境中的 Python** 执行(无论是通过 venv、uv、conda 等创建)。本文档示例使用 `.venv/bin/python`;替换为你实际的虚拟环境路径。
---
工作目录
accounts.json 和导出的 Excel 文件保存在 Agent 当前工作目录(执行命令的目录)。脚本文件本身位于 <skill-path>/scripts/。运行命令时不要切换到 scripts 目录,否则 accounts.json 位置可能意外改变。
示例:从任意目录运行
.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。
为所有已启用账号导出
.venv/bin/python baseline.py export-cspm
为单个特定账号导出
.venv/bin/python baseline.py export-cspm --account-id 1225574417218097
### 导出系统基线风险列表
为所有已启用账号导出 `exportHcWarning` 风险列表(高/中/低,所有状态)并合并为 `system-warning-merged-{date}.xlsx`。
为所有已启用账号导出
.venv/bin/python baseline.py export-system-warning
为单个特定账号导出
.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。
为所有已启用账号导出
.venv/bin/python vuln.py export-cve
为单个特定账号导出
.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 仅支持两个 endpoint:
cn-shanghai(中国大陆)和ap-southeast-1(中国大陆以外)。
阿里云skills
◯ 评论 0