SAS 总览数据查询

检索云安全中心(SAS)总览仪表板的 5 个核心模块:

  1. 安全总览 —— 评分、已修复漏洞、基线风险、已处理告警
  2. 使用信息 —— 服务天数、资产规模、未安装客户端
  3. 安全运营 —— 风险治理(AI 风险、CSPM、关键配置、系统漏洞)、安全防护(WAF 拦截)、安全响应
  4. 资产风险趋势 —— 主机 / 容器 / 云产品风险比 + 趋势图
  5. 账单与订阅 —— 后付费开关、订阅有效性、账单
执行范围:每个模块和每个数据项都可独立查询。
将范围与用户请求匹配:
- 单个数据项 —— 例如"我的安全评分是多少?" → 仅命令 1a
- 单个模块 —— 例如"显示资产风险趋势" → 模块 4 全部
- 完整总览 —— 例如"SAS 总览" → 全部 5 个模块

架构SAS + WAF + BssOpenApi

可观测性

User-Agent 模板

AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

Session-ID 生成规则

  • 每次 Skill 执行会话开始时生成一个 UUID v4(例如 550e8400-e29b-41d4-a716-446655440000)。
  • 单个会话内所有 aliyun CLI 命令必须使用同一个 {session-id},确保一次执行的所有请求可在日志中关联。
  • 每次新的 Skill 调用必须生成新的 session-id。

用法:通过每条 aliyun CLI 命令上的 --user-agent 标志传完整 UA 字符串:

SESSION_ID=$(python3 -c "import uuid; print(uuid.uuid4())")
aliyun sas describe-version-config --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/$SESSION_ID"

前置条件

前置检查:需要 Aliyun CLI >= 3.3.1
运行 aliyun version 确认 >= 3.3.1。若未安装或版本过低,
运行 curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash 更新,
或见 references/cli-installation-guide.md 获取安装说明。
前置检查:需要更新 Aliyun CLI 插件
[必须] 运行 aliyun configure set --auto-plugin-install true 启用插件自动安装。
[必须] 运行 aliyun plugin update 确保已有插件始终为最新版本。
设置 --auto-plugin-install true 后,所需插件(sas、waf-openapi、bssopenapi)在首次使用时自动安装——无需手动 aliyun plugin install 步骤。
前置检查:需要阿里云凭证
安全规则:
- 绝不读取、回显或打印 AK/SK 值(例如 echo $ALIBABA_CLOUD_ACCESS_KEY_ID 是禁止的)
- 绝不要求用户在对话或命令行中直接输入 AK/SK
- 绝不使用字面凭证值运行 aliyun configure set
- 使用 aliyun configure list 检查凭证状态
```bash
aliyun configure list
```
检查输出中是否有有效 profile(AK、STS 或 OAuth 身份)。
如果不存在有效 profile,就此停止。
1. 从阿里云控制台获取凭证
2. 在本会话之外配置凭证(通过终端中的 aliyun configure 或 shell profile 中的环境变量)
3. 待 aliyun configure list 显示有效 profile 后再返回并重试

参数

重要:参数确认 —— 执行任何命令或 API 调用前,
所有用户可自定义的参数(例如 RegionId、WAF InstanceId、BillingCycle 等)
都必须与用户确认。未经用户明确批准,不要假设或使用默认值。
参数必填说明默认值
Regions要聚合数据的 SAS 地域cn-shanghaiap-southeast-1
WAF Instance ID自动获取通过 WAF DescribeInstance 自动获取以用于 DescribeFlowChart自动
Billing Cycle仅账单账单月份,YYYY-MM 格式当前月
Time Range评分 / 趋势查询的历史天数7(最近 7 天)

RAM 权限

完整 RAM 策略 JSON 见 references/ram-policies.md

所需:AliyunYundunSASReadOnlyAccessAliyunWAFReadOnlyAccessAliyunBSSReadOnlyAccess

核心工作流

根据用户查询,执行下方相关模块。每个模块——以及模块内的每个数据项——都可独立执行。对于标记为多地域的 API,始终查询 cn-shanghaiap-southeast-1 两个地域,然后求和结果。

模块 1:安全总览

1a. 安全评分(地域无关)

aliyun sas describe-secure-suggestion --cal-type home_security_score --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

提取:响应中的 Score 字段作为当前安全评分

#

注意:DescribeScreenScoreThread 当前不可用(不支持 CalType)。

一旦支持,切换到以下命令获取评分 + 历史趋势:

START=$(python3 -c "import time; print(int((time.time()-86400*7)*1000))")

END=$(python3 -c "import time; print(int(time.time()*1000))")

aliyun sas describe-screen-score-thread \

--cal-type home_security_score \

--start-time "$START" --end-time "$END" \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

提取:Data.SocreThread[-1] = 当前评分,完整 SocreThread 列表 = 历史趋势

1b. 已修复漏洞(多地域:对 FixTotal 求和)

aliyun sas describe-vul-fix-statistics --region cn-shanghai --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

aliyun sas describe-vul-fix-statistics --region ap-southeast-1 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

1c. 基线风险统计(多地域:对每个 Summary 字段求和)

aliyun sas get-check-risk-statistics --region cn-shanghai --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

aliyun sas get-check-risk-statistics --region ap-southeast-1 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

提取:Summary.RiskCheckCnt、Summary.RiskWarningCnt、

Summary.HandledCheckTotal、Summary.HandledCheckToday

对每个字段跨地域求和

1d. 已处理告警(多地域:对 SuspiciousDealtCount 求和)

aliyun sas get-defence-count --region cn-shanghai --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

aliyun sas get-defence-count --region ap-southeast-1 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}


### 模块 2:使用信息

2a. 服务时长 + 订阅(地域无关)

aliyun sas describe-version-config --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

先检查 IsPaidUser:

IsPaidUser == true → 提取 CreateTime,计算(now - CreateTime)为天数

IsPaidUser == false → 服务时长不适用,显示 N/A

提取:ReleaseTime → 订阅到期(仅预付费)

2b. 主机资产信息(多地域:对 TotalCount 和 Cores 求和)

aliyun sas describe-cloud-center-instances \

--region cn-shanghai --machine-types ecs --current-page 1 --page-size 20 \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

aliyun sas describe-cloud-center-instances \

--region ap-southeast-1 --machine-types ecs --current-page 1 --page-size 20 \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

提取:PageInfo.TotalCount(跨地域求和)作为主机数

提取:对所有实例的 Cores 字段求和作为总核数

可选:用户要求时列出主机详情

2c. 未安装客户端(多地域:对 TotalCount 求和)

aliyun sas list-uninstall-aegis-machines --region cn-shanghai --current-page 1 --page-size 1 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

aliyun sas list-uninstall-aegis-machines --region ap-southeast-1 --current-page 1 --page-size 1 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}


### 模块 3:安全运营

#### 3a. 风险治理(地域无关,单次 API 调用)

aliyun sas describe-secure-suggestion --cal-type home_security_score --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

按 SuggestType 处理 Suggestions[]:

SS_AI_RISK → AI 风险

SSI_AISPM_RISK(AI 安全态势风险)

SSI_AI_VUL_RISK(AI 应用漏洞)

SSI_AI_SENSITIVE_RISK(AI 应用明文密钥)

按地域聚合 RiskCount

SS_SAS_CLOUD_HC → CSPM 风险(按 HIGH/MEDIUM/LOW 和地域聚合)

Cloud: SSI_SAS_CLOUD_HC_HIGH / MEDIUM / LOW

Host: SSI_SAS_HOST_HC_HIGH / MEDIUM / LOW

SS_KEY_CONFIG → 关键配置(SubType 不固定;对未知 SubType 分析 Description)

按地域聚合 RiskCount

SS_SAS_SYS_VUL → 系统漏洞(按 HIGH/MEDIUM/LOW 和地域聚合)

SSI_SAS_SYS_VUL_HIGH / SSI_SAS_SYS_VUL_MEDIUM / SSI_SAS_SYS_VUL_LOW

SS_SAS_EMG_VUL → 紧急漏洞(未修复的紧急漏洞)

SSI_SAS_EMG_VUL

SS_SAS_APP_VUL → 应用漏洞(按 HIGH/MEDIUM 和地域聚合)

SSI_SAS_APP_VUL_HIGH / SSI_SAS_APP_VUL_MEDIUM

SS_PRODUCT_CONNECT → 产品连接(资产防护未开启)

SSI_PRODUCT_CONNECT(Description 是含 itemDescKey/itemDescText 的 JSON 数组)

SS_SAS_ALARM → 安全响应(见模块 3c)

SSI_SAS_ALARM_HIGH(紧急)/ SSI_SAS_ALARM_MEDIUM(可疑)/ SSI_SAS_ALARM_LOW(提醒)


#### 3b. 安全防护 —— WAF 拦截(多地域,两步,仅 WAF 3.0)

> **WAF 版本要求**:本模块使用 WAF 3.0 API(Product:`waf-openapi`,Version:`2021-10-01`)。WAF 2.0 实例(Version `2019-09-10`)**不**兼容——`InstanceId` 和 `WafBlockSum` 等字段可能缺失或结构不同。如果用户的 WAF 实例是 2.0,告知他们本模块不支持其实例版本。
>
> **地域说明**:`waf-openapi`(WAF 3.0)是集中式端点产品——中国站 RegionId 是 `cn-hangzhou`(**不要**用 `cn-shanghai`)。同时**不要**在这些命令上传 `--version`:它会强制 Location 服务端点解析器,该解析器只认 `cn-hangzhou`/`ap-southeast-1`,在其他 RegionId 上会失败。

步骤 1:获取 WAF 实例 ID(按地域)

aliyun waf-openapi describe-instance --region cn-hangzhou --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

aliyun waf-openapi describe-instance --region ap-southeast-1 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

提取:从每个地域的响应中提取 InstanceId

步骤 2:用各地域的 InstanceId 查询 WAF 流量图

START_SEC=$(python3 -c "import time; print(int(time.time()-86400*7))")

aliyun waf-openapi describe-flow-chart \

--region cn-hangzhou \

--instance-id "<cn-hangzhou 的 InstanceId>" \

--start-timestamp "$START_SEC" \

--interval 3600 \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

aliyun waf-openapi describe-flow-chart \

--region ap-southeast-1 \

--instance-id "<ap-southeast-1 的 InstanceId>" \

--start-timestamp "$START_SEC" \

--interval 3600 \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

对两个地域的所有 WafBlockSum 值求和


#### 3c. 安全响应(地域无关,与 3a 同一 API)

aliyun sas describe-secure-suggestion --cal-type home_security_score --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

处理 Suggestions[] 中 SuggestType == "SS_SAS_ALARM":

SSI_SAS_ALARM_HIGH → 紧急告警事件数

SSI_SAS_ALARM_MEDIUM → 可疑告警事件数

SSI_SAS_ALARM_LOW → 提醒告警事件数


### 模块 4:资产风险趋势

4a. 主机资产(多地域)

aliyun sas describe-cloud-center-instances \

--region cn-shanghai --machine-types ecs --current-page 1 --page-size 1 \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

提取:PageInfo.TotalCount

aliyun sas describe-field-statistics \

--region cn-shanghai \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

提取:GroupedFields.RiskInstanceCount

对 ap-southeast-1 重复,两者求和

4b. 容器资产(多地域)

aliyun sas describe-container-field-statistics \

--region cn-shanghai \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

提取:ClusterCount、RiskClusterCount

对 ap-southeast-1 重复,两者求和

4c. 云产品资产(多地域)

aliyun sas get-cloud-asset-summary \

--region cn-shanghai \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

提取:GroupedFields.InstanceCountTotal、GroupedFields.InstanceRiskCountTotal

对 ap-southeast-1 重复,两者求和

4d. 趋势图数据(多地域)

START_MS=$(python3 -c "import time; print(int((time.time()-86400*7)*1000))")

END_MS=$(python3 -c "import time; print(int(time.time()*1000))")

aliyun sas describe-chart-data \

--region cn-shanghai \

--chart-id CID_ASSET_RISK_TREND \

--report-id -1 \

--time-start "$START_MS" --time-end "$END_MS" \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

返回时间序列:主机 / 容器 / 云风险计数


### 模块 5:账单与订阅

5a. 查询计费模式(来自模块 2a 响应,可复用缓存结果)

aliyun sas describe-version-config --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

检查 IsPaidUser 字段确定计费模式:

#

若 IsPaidUser == true → 预付费(订阅)用户:

提取 CreateTime → 购买日期(毫秒时间戳转 YYYY-MM-DD)

提取 ReleaseTime → 到期日期(毫秒时间戳转 YYYY-MM-DD)

#

若 IsPaidUser == false → 后付费用户:

提取 PostPayModuleSwitch(JSON 字符串——必须解析)

用下表将代码映射到产品名:

POST_HOST → 主机及容器安全

VUL → 漏洞修复

CSPM → CSPM

CTDR → Agentic SOC

AGENTLESS → 无代理检测

SERVERLESS → Serverless 资产防护

RASP → 应用防护

SDK → 恶意文件检测

CTDR_STORAGE → 日志管理

ANTI_RANSOMWARE → 防勒索

值 1 = 已启用,0 = 已禁用

5c. 账单详情(尝试每个地域,权限错误时跳过)

BILLING_CYCLE=$(date +%Y-%m)

aliyun bssopenapi query-bill \

--region cn-shanghai \

--billing-cycle "$BILLING_CYCLE" --product-code sas \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

若上方返回权限错误,不要静默跳过——告知用户(见数据处理规则 §1)

aliyun bssopenapi query-bill \

--region ap-southeast-1 \

--billing-cycle "$BILLING_CYCLE" --product-code sas \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-sas-overview/{session-id}

若上方返回权限错误,不要静默跳过——告知用户(见数据处理规则 §1)

聚合成功地域的结果,并明确报告任何跳过的地域

产品代码映射

产品名代码状态值
主机及容器安全POST_HOST1:已启用,0:已禁用
漏洞修复VUL1:已启用,0:已禁用
CSPMCSPM1:已启用,0:已禁用
Agentic SOCCTDR1:已启用,0:已禁用
无代理检测AGENTLESS1:已启用,0:已禁用
Serverless 资产防护SERVERLESS1:已启用,0:已禁用
应用防护RASP1:已启用,0:已禁用
恶意文件检测SDK1:已启用,0:已禁用
日志管理CTDR_STORAGE1:已启用,0:已禁用
防勒索ANTI_RANSOMWARE1:已启用,0:已禁用

数据处理规则

  1. 多地域聚合:需要地域的 API 必须分别查询 cn-shanghai + ap-southeast-1,然后对数值结果求和
  • 权限错误处理:如果某地域返回权限错误(例如 ForbiddenNoPermission),不要静默跳过。你必须明确告知用户哪些地域成功、哪些失败,包括缺失的权限。示例:"已从 cn-shanghai 检索到数据,但 ap-southeast-1 返回权限拒绝(缺少 sas:DescribeSecureSuggestion)。结果仅反映 cn-shanghai。"
  1. 时间戳:SAS API 使用毫秒时间戳。WAF API 使用时间戳。
  2. PostPayModuleSwitch:是 JSON 字符串——读取前必须 JSON.parse() / json.loads()
  3. 评分提取:用 DescribeSecureSuggestion 响应中的 Score 字段作为当前评分。注意:Score字符串返回(例如 "90.0"),不是数字——比较或显示前转为 float。注意:DescribeScreenScoreThread 当前不可用(不支持 CalType);一旦支持,切换为使用 Data.SocreThread[]最后一个元素作为当前评分、完整列表作为历史趋势。
  4. 安全响应:从 DescribeSecureSuggestionSuggestType == "SS_SAS_ALARM" 处提取。SubType:SSI_SAS_ALARM_HIGH(紧急)、SSI_SAS_ALARM_MEDIUM(可疑)、SSI_SAS_ALARM_LOW(提醒)。
  5. 时间戳格式化:毫秒时间戳转为 YYYY-MM-DD HH:mm:ss 用于显示。

成功验证

分步验证命令见 references/verification-method.md

清理

本 Skill 为只读(仅查询操作)。不创建资源,因此无需清理。

最佳实践

  1. 对多地域 API,聚合前始终查询 cn-shanghaiap-southeast-1 两个地域。
  2. 缓存 DescribeVersionConfig 响应——模块 2 和模块 5 都用它。
  3. --cli-query(JMESPath)提取特定字段以减少输出噪音。
  4. 仅需 TotalCount 时设 --page-size 1(例如 ListUninstallAegisMachines)。
  5. WAF DescribeFlowChart 需要有效 WAF 实例 ID——先通过 DescribeInstance 自动获取;查询 cn-shanghaiap-southeast-1 两个地域。
  6. 账单查询(QueryBill)需要 --region —— 依次尝试每个地域(cn-shanghaiap-southeast-1);跳过任何返回权限错误的地域。
  7. SAS 返回的所有时间戳都是毫秒——除以 1000 转为人类可读。

参考链接

文档内容
references/related-apis.md完整 API 和 CLI 命令参考表
references/ram-policies.md所需 RAM 权限和策略
references/verification-method.md分步验证命令
references/acceptance-criteria.md正确 / 错误 CLI 模式
references/cli-installation-guide.mdCLI 安装指南