zaproxy/action-api-scan
GitHub: zaproxy/action-api-scan
将 OWASP ZAP 的 API 动态安全扫描能力集成到 GitHub Actions 工作流中,实现对 OpenAPI、SOAP 和 GraphQL 接口的自动化安全检测与报告。
Stars: 72 | Forks: 23
# Action API 扫描
一个用于运行 ZAP [API scan](https://www.zaproxy.org/docs/docker/api-scan/) 以执行
动态应用程序安全测试 (DAST) 的 GitHub Action。
**警告** 此 Action 将对目标 API 执行攻击。
您只应扫描您有权限测试的目标。
在运行此 Action 之前,您还应咨询您的托管公司以及任何可能受影响的其他服务(例如 CDN)。
## 输入参数
### `target`
**必填** 目标 API 定义,OpenAPI 或 SOAP,本地文件或 URL,例如 https://www.example.com/openapi.json
或目标 endpoint URL,GraphQL,例如 https://www.example.com/graphql
### `format`
**可选** 定义的格式,`openapi`、`soap` 或 `graphql`。默认值为 `openapi`。
### `docker_name`
**可选** 要执行的 Docker 镜像名称。默认情况下,该 Action 运行稳定版本的 ZAP。但您可以
配置此参数以使用每周构建版本。
### `rules_file_name`
**可选** 您还可以指定 rules 文件的相对路径,以忽略 ZAP 扫描产生的任何警报。确保
在相关仓库内创建 rules 文件。以下展示了 rules 文件配置的示例。
确保检出仓库 (actions/checkout@v2) 以向扫描 Action 提供 ZAP 规则。
```
10011 IGNORE (Cookie Without Secure Flag)
10015 IGNORE (Incomplete or No Cache-control and Pragma HTTP Header Set)
```
### `cmd_options`
**可选** 扫描脚本的附加命令行选项
### `allow_issue_writing`
**可选** 默认情况下,该 Action 将使用 `issue_title` 输入将报告提交为 GitHub issue。
如果您不想创建或更新 issue,请将其设置为 false。
### `issue_title`
**可选** 要创建的 GitHub issue 的标题。
### `token`
**可选** ZAP Action 使用 GitHub 提供的默认 Action token 来创建和更新 API 扫描的 issue。
您无需创建专用 token。运行 Action 时,请确保使用 GitHub 的默认 Action token (`secrets.GITHUB_TOKEN`)。
### `fail_action`
**可选** 默认情况下,如果 ZAP Docker 容器识别到任何警报,它将带有一个 [退出代码](https://github.com/zaproxy/zaproxy/blob/7abbd57f6894c2abf4f1ed00fb95e99c34ef2e28/docker/zap-api-scan.py#L35) 而失败。
如果您希望在 ZAP 在扫描期间识别到任何警报时让 GitHub 扫描状态失败,请将此选项设置为 `true`。
### `artifact_name`
**可选** 默认情况下,该 Action 会将报告附加到构建中,命名为 `zap_scan`。将其设置为其他字符串以进行重命名。有关允许的 artifact 名称,请参阅 [GitHub 文档](https://github.com/actions/toolkit/blob/main/packages/artifact/docs/additional-information.md#non-supported-characters)。
## 环境变量
如果已设置,以下 [ZAP 身份验证环境变量](https://www.zaproxy.org/docs/authentication/handling-auth-yourself/#authentication-env-vars)
将被复制到 Docker 容器中:
- `ZAP_AUTH_HEADER_VALUE`
- `ZAP_AUTH_HEADER`
- `ZAP_AUTH_HEADER_SITE`
## 用法示例
** 基本 **
```
steps:
- name: ZAP Scan
uses: zaproxy/action-api-scan@v0.10.0
with:
target: 'https://www.zaproxy.org/'
```
** 高级 **
```
on: [push]
jobs:
zap_scan:
runs-on: ubuntu-latest
name: Scan the webapplication
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: master
- name: ZAP Scan
uses: zaproxy/action-api-scan@v0.10.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
docker_name: 'ghcr.io/zaproxy/zaproxy:stable'
format: openapi
target: 'https://www.zaproxy.org/'
rules_file_name: '.zap/rules.tsv'
cmd_options: '-a'
```
标签:API扫描, CISA项目, DAST, DevSecOps, Docker, GitHub Action, GraphQL, OpenAPI, SOAP, Web安全, 上游代理, 代码安全, 动态应用安全测试, 安全测试, 安全防御评估, 密码管理, 开源框架, 恶意软件分析, 持续集成, 攻击性安全, 漏洞枚举, 自定义脚本, 蓝队分析, 请求拦截, 逆向工具