mindersec/minder

GitHub: mindersec/minder

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

Stars: 413 | Forks: 110

![Minder logo](https://static.pigsec.cn/wp-content/uploads/repos/cas/3b/3b34c83f2649a1ba9139fad35bcf60d8754c15353dfd82ca45c82660dfa1a9b7.png) ## [![持续集成](https://static.pigsec.cn/wp-content/uploads/repos/cas/7e/7e3ef8a8426843f39a9bf8f73f54e2bfdef3fe90e6ad71f2817b18cc2ca32e41.svg)](https://github.com/mindersec/minder/actions/workflows/main.yml) | [![覆盖率状态](https://coveralls.io/repos/github/mindersec/minder/badge.svg?branch=main)](https://coveralls.io/github/mindersec/minder?branch=main) | [![许可证:Apache 2.0](https://img.shields.io/badge/License-Apache2.0-brightgreen.svg)](https://opensource.org/licenses/Apache-2.0) | [![SLSA 3](https://slsa.dev/images/gh-badge-level3.svg)](https://slsa.dev) | [![](https://dcbadge.vercel.app/api/server/RkzVuTp3WK?logo=discord&label=Discord&color=5865&style=flat)](https://discord.gg/RkzVuTp3WK) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/mindersec/minder/badge)](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分析, 上游代理, 安全态势管理, 日志审计, 模块化设计, 测试用例, 版权保护, 策略合规, 自动化修复, 请求拦截, 软件供应链安全, 远程方法调用