
ソフトウェアサプライチェーンセキュリティプラットフォーム
 [](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チャートとしてデプロイでき、CLIツール`minder`を提供します。Custcodianは[Minderの無料で使用できるホスト型バージョン](#public-instance)も提供しています。Minderは拡張可能なように設計されており、ユーザーは既存のツールやプロセスと統合できます。 ## 特徴 * **リポジトリの設定とセキュリティ:** リポジトリ全体のセキュリティ設定とポリシーの設定と管理を簡素化します。 * **プロアクティブなセキュリティ強制:** 細かいポリシーを設定して、アラートのみまたは自動修復することで、ベストプラクティスのセキュリティ設定を継続的に強制します。 * **アーティファクトの証明:** Sigstoreオープンソースプロジェクトを使用して、パッケージが署名されているかどうかを継続的に検証し、改ざん防止を保証します。 * **依存関係管理:** 開発者がより良い選択を行い、制御を強制できるようにして、依存関係のセキュリティ体制を管理します。Minderは[OSV](https://osv.dev/)と統合されており(他のSCA APIとも統合可能)、依存関係のリスクレベルに基づいたポリシー駆動型の依存関係管理を可能にします。 ## パブリックインスタンス Custcodianは、[api.custcodian.devでMinderの無料のパブリックインスタンスを提供](https://custcodian.dev/hosted/)しています。これはリリース0.0.89以降、`minder` CLIを使用する際のデフォルトインスタンスです。このインスタンスは公開リポジトリでは無料で使用できます。非公開リポジトリの場合は、このクラウドホスト型インスタンスの使用に追加料金が発生する場合があります。 --- # はじめに(1分未満) Minderのセットアップは1分もかからず、以下のように簡単です。 1. Minderのインストール 2. Minderへのログイン 3. `minder quickstart` を実行して最初のプロファイルを作成します。 わずか数秒で、リポジトリを登録し、すべてのリポジトリでシークレットスキャン保護を有効にできます!🤯 <img src="https://assets.kitploit.com/production/public/readmes/6978/3ab7c597c1892aa6a64314bb4c0b065694936c8ca64ccc5cd453609ff8a54bbc.gif" width="80%"/> ## インストール 好みの方法で`minder`をインストールしてください。 ### MacOS (Homebrew) [Homebrew](https://brew.sh/)がインストールされていることを確認してください。 ```bash brew install minder ``` ### Windows (Winget) [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/)がインストールされていることを確認してください。 ```bash winget install mindersec.minder ``` ### リリースのダウンロード [minder/releases](https://github.com/mindersec/minder/releases)から最新リリースをダウンロードします。 ### ソースからビルドする [ソースからのビルドガイド](#build-from-source)に従って、ソースから`minder`と`minder-server`をビルドします。 ## Minderへのログイン `minder`をMinderの[パブリックインスタンス](#public-instance)(`api.custcodian.dev`)で使用するには、次のコマンドを実行してログインします。 ```bash minder auth login --grpc-host api.custcodian.dev ``` (このAPIホストは0.0.89リリース以降のデフォルトです。)完了すると、Minder Serverが`api.custcodian.dev`に設定されていることが表示されます。 ## Minderクイックスタートの実行 `quickstart`コマンドは、Minderでの最初のプロファイル作成、リポジトリの登録、およびリポジトリのシークレットスキャン保護の有効化を数秒でガイドします。 実行するには、次のコマンドを実行します。 ```bash minder quickstart ``` これにより、プロバイダーの登録、希望するリポジトリの選択、`secret_scanning`ルールタイプの作成、および選択したリポジトリでシークレットスキャンを有効にするプロファイルの作成が促されます。 プロファイルのステータスを確認するには、次のコマンドを実行します。 ```bash minder profile status list --profile quickstart-profile --detailed ``` 全体的なプロファイルステータスと、登録された各リポジトリのルール評価ステータスの詳細が表示されます。 Minderはリポジトリを追跡し続け、`remediate`機能を使用して望ましい状態からの逸脱を修正するか、必要に応じて`alert`機能を使用して警告します。 おめでとうございます!🎉 最初のプロファイルが正常に作成されました。 ## 次のステップは? さらに多くのリポジトリの追加や削除、さまざまなルールを使用したプロファイルの作成など、Minderの機能を引き続き探索できます。Minderはシークレットスキャンだけではありません。 `secret_scanning`ルールは、Minderがサポートする多くのルールタイプの1つにすぎません。 Minderチームが管理するすぐに使えるルールとプロファイルの完全なリストは、[mindersec/minder-rules-and-profiles](https://github.com/mindersec/minder-rules-and-profiles)にあります。 まだ見つからないものがある場合、Minderは拡張可能なように設計されています。これにより、ユーザーは独自のカスタムルールタイプとプロファイルを作成し、セキュリティ体制の詳細を証明できます。 すべての設定が完了したので、Minderのパブリックインスタンスに対して`minder`コマンドを引き続き実行できます。登録済みリポジトリの管理、プロファイルやルールの作成など、リポジトリが一貫して安全に構成されるようにすることができます。 `minder`の詳細については、以下を参照してください。 * `minder` CLIコマンド - [ドキュメント](https://mindersec.github.io/ref/cli/minder) * `minder` REST APIドキュメント - [ドキュメント](https://mindersec.github.io/ref/api) * Minderチームが管理するルールとプロファイル - [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)が必要です。 ### リポジトリのクローン ```bash git clone [email protected]:mindersec/minder.git ``` ## ビルド 次のコマンドを実行して`minder`と`minder-server`をビルドします(バイナリは`./bin/`に配置されます)。 ```bash make build ``` `minder`をMinderのパブリックインスタンス(`api.custcodian.dev`)で使用するには、次のコマンドを実行します。 ```bash minder auth login --grpc-host api.custcodian.dev ``` 完了すると、Minder Serverが`api.custcodian.dev`に設定されていることが表示されます。 `minder`をローカルの`minder-server`インスタンスに対して実行する場合は、`--grpc-host=localhost`と`--grpc-port=8090`フラグを使用するか、以下の手順に従って設定ファイルを使用できます。 #### 初期設定 `minder`の初期設定ファイルを作成します。次のようにして行います。 ```bash cp config/config.yaml.example config.yaml ``` `minder-server`の初期設定ファイルを作成します。次のようにして行います。 ```bash 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`)を次のコマンドで起動します。 ```bash make run-docker ``` #### ソーシャルログイン(GitHub)の設定 `minder-server`はIAMとしてKeycloakを使用します。ログインするには、GitHub OAuth2アプリケーションをセットアップし、Keycloakでそれを使用するように設定する必要があります。 GitHubのOAuth2アプリケーションを[こちら](https://github.com/settings/developers)で作成します。`New OAuth App`を選択し、詳細を入力します。コールバックURLは`http://localhost:8081/realms/stacklok/broker/github/endpoint`にします。OAuth2クライアント用の新しいクライアントシークレットを作成します。 上記で作成した`client_id`と`client_secret`を使用して、次のコマンドを実行し、KeycloakでGitHubログインを有効にします。 ```bash make KC_GITHUB_CLIENT_ID=<client_id> KC_GITHUB_CLIENT_SECRET=<client_secret> github-login ``` #### minderの実行 現在のディレクトリに`config.yaml`ファイルがあることを確認して、`minder`が使用できるようにします。 ローカルのMinderインスタンス(`localhost:8090`)に対して`minder`を実行します。 ```bash minder auth login ``` 完了すると、Minder Serverが`localhost:8090`に設定されていることが表示されます。 デフォルトでは、設定ファイルがない場合、`minder` CLIはCustcodianクラウド環境を指しますが、[サーバーを実行するための`config.yaml`を作成すると](#initial-configuration)、CLIはローカル開発環境を指すようになります。別のインスタンスを明示的に使用したい場合は、`MINDER_CONFIG`環境変数に特定の設定を指定します。[`config`ディレクトリ](https://github.com/mindersec/minder/blob/main/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への貢献を歓迎します。詳細については、[貢献ガイド](https://github.com/mindersec/minder/blob/main/CONTRIBUTING.md)を参照してください。 * Minderコミュニティは定期的にミーティングを行っています。ミーティングスケジュールは[OpenSSFコミュニティカレンダー](https://calendar.google.com/calendar/u/0?cid=czYzdm9lZmhwNWk5cGZsdGI1cTY3bmdwZXNAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ)で確認できます。 * プロジェクト憲章とガバナンス文書は、[mindersec/community](https://github.com/mindersec/community)リポジトリで管理されています。 ## 来歴(Provenance) Minderプロジェクトは、ソフトウェアサプライチェーンのセキュリティと透明性に関するベストプラクティスに従っています。 すべてのリリース成果物は: * SLSA Build Level 3の生成および検証可能な来歴を持っています。詳細については、[SLSAウェブサイト](https://slsa.dev)を参照してください。 * リリース中に[Sigstore](https://sigstore.dev)プロジェクトを使用して署名および検証されています。これにより、改ざん防止が保証され、誰でも検証できます。 * SBOMアーカイブが生成され、リリースとともに公開されています。これにより、ユーザーはプロジェクトの依存関係とそのセキュリティ体制を把握できます。 ## ライセンス Minderは[Apache 2.0ライセンス](https://github.com/mindersec/minder/blob/main/LICENSE)の下でライセンスされています。