用途
api-security-spectral 用于在 API 部署前,对 OpenAPI(Swagger)或 AsyncAPI 规范进行安全审查。它借助 Spectral 对 API 规范做 lint,检查 API 设计中的认证、授权、限流和输入校验等安全实践。
主要能力
该技能会运行 Spectral 扫描 API 规范文件,并解析输出结果,按严重程度汇总问题,给出具体的规范修复建议。它关注的安全规则包括:
- oas3-api-servers:API 服务器必须使用 HTTPS
- operation-operationId:所有操作需要唯一 ID
- operation-description:操作应有文档说明
- Security scheme defined:需存在 OAuth2 / API key / Bearer token
- Input validation:请求体 schema 需带约束
- Error responses:需定义 401、403、429 响应
- Rate limiting:需记录限流相关响应头
- No eval/dynamic paths:路径参数需正确约束
使用方式
前置条件:已安装 Spectral(npm install -g @stoplight/spectral-cli),可用 spectral --version 验证。
使用步骤:
- 确定目标 API 规范文件(YAML/JSON)。
- 运行扫描:
- spectral lint <spec-file> --format json > spectral-results.json
- 使用自定义规则集:spectral lint <spec> --ruleset .spectral.yml --format json
- 指定格式:spectral lint openapi.yaml --format pretty
- 解析结果,以表格形式呈现发现项(序号、严重程度、规则、路径、消息、行号)。
- 汇总:按严重程度给出问题总数,并提出具体的规范修复建议。
自定义安全规则集
可创建 .spectral.yml 定义安全规则,例如:
extends: ["spectral:oas"] rules: oas3-server-https: description: Server URLs must use HTTPS given: "$.servers[*].url" then: function: pattern functionOptions: match: "^https://"
适用场景
适用于在部署前审查 OpenAPI 或 AsyncAPI 规范的安全问题,例如检查是否强制 HTTPS、是否定义安全方案、是否声明错误响应与限流头等。
限制
资料未提供关于支持平台、收费、价格或效果保证的说明。