阿里云云安全中心多账号管理与基线报告导出

使用 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 当前工作目录(执行命令的目录)。脚本文件本身位于 &lt;skill-path&gt;/scripts/。运行命令时不要切换到 scripts 目录,否则 accounts.json 位置可能意外改变。

示例:从任意目录运行

.venv/bin/python /path/to/scripts/accounts.py refresh

功能 1:账号管理(accounts.py

工作流

  1. 首次使用:运行 refresh 从资源目录获取账号列表。
  2. 按需过滤:使用 search 查找目标账号并获取 AccountId。
  3. 启用/禁用控制:使用 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 文件。

工作流

  1. 并发提交:为所有已启用账号提交 export-record 请求(QPS ≤ 5)。
  2. 并发轮询:为每个账号轮询 describe-export-info 直到导出完成。
  3. 下载并解压:下载 zip 并解压 xlsx。
  4. 合并输出:通过 merge.py 将所有账号 xlsx 文件合并为一个文件,追加“资源目录账号”列。
  5. 清理临时文件:合并后删除各账号临时 xlsx 文件。

前置条件

  • 已执行 accounts.py refresh 且完成账号启用/禁用配置。
  • aliyun CLI 已配置有效凭证,且具有 SAS export-recorddescribe-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 的账号并发启动漏洞导出任务。支持四种漏洞类型。轮询完成后,自动下载、解压并合并文件。

工作流

  1. 并发提交:为所有已启用账号提交 export-vul --force 请求(QPS ≤ 5)。
  2. 并发轮询:为每个账号轮询 describe-vul-export-info --force 直到导出完成。
  3. 下载并解压:下载 zip 并解压 xlsx。
  4. 合并输出:通过 merge.py 将所有账号 xlsx 文件合并为一个文件,追加“资源目录账号”列。
  5. 清理临时文件:合并后删除各账号临时 xlsx 文件。
当当前账号与调用方主账号相同时,自动省略 --ResourceDirectoryAccountId

前置条件

  • 已执行 accounts.py refresh 且完成账号启用/禁用配置。
  • aliyun CLI 已配置有效凭证,且具有 SAS export-vuldescribe-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(中国大陆以外)。

文档 3 / 6:alibabacloud-cfw-status-overview