增强您的源代码管理安全态势!
检测并修复所有GitHub和GitLab资产中的错误配置、安全与合规问题 🔥
由 Legit Security 提供。
Legit Security 是一个应用程序安全态势管理(ASPM)和软件供应链安全解决方案。
更多信息请查看 对比表
可以通过多种方式安装:
brew install legitify
你可以从 https://github.com/Legit-Labs/legitify/releases 下载最新的 legitify 发行版,每个压缩包包含:
从源代码通过以下步骤:
git clone [email protected]:Legit-Labs/legitify.git
go run main.go analyze ...
gh extension install legit-labs/gh-legitify
gh legitify
你可以使用 Legitify 自定义 GitHub Actions 将 legitify 作为 CI 流程的一部分运行:
name: Legitify Analyze
on:
workflow_dispatch:
schedule:
- cron: '0 11 * * 1-5'
jobs:
analyze:
runs-on: ubuntu-latest
steps:
- name: Legitify Action
uses: Legit-Labs/legitify@main
with:
github_token: ${{ secrets.PAT_FOR_LEGITIFY }}
ignore-policies: |
non_admins_can_create_public_repositories
requires_status_checks
查看 action 文件 以获取更多参数和配置。
为了增强 legitify 用户的软件供应链安全,从 v0.1.6 开始,每个 legitify 发行版都包含一个 SLSA Level 3 来源证明 文档。
该来源证明文档引用发行版中的所有工件,以及生成的 Docker 镜像。
你可以使用 SLSA 框架的官方验证工具 来验证来源证明。
以下示例适用于 v0.1.6 发行版的 darwin_arm64 架构:
VERSION=0.1.6
ARCH=darwin_arm64
./slsa-verifier verify-artifact --source-branch main --builder-id 'https://github.com/slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@refs/tags/v1.2.2' --source-uri "git+https://github.com/Legit-Labs/legitify" --provenance-path multiple.intoto.jsonl ./legitify_${VERSION}_${ARCH}.tar.gz
SCM_TOKEN=<your_token> legitify analyze
默认情况下,legitify 将根据所有资源(组织、仓库、成员、操作)检查策略。已归档的仓库将被跳过。
你可以使用命令行标志 namespace 和 org 来控制要分析的资源:
--namespace (-n):分析与指定资源相关的策略--org:将分析范围限制为指定的 GitHub 组织或 GitLab 组,排除已归档仓库--repo:将分析范围限制为指定的 GitHub 仓库或 GitLab 项目--scm:指定源代码管理平台。可选值为:github 或 gitlab。默认为 github。请注意:在 GitLab 上运行时,需要添加 --scm gitlab。--enterprise:指定要分析的企业。请注意:要分析企业,必须提供企业 slug。SCM_TOKEN=<your_token> legitify analyze --org org1,org2 --namespace organization,member
上述命令将针对 org1 和 org2 测试组织和成员策略。
SCM_TOKEN=<your_token> OPENAI_TOKEN=<token> ./legitify gpt-analysis --repo org1/repo1 --org org1
基于 GPT-3 的安全态势分析,针对提供的仓库或组织。
注意:仓库/组织元数据将被发送到 openai 服务器。
标志:
--org:将分析范围限制为指定的 GitHub 组织或 GitLab 组--repo:将分析范围限制为指定的 GitHub 仓库或 GitLab 项目--scm:指定源代码管理平台。可选值为:github 或 gitlab。默认为 github。--token:SCM 的令牌(或设置 SCM_TOKEN 环境变量)--openai-token:openai API 的令牌(或设置 OPENAI_TOKEN 环境变量)必须提供 --org 或 --repo,或两者都提供。
生成 openai 令牌:
你也可以在 workflow 中将 legitify 作为 GitHub action 运行,具体示例请参见 action_examples 目录。
-t)或环境变量(SCM_TOKEN)提供。
PAT 需要以下范围才能进行全面分析:admin:org, read:enterprise, admin:org_hook, read:org, repo, read:repo_hook
有关更多信息,请参阅创建个人访问令牌。
目前不支持细粒度个人访问令牌。
你可以针对 GitHub Enterprise Server 实例运行 legitify,只需在环境变量 SERVER_URL 中设置端点 URL:
export SERVER_URL="https://github.example.com/"
SCM_TOKEN=<your_token> legitify analyze --org org1,org2 --namespace organization,member
-t)或环境变量(SCM_TOKEN)提供。
PAT 需要以下范围才能进行全面分析:
read_api, read_user, read_repository, read_registry
有关更多信息,请参阅创建个人访问令牌。--scm gitlab;要针对 GitLab Server 运行,还需要提供 SERVER_URL:export SERVER_URL="https://gitlab.example.com/"
SCM_TOKEN=<your_token> legitify analyze --namespace organization --scm gitlab
注意 1: 要忽略无效的服务器证书,请传递
ignore-invalid-certificate标志
注意 2: 对于非高级版 GitLab 账户,某些策略(如分支保护策略)将被跳过
legitify 中的命名空间是收集并针对策略检查的资源。 目前支持以下命名空间:
organization - GitHub 组织(或 GitLab 组)级别策略(例如“组织未强制实施双因素身份验证”)actions - 组织 GitHub Actions 策略(例如“GitHub Actions 运行未限制为已验证的操作”)member - 贡献者级别策略(例如“发现陈旧管理员”)repository - GitHub 仓库(或 GitLab 项目)级别策略(例如“未强制要求至少两名审查者进行代码审查”)。注意:除非通过 --repo 参数直接指定,否则将忽略已归档的仓库。runner_group - 运行器组策略(例如“运行器可被公共仓库使用”)默认情况下,legitify 会分析所有命名空间。你可以使用 --namespace 标志限制只分析选定的命名空间,然后以逗号分隔的列表形式给出选定的命名空间。
默认情况下,legitify 将以人类可读的格式输出结果。 这包括按严重性列出的策略违规列表,以及按命名空间排序的摘要表。
使用 --output-format (-f) 标志,legitify 支持以下格式输出结果:
human-readable - 人类可读文本(默认)。json - 标准 JSON。sarif - SARIF 格式(信息)。使用 --output-scheme 标志,legitify 支持以不同的分组方案输出结果。
注意:必须指定 --output-format=json 才能输出非默认方案。
flattened - 无分组;策略的扁平列表,每个策略附带其违规信息(默认)。group-by-namespace - 按命名空间对策略进行分组。group-by-resource - 按资源(如特定组织/仓库)对策略进行分组。group-by-severity - 按严重性对策略进行分组。--output-file - 输出文件的完整路径(默认:无输出文件,打印到标准输出)。--error-file - 错误日志的完整路径(默认:./error.log)。当以人类可读格式输出时,legitify 支持传统的 --color[=when] 标志,有以下选项:
auto - 如果标准输出是终端则输出彩色,否则无色(默认)。always - 无论输出目标如何始终输出彩色。none - 无论输出目标如何始终无色。--failed-only 标志从结果中过滤掉通过/跳过的检查。--ignore-policies-path $PATH 并提供包含你想要忽略的策略的文件,以跳过特定策略。每行一个策略,例如:
no_conversation_resolution requires_status_checks ─╯Scorecard 是 OSSF 的一个开源项目:
Scorecards 是一个自动化工具,评估与软件安全相关的一系列重要启发式方法(“检查”),并为每项检查分配 0-10 的分数。你可以使用这些分数来了解需要改进的特定领域,以增强项目的安全态势。你还可以评估依赖项带来的风险,并在接受这些风险、评估替代方案或与维护者合作进行改进之间做出明智的决定。
legitify 支持为组织的所有仓库运行 scorecard,强制执行分数策略并使用 --scorecard 标志显示结果:
no - 不运行 scorecard(默认)。yes - 运行 scorecard 并实施策略,对每个分数低于 7.0 的仓库发出警报。verbose - 运行 scorecard,实施策略对每个分数低于 7.0 的仓库发出警报,并将其输出嵌入到 legitify 的输出中。legitify 运行以下 scorecard 检查:
legitify 在 policies/ 目录中为每个 SCM 附带一组策略。
这些策略的文档在这里。
感谢您考虑为 Legitify 做出贡献!我们鼓励并感谢任何形式的贡献。 以下是一些帮助您入门的资源:
如果您对 legitify 有任何疑问或在操作过程中需要任何帮助,请随时联系我们。我们的团队致力于提供支持并确保流畅的体验。
如果您喜欢 Legitify,那么您一定会爱上 Legit Security 平台!
以下是 Legitify 与 Legit 的功能对比:
| 检查项 | 公共仓库 | 私有仓库 |
|---|
| Security-Policy | 是 | |
| CII-Best-Practices | 是 | |
| Fuzzing | 是 | |
| License | 是 | |
| Signed-Releases | 是 | |
| Branch-Protection | 是 | 是 |
| Code-Review | 是 | 是 |
| Contributors | 是 | 是 |
| Dangerous-Workflow | 是 | 是 |
| Dependency-Update-Tool | 是 | 是 |
| Maintained | 是 | 是 |
| Pinned-Dependencies | 是 | 是 |
| SAST | 是 | 是 |
| Token-Permissions | 是 | 是 |
| Vulnerabilities | 是 | 是 |
| Webhooks | 是 | 是 |
| 能力 | Legitify | Legit Security 平台 |
|---|
| 支持的平台 | GitHub GitLab | 所有主流 SCM(包括 Azure DevOps、Bitbucket 等) CI/CD 系统(例如 Jenkins) 包注册表(例如 JFrog Artifactory) 云提供商(例如 AWS) |
| 风险检测 | 仅 SCM 错误配置 | SCM 错误配置 CI 错误配置 CD 错误配置 包注册表错误配置 流水线风险 密钥 IaC 安全事件 更多... |
| 合规报告 | OSSF SCM 最佳实践 | SSDF SLSA SOC2 ISO 27001 FedRAMP 更多... |
| 策略漂移检测 | 可通过 Legitify 的 GitHub Action 定期检测 | 在引入错误配置时获得实时警报 |
| SDLC 资产管理 | - | 是 |
| 问题和策略管理 | - | 是 |
| 从代码到云的上下文 | - | 是(上下文信息可实现更智能的优先级排序) |
| 工作区和产品组 | - | 是 |
| 工单与告警 | - | Jira、Slack 等 |
| 风险引入 | - | 导入 API,集成 SAST、SCA 和其他测试解决方案 |
| REST API | - | 是 |