CycodeLabs/cimon-action
GitHub: CycodeLabs/cimon-action
一款基于eBPF技术的CI/CD流水线运行时安全解决方案,通过监控网络和进程行为来检测并阻止软件供应链攻击。
Stars: 113 | Forks: 9
# 🦫 使用 Cimon 保护您的 CI 安全

[Cimon](https://cimon.build)(发音为 "Simon")是一款运行时安全解决方案,通过简单的入门流程和对开发者友好的体验,检测并阻止针对您流水线的软件供应链攻击,包括那些针对 SolarWinds 和 CodeCov 的攻击。
通过利用革命性的 eBPF 技术,Cimon 在内核内部监控并缓解攻击,在攻击出现时立即拒绝其对用户资产的访问。
此操作有助于将代理无缝部署到任何所需的 GitHub Actions 构建中。该操作基于 NodeJS 引擎,包含简单的 `pre` 和 `post` 脚本,用于部署代理并优雅地将其关闭。
在我们的[文档](https://docs.cimon.build)中了解更多关于 Cimon 的信息。
## 🏃♂️ Cimon 入门
Cimon 的入门非常简单,只需在流水线中引入一个步骤即可。Cimon 操作应该是您每个作业中的第一步。
我们建议在“检测模式”下启动 Cimon,以便在应用预防策略之前让其了解您的环境。
```
- uses: cycodelabs/cimon-action@v0
```
## 🔨 用法
该操作支持以下参数:
| 名称 | 默认值 | 描述 |
| ------------------------ | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `client-id` | | 用于身份验证的 Cimon 客户端 ID |
| `secret` | | 用于身份验证的 Cimon 密钥 |
| `url` | | 用于身份验证的 Cimon 端点 |
| `prevent` | `false` | 启用预防模式 |
| `allowed-ips` | | 以逗号或空格分隔的允许 IP 地址列表 |
| `allowed-hosts` | | 以逗号或空格分隔的允许域名列表。最左侧的标签可以是通配符 (`*`) 以匹配多个子域名(例如 `*.example.com`)。 |
| `ignored-ip-nets` | | 以 CIDR 表示法表示的忽略 IP 网络列表,以逗号或空格分隔,例如 10.0.0.0/8, 172.16.0.0/12。如果您的工作流运行连接到配置了子范围的自定义网络的容器,则此设置是强制性的。换句话说,容器间网络通常会被 Cimon 忽略。Cimon 隐式忽略 10.0.0.0/8 和 172.16.0.0/12 网络。 |
| `github-token` | `${{ github.token }}` | GitHub 令牌(用于克服 GitHub 速率限制) |
| `report-job-summary` | `true` | 通过作业摘要输出报告结果 |
| `report-process-tree` | `false` | 启用以报告进程树 |
| `slack-webhook-endpoint` | | 用于报告安全事件的 Slack webhook 端点 |
| `apply-fs-events` | `false` | 启用处理文件系统事件并在进程树报告中显示它们 |
| `log-level` | `info` | 日志级别(用于调试) |
| `feature-gates` | | 描述 Cimon 功能的一组键值对 |
| `fail-on-error` | `false` | 如果 Cimon 遇到错误,则使 CI 失败 |
## ⚙️ 场景
### 在检测模式下运行 Cimon
```
steps:
- uses: cycodelabs/cimon-action@v0
```
### 在预防模式下运行 Cimon
```
steps:
- uses: cycodelabs/cimon-action@v0
with:
prevent: true
allowed-hosts: >
cycode.com
```
### 在带有进程树和文件系统事件的检测模式下运行 Cimon
```
steps:
- uses: cycodelabs/cimon-action@v0
with:
report-process-tree: true
apply-fs-events: true
```
### 运行具有增强 Cycode 功能的 Cimon
您可以在[这里](https://docs.cimon.build/#cimon-with-cycode)阅读更多相关内容。
```
steps:
- uses: cycodelabs/cimon-action@v0
with:
client-id: ${{ secrets.CIMON_CLIENT_ID }}
secret: ${{ secrets.CIMON_SECRET }}
```
## 🛡️ 安全报告
每次流水线运行都会通过嵌入在 GitHub Actions 流水线摘要中的安全报告来报告其发现。
以下是 Cimon 报告的一个示例:

作为作业摘要创建的报告包含基于配置的运行作业的配置文件,并包含一个片段以帮助用户从检测过渡到预防。
当策略设置为“预防”时,任何与配置文件匹配的安全异常都会显示在报告中:

## 🪚 开发
欢迎对 GitHub Action 做出贡献。对 `src` 文件夹进行更改后,应通过以下构建过程将这些更改反映到 `dist` 文件夹:
1. 安装或更新包依赖项:
npm install
2. 使用 [ncc] 将 JavaScript 源文件编译为单个入口点文件:
npm run all
构建脚本将更新 [dist](dist) 目录中的操作入口点代码,该目录应添加到 Git 仓库中。
## 🪪 许可证
[Apache License 2.0](./LICENSE.md)
标签:AMSI绕过, CI/CD 安全, CodeCov, DevSecOps, Docker镜像, GitHub Actions, GNU通用公共许可证, Node.js, SolarWinds, 上游代理, 入侵防御, 内核级监控, 威胁检测, 安全防护, 数据投毒防御, 文档安全, 管道安全, 网络安全, 自动笔记, 自定义脚本, 自定义脚本, 软件供应链安全, 软件开发工具包, 远程方法调用, 隐私保护