加强您的源代码管理安全态势!
轻松检测并修复 GitHub 和 GitLab 资产中的错误配置、安全和合规问题 🔥
由 Legit Security 提供。
Legit Security 是一个应用安全态势管理(ASPM)和软件供应链安全解决方案。
欲了解更多信息,请查看对比表
安装
可以通过以下几种方式安装:
- 对于 macOS(或 linux),使用 homebrew:
brew install legitify
-
您可以从 https://github.com/Legit-Labs/legitify/releases 下载最新的 legitify 发布版,每个压缩包包含:
- 适用于目标平台的 Legitify 二进制文件
- Legit Security 提供的内置策略
-
从源代码安装,步骤如下:
git clone git@github.com:Legit-Labs/legitify.git
go run main.go analyze ...
- 作为 GitHub CLI 扩展(查看 https://github.com/Legit-Labs/gh-legitify 获取更多信息)
gh extension install legit-labs/gh-legitify
gh legitify
CI - Legitify 自定义 GitHub Action
您可以使用 Legitify 自定义 GitHub Actions 作为 CI 流程的一部分运行 legitify:
name: Legitify 分析
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
命令
analyze
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 测试组织和成员策略。
gpt-analysis
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 令牌:
- 前往 https://beta.openai.com/signup 创建一个 OpenAI 账户
- 在 https://platform.openai.com/account/api-keys 页面点击"创建新的密钥"
GitHub Action 使用
您也可以在工作流程中将 legitify 作为 GitHub action 运行,具体示例请参见 action_examples 目录。
要求
GitHub(云端和企业服务器版)
- 为充分利用 legitify,您需要至少是一个 GitHub 组织的所有者。否则,如果您是组织内至少一个仓库的管理员,您仍可使用该工具,但只能查看与仓库相关的策略结果。
- legitify 需要 GitHub 个人访问令牌(PAT)来成功分析您的资源,可以通过参数(
-t
)或环境变量(SCM_TOKEN
)提供。 完整分析需要以下 PAT 权限范围:
admin:org, read:enterprise, admin:org_hook, read:org, repo, read:repo_hook
更多信息请参见创建个人访问令牌。 目前不支持细粒度个人访问令牌。
GitHub 企业服务器版
如果您设置了环境变量 SERVER_URL
中的端点 URL,则可以针对 GitHub 企业服务器实例运行 legitify:
export SERVER_URL="https://github.example.com/"
SCM_TOKEN=<your_token> legitify analyze --org org1,org2 --namespace organization,member
GitLab 云端/服务器版
- 如前一节所述,您需要至少是一个 GitLab 群组的所有者。否则,如果您是群组内至少一个项目的管理员,您仍可使用该工具,但只能查看与项目相关的策略结果。
- legitify 需要 GitLab 个人访问令牌(PAT)来成功分析您的资源,可以通过参数(
-t
)或环境变量(SCM_TOKEN
)提供。 完整分析需要以下 PAT 权限范围:read_api, read_user, read_repository, read_registry
更多信息请参见创建个人访问令牌。 要针对 GitLab 云端运行 legitify,请设置 scm 标志为 gitlab--scm gitlab
;要针对 GitLab 服务器运行,还需提供 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 支持 - 仅适用于 GitHub 服务器/云端仓库
Scorecard 是 OSSF 的一个开源项目:
Scorecards 是一个自动化工具,用于评估与软件安全相关的一些重要启发式指标("检查"),并为每项检查分配 0-10 分。您可以使用这些分数来了解需要改进的具体领域,以增强项目的安全状况。您还可以评估依赖项引入的风险,并做出明智的决策,接受这些风险、评估替代方案或与维护者合作进行改进。
legitify 支持为组织的所有仓库运行 scorecard,执行评分策略并使用 --scorecard
标志显示结果:
no
- 不运行 scorecard(默认)。yes
- 运行 scorecard 并采用一项策略,对每个低于 7.0 分的仓库发出警报。verbose
- 运行 scorecard,采用一项策略对每个低于 7.0 分的仓库发出警报,并将其输出嵌入到 legitify 的输出中。
legitify 运行以下 scorecard 检查:
检查项 | 公共仓库 | 私有仓库 |
---|---|---|
Security-Policy | V | |
CII-Best-Practices | V | |
Fuzzing | V | |
License | V | |
Signed-Releases | V | |
Branch-Protection | V | V |
Code-Review | V | V |
Contributors | V | V |
Dangerous-Workflow | V | V |
Dependency-Update-Tool | V | V |
Maintained | V | V |
Pinned-Dependencies | V | V |
SAST | V | V |
Token-Permissions | V | V |
Vulnerabilities | V | V |
Webhooks | V | V |
策略
legitify 在 policies/
目录中为每个 SCM 提供了一套策略。
这些策略的文档可以在这里找到。
贡献
感谢您考虑为 Legitify 做出贡献!我们鼓励并感谢任何形式的贡献。 以下是一些帮助您入门的资源:
支持
如果您对 legitify 有任何疑问或需要任何操作方面的帮助,请随时联系我们。我们的团队致力于提供支持并确保您获得良好的使用体验。
Legitify 与 Legit Security 平台的比较
如果您喜欢 Legitify,那么您一定会更喜欢 Legit Security 平台!
- 它可以为整个环境自动执行 Legitify 检查,发现更多系统,并在简单的网络应用中显示所有结果,以便大规模管理。
- Legit Security 是一个完整的 CI/CD 安全解决方案,结合了应用安全态势管理(ASPM),可以全面覆盖应用安全。
- 它是一个 SaaS 平台,专为工程、DevOps 和安全团队设计,受到全球众多领先组织的信赖。
以下是 Legitify 和 Legit 的功能比较:
功能 | 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 | - | 支持 |