用途
Cycode CLI 是一个命令行应用程序,可安装在本地,用于扫描代码仓库中的安全风险。它覆盖四类安全扫描:
- Secrets:检测密钥泄露
- IaC:检测基础设施即代码的配置错误
- SCA:软件成分分析,检测依赖漏洞
- SAST:静态应用安全测试
安装
该工具要求 Python 版本 3.10 或更高。安装方式包括:
- 从 PyPI 安装:
pip3 install cycode
- 从 Homebrew 安装:
brew install cycode
- 从 GitHub Releases 下载对应操作系统和架构的可执行文件,然后运行:
cd /path/to/downloaded/cycode-cli
chmod +x cycode
./cycode
认证
设置 Cycode 客户端 ID 和凭据(客户端密钥或 OIDC ID 令牌)有三种方法:
cycode auth(推荐):在终端运行后,浏览器会弹出登录页面,输入凭据登录,并选择要授权的业务组,点击 Allow 完成授权。终端会显示Successfully logged into cycode。如果已通过 Linux 或 Windows 环境变量设置了客户端 ID 和密钥,环境变量优先于此方法。cycode configure:交互式输入 Cycode API URL、APP URL、Client ID、Client Secret(如使用 OIDC 可跳过)和可选的 OIDC ID Token。成功后显示Successfully configured CLI credentials!或Successfully configured Cycode URLs!。凭据保存在用户目录下的.cycode文件夹中的credentials.yaml,URL 保存在同目录的config.yaml。- 环境变量:Windows 可通过控制面板的系统菜单、高级系统设置、环境变量按钮,创建
CYCODE_CLIENT_ID和CYCODE_CLIENT_SECRET;若使用 OIDC 认证,还可添加CYCODE_ID_TOKEN,并将cycode.exe加入 PATH。
使用方式
CLI 提供以下命令组:
- 认证与配置命令:
cycode auth、cycode configure scan命令:执行扫描,支持多种选项,如严重性阈值、Monitor Cycode、报告包漏洞、许可证合规、lock、restore、出错停止等。扫描范围包括仓库扫描、分支选项、路径扫描、Terraform Plan 扫描、提交历史扫描、提交范围选项(Diff 扫描)、Pre-Commit 扫描、本地 Diff 扫描(IDE 集成)、Pre-Push 扫描。扫描结果可显示或隐藏密钥,支持软失败。结果示例涵盖 Secrets、IaC、SCA 和 SAST。还支持公司自定义修复指南。- 忽略扫描结果:可按密钥值、密钥 SHA 值、路径、密钥/IaC/SCA 规则、包忽略,也可通过配置文件忽略。
report命令:生成 SBOM 报告。platform命令:包含命令发现、示例、注意事项与限制。- MCP 命令(实验性):可启动 MCP 服务器,包含可用选项、MCP 工具、使用示例和高级配置。
- AI Guardrails:说明其收集的数据。
集成到 Git 工作流
Cycode 的 pre-commit 和 pre-push 钩子可在本地仓库中设置,让 CLI 在提交或推送代码前自动识别问题。注意:pre-commit 和 pre-push 钩子不支持 IaC 扫描。
安装 pre-commit 钩子步骤:
- 安装 pre-commit 框架(需 Python 3.10 或更高):
pip3 install pre-commit
- 进入要配置的本地 Git 仓库顶层目录。
- 在仓库顶层创建
.pre-commit-config.yaml,内容示例:
repos:
- repo: https://github.com/cycodehq/cycode-cli
rev: v3.25.0
hooks:
- id: cycode
stages: [pre-commit]
可按需修改:钩子 ID cycode 用于 Secrets 扫描,cycode-sca 用于 SCA 扫描,cycode-sast 用于 SAST 扫描。如启用全部扫描类型,配置为:
repos:
- repo: https://github.com/cycodehq/cycode-cli
rev: v3.25.0
hooks:
- id: cycode
stages: [pre-commit]
- id: cycode-sca
stages: [pre-commit]
- id: cycode-sast
stages: [pre-commit]
- 安装钩子:
pre-commit install
成功时提示 Pre-commit installed at .git/hooks/pre-commit。
- 保持钩子更新:
pre-commit autoupdate
自动将 .pre-commit-config.yaml 中的 rev 更新到最新版 Cycode CLI。
pre-commit 钩子在 git commit 时触发,仅扫描暂存待提交的文件。
安装 pre-push 钩子:在 .pre-commit-config.yaml 中添加:
repos:
- repo: https://github.com/cycodehq/cycode-cli
rev: v3.25.0
hooks:
- id: cycode-pre-push
stages: [pre-push]
然后安装:
pre-commit install --hook-type pre-push
同时安装两种钩子:
pre-commit install
pre-commit install --hook-type pre-push
pre-push 钩子在 git push 时触发,仅扫描即将推送的提交。
证书与代理
默认情况下,Cycode CLI 使用随 CLI 附带的 CA 捆绑包验证 HTTPS 连接。如组织使用检查 HTTPS 流量的代理,或使用带自有 CA 的本地部署,有两种方式:
- 方式一:使用机器上已安装的证书。若 CA 位于机器证书存储(受管设备常见),可启用:CLI 将针对 Windows 证书存储、macOS Keychain 或 Linux 系统 CA 目录进行验证,无需配置证书路径。此选项有意设置为选择性加入,信任机器存储意味着信任该机器上的所有根证书,包括管理员或恶意软件安装的证书。仅在确认机器证书存储可信时启用。
- 方式二:让 CLI 指向 CA 捆绑包文件,无需选择性加入。
两种方式可结合:设置 CYCODE_CLI_ENABLE_TRUSTSTORE=1 后,REQUESTS_CA_BUNDLE 中的证书将与机器存储一同受信任,而非替代。运行任何命令加 -v 可查看当前信任来源,例如 cycode -v status。在 Windows 上,当未设置 REQUESTS_CA_BUNDLE 或 CURL_CA_BUNDLE 时,CLI 始终回退到系统证书存储。
适用场景与限制
适用于需要在开发生命周期中提升安全性的团队,可在本地开发、提交、推送各阶段扫描仓库中的密钥泄露、IaC 配置错误、依赖漏洞和代码安全问题。限制方面:pre-commit 和 pre-push 钩子不支持 IaC 扫描;MCP 命令标注为实验性;使用机器证书存储的信任选项需谨慎启用。