mindersec/minder
GitHub: mindersec/minder
Minder 是一个开源软件供应链安全平台,通过可配置的策略持续监控和修复代码仓库与制品的安全配置,帮助开发团队降低供应链风险并证明其安全实践。
Stars: 413 | Forks: 110

## [](https://github.com/mindersec/minder/actions/workflows/main.yml) | [](https://coveralls.io/github/mindersec/minder?branch=main) | [](https://opensource.org/licenses/Apache-2.0) | [](https://slsa.dev) | [](https://discord.gg/RkzVuTp3WK) | [](https://securityscorecards.dev/viewer/?uri=github.com/mindersec/minder)
## [安装](https://mindersec.github.io/getting_started/install_cli) | [文档](https://mindersec.github.io/) | [发布](https://github.com/mindersec/minder/releases)
# 什么是 Minder?
Minder 是一个开源平台,旨在帮助开发团队和开源社区构建更加
安全的软件,并向他人证明他们所构建的内容是安全的。Minder 提供了一系列检查和策略,帮助项目所有者主动管理
其安全态势,从而最大限度地降低软件供应链中的风险,
并向下游使用者证明其安全实践。
Minder 允许用户注册仓库并定义策略,以确保仓库和制品的配置
保持一致且安全。策略可以设置为仅告警或自动修复。Minder 提供了一组预定义的
规则,也可以配置为应用自定义规则。
Minder 可以作为 Helm chart 进行部署,并提供了一个 CLI 工具 `minder`。Custcodian 还
提供了一个[免费使用的 Minder 托管版本](#public-instance)。Minder 旨在实现可扩展性,
允许用户与其现有的工具和流程进行集成。
## 功能
* **仓库配置与安全:** 简化跨仓库的安全设置和策略的配置与管理。
* **主动安全执行:** 通过设置细粒度策略(仅告警或自动修复),持续执行最佳实践的安全配置。
* **制品证明:** 使用开源项目 Sigstore 持续验证软件包是否已签名,以确保其防篡改。
* **依赖项管理:** 通过帮助开发者做出更好的选择并实施控制措施,来管理依赖项的安全态势。Minder 集成了 [OSV](https://osv.dev/)(并且可以与其他 SCA API 集成),以实现基于依赖项风险级别的策略驱动型依赖项管理。
## 公共实例
Custcodian [提供了一个免费使用的 Minder 公共实例](https://custcodian.dev/hosted/),地址为 `api.custcodian.dev`。从 0.0.89 版本开始,这是您在使用 `minder` CLI 时默认使用的实例。对于公开仓库,该实例免费使用;对于私有仓库,使用此云托管实例可能会收取额外费用。
# 快速入门(< 1 分钟)
开始使用 Minder 只需不到一分钟的时间,操作非常简单:
1. 安装 Minder
2. 登录 Minder
3. 运行 `minder quickstart` 创建您的第一个 profile。
只需几秒钟,您就可以注册您的仓库并为所有仓库启用密钥扫描保护!🤯
## 安装说明
请选择您首选的方式来安装 `minder`:
### MacOS (Homebrew)
请确保您已安装 [Homebrew](https://brew.sh/)。
```
brew install minder
```
### Windows (Winget)
请确保您已安装 [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/)。
```
winget install mindersec.minder
```
### 下载发布版本
从 [minder/releases](https://github.com/mindersec/minder/releases) 下载最新的发布版本。
### 从源码构建
按照[从源码构建指南](#build-from-source)从源码构建 `minder` 和 `minder-server`。
## 登录 Minder
要在 Minder 的[公共实例](#public-instance)(`api.custcodian.dev`)中使用 `minder`,请运行以下命令登录:
```
minder auth login --grpc-host api.custcodian.dev
```
(从 0.0.89 版本开始,此 API host 为默认地址。)完成后,您应该会看到 Minder Server 被设置为 `api.custcodian.dev`。
## 运行 Minder 快速入门
`quickstart` 命令将引导您在 Minder 中创建第一个 profile,注册您的仓库,并在几秒钟内为您的仓库启用密钥扫描保护。
为此,请运行:
```
minder quickstart
```
这将提示您注册您的 provider,选择您想要的仓库,创建 `secret_scanning`
规则类型,并创建一个为所选仓库启用密钥扫描的 profile。
要查看您的 profile 状态,请运行:
```
minder profile status list --profile quickstart-profile --detailed
```
您应该会看到整体的 profile 状态,以及每个已注册仓库的规则评估状态的详细视图。
Minder 将持续跟踪您的仓库,并将通过
使用 `remediate` 功能确保修复任何与期望状态的偏差,或者在需要时使用 `alert` 功能向您发出警报。
恭喜!🎉 您已经成功创建了您的第一个 profile!
## 下一步?
您现在可以继续探索 Minder 的功能,添加或删除更多仓库,创建包含
各种规则的更多 profile 等等。Minder 的功能远不止于密钥扫描。
`secret_scanning` 规则只是 Minder 支持的众多规则类型之一。
您可以在此处查看由 Minder 团队维护的完整的、可直接使用的规则和 profile 列表
—— [mindersec/minder-rules-and-profiles](https://github.com/mindersec/minder-rules-and-profiles)。
如果您在那里还没有找到所需的内容,Minder 是被设计为可扩展的。
这允许用户创建自己的自定义规则类型和 profile,并确保其特定的
安全态势得到证明。
现在您已经完成了一切设置,您可以继续针对 Minder 公共实例运行 `minder` 命令,
在那里您可以管理已注册的仓库,创建 profile、规则等等,从而确保您的仓库
配置得一致且安全。
有关 `minder` 的更多信息,请参见:
* `minder` CLI 命令 - [文档](https://mindersec.github.io/ref/cli/minder)。
* `minder` REST API 文档 - [文档](https://mindersec.github.io/ref/api)。
* 由 Minder 团队维护的 `minder` 规则和 profile - [GitHub](https://github.com/mindersec/minder-rules-and-profiles)。
* Minder 文档 - [文档](https://mindersec.github.io/)。
# 路线图
Minder 社区正在积极致力于为 Minder 开发新功能和进行改进。
您可以在此处找到我们的[路线图](https://mindersec.github.io/about/roadmap)。
如果您希望请求或贡献功能或改进,请使用以下
[issue 模板](https://github.com/mindersec/minder/issues/new?template=enhancement.yml)
# 开发
本节介绍如何从源码构建和运行 Minder。
## 从源码构建
### 前置条件
您需要准备以下工具 - [Go](https://golang.org/doc/install)、[Docker](https://docs.docker.com/get-docker/) 和 [Docker Compose](https://docs.docker.com/compose/install/)。
要构建和运行 `minder-server`,您还需要 [ko](https://ko.build/install/)。
要通过 `make test` 运行测试套件,您需要 [gotestfmt](https://github.com/GoTestTools/gotestfmt#installing) 和 [helm](https://github.com/helm/helm/releases)。
要调用 `run-docker` make 目标,您需要 [yq](https://github.com/mikefarah/yq)。
### 克隆仓库
```
git clone git@github.com:mindersec/minder.git
```
## 构建
运行以下命令以构建 `minder` 和 `minder-server`(二进制文件将位于 `./bin/` 目录下)
```
make build
```
要配合 Minder 公共实例(`api.custcodian.dev`)使用 `minder`,请运行:
```
minder auth login --grpc-host api.custcodian.dev
```
完成后,您应该会看到 Minder Server 被设置为 `api.custcodian.dev`。
如果您想针对本地的 `minder-server` 实例运行 `minder`,可以使用 `--grpc-host=localhost` 和 `--grpc-port=8090` 标志,或者按照以下步骤使用配置文件。
#### 初始配置
为 `minder` 创建初始配置文件。您可以这样做。
```
cp config/config.yaml.example config.yaml
```
为 `minder-server` 创建初始配置文件。您可以这样做:
```
cp config/server-config.yaml.example server-config.yaml
```
您还必须为 `minder-server` 设置一个 OAuth2 应用程序供其使用。
完成后,使用适当的值更新配置文件。
请参阅有关如何执行此操作的文档 - [文档](https://mindersec.github.io/run_minder_server/config_oauth)。
#### 运行 `minder-server`
通过运行以下命令,启动 `minder-server` 及其依赖的服务(`keycloak` 和 `postgres`):
```
make run-docker
```
#### 配置社交登录 (GitHub)
`minder-server` 使用 Keycloak 作为其 IAM。要登录,您需要设置一个 GitHub OAuth2 应用程序,并配置
Keycloak 来使用它。
在[此处](https://github.com/settings/developers)为 GitHub 创建 OAuth2 应用程序。选择
`New OAuth App` 并填写详细信息。回调 URL 应该为 `http://localhost:8081/realms/stacklok/broker/github/endpoint`。
为您的 OAuth2 客户端创建一个新的客户端密钥 (client secret)。
使用您在上面创建的 `client_id` 和 `client_secret`,通过运行以下命令在 Keycloak 上启用 GitHub 登录:
```
make KC_GITHUB_CLIENT_ID= KC_GITHUB_CLIENT_SECRET= github-login
```
#### 运行 minder
请确保 `config.yaml` 文件存在于当前目录中,以便 `minder` 能够使用它。
针对您的本地 Minder 实例(`localhost:8090`)运行 `minder`:
```
minder auth login
```
完成后,您应该会看到 Minder Server 被设置为 `localhost:8090`。
默认情况下,如果不存在配置文件,`minder` CLI 将指向 Custcodian 云环境,但是[为运行服务器创建 `config.yaml`](#initial-configuration) 将使 CLI 指向您的本地开发环境。如果您明确希望使用不同的实例,可以设置 `MINDER_CONFIG` 环境变量以指向特定的配置。我们在[ `config` 目录](./config/)中提交了用于本地开发和 Custcodian 云环境的配置。
### 开发指南
您可以在[开发者指南](https://mindersec.github.io/developer_guide/get-hacking)中找到有关开发过程的更多详细信息。
## Minder API
* [REST API 文档](https://docs.mindersec.dev/ref/api)
* [Proto API 文档](https://docs.mindersec.dev/ref/proto)
* [Protobuf](https://github.com/mindersec/minder/blob/main/proto/minder/v1/minder.proto)
* [OpenAPI/swagger 规范 (JSON)](https://github.com/mindersec/minder/blob/main/pkg/api/openapi/minder/v1/minder.swagger.json)
## 来源证明
Minder 项目遵循软件供应链安全和透明度的最佳实践。
所有发布的资产:
* 具有已生成且可验证的 SLSA Build Level 3 来源证明。有关更多信息,请参阅 [SLSA 网站](https://slsa.dev)。
* 在发布期间已使用 [Sigstore](https://sigstore.dev) 项目进行签名和验证。
这确保了
它们是防篡改的,并且可以被任何人验证。
* 具有随版本一起生成并发布的 SBOM 存档。
这允许用户了解项目的依赖项及其安全态势。
## 许可证
Minder 采用 [Apache 2.0 许可证](./LICENSE) 授权。
标签:DevSecOps, EVTX分析, 上游代理, 安全态势管理, 日志审计, 模块化设计, 测试用例, 版权保护, 策略合规, 自动化修复, 请求拦截, 软件供应链安全, 远程方法调用