
Plateforme de sécurité de la chaîne d'approvisionnement logicielle
 [](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) --- [Installation](https://mindersec.github.io/getting_started/install_cli) | [Documentation](https://mindersec.github.io/) | [Versions](https://github.com/mindersec/minder/releases) --- # Qu'est-ce que Minder ? Minder est une plateforme open source qui aide les équipes de développement et les communautés open source à construire des logiciels plus sécurisés, et à prouver aux autres que ce qu'ils ont construit est sécurisé. Minder aide les propriétaires de projets à gérer proactivement leur posture de sécurité en fournissant un ensemble de vérifications et de politiques pour minimiser les risques le long de la chaîne d'approvisionnement logicielle, et à attester de leurs pratiques de sécurité auprès des consommateurs en aval. Minder permet aux utilisateurs d'enrôler des dépôts et de définir des politiques pour garantir que les dépôts et les artefacts sont configurés de manière cohérente et sécurisée. Les politiques peuvent être configurées pour alerter uniquement ou pour auto-corriger. Minder fournit un ensemble prédéfini de règles et peut également être configuré pour appliquer des règles personnalisées. Minder peut être déployé comme un chart Helm et fournit un outil en ligne de commande `minder`. Custcodian propose également [une version hébergée gratuite de Minder](#instance-publique). Minder est conçu pour être extensible, permettant aux utilisateurs de l'intégrer à leurs outils et processus existants. ## Fonctionnalités * **Configuration et sécurité des dépôts :** Simplifiez la configuration et la gestion des paramètres de sécurité et des politiques sur l'ensemble des dépôts. * **Application proactive de la sécurité :** Appliquez en continu les meilleures pratiques de configuration de sécurité en définissant des politiques granulaires pour alerter uniquement ou auto-corriger. * **Attestation des artefacts :** Vérifiez en continu que les packages sont signés pour garantir leur inviolabilité, en utilisant le projet open source Sigstore. * **Gestion des dépendances :** Gérez la posture de sécurité des dépendances en aidant les développeurs à faire de meilleurs choix et en appliquant des contrôles. Minder est intégré à [OSV](https://osv.dev/) (et peut être intégré à d'autres API SCA) pour permettre une gestion des dépendances basée sur les politiques en fonction du niveau de risque des dépendances. ## Instance publique Custcodian [fournit une instance publique gratuite de Minder](https://custcodian.dev/hosted/) à l'adresse `api.custcodian.dev`. Ceci est l'instance par défaut utilisée lorsque vous utilisez la CLI `minder` à partir de la version 0.0.89. Cette instance est gratuite pour les dépôts publics ; pour les dépôts privés, des frais supplémentaires peuvent s'appliquer pour l'utilisation de cette instance hébergée dans le cloud. --- # Premiers pas (moins d'une minute) Démarrer avec Minder prend moins d'une minute et est aussi simple que : 1. Installer Minder 2. Se connecter à Minder 3. et exécuter `minder quickstart` pour créer votre premier profil. En quelques secondes, vous enregistrerez vos dépôts et activerez la protection par analyse des secrets pour tous ! 🤯 <img src="https://assets.kitploit.com/production/public/readmes/6978/3ab7c597c1892aa6a64314bb4c0b065694936c8ca64ccc5cd453609ff8a54bbc.gif" width="80%"/> ## Installation Choisissez votre méthode préférée pour installer `minder` : ### MacOS (Homebrew) Assurez-vous d'avoir [Homebrew](https://brew.sh/) installé. ```bash brew install minder ``` ### Windows (Winget) Assurez-vous d'avoir [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/) installé. ```bash winget install mindersec.minder ``` ### Télécharger une version Téléchargez la dernière version depuis [minder/releases](https://github.com/mindersec/minder/releases). ### Construire à partir des sources Construisez `minder` et `minder-server` à partir des sources en suivant le [guide de construction à partir des sources](#construction-à-partir-des-sources). ## Connexion à Minder Pour utiliser `minder` avec l'[instance publique](#instance-publique) de Minder (`api.custcodian.dev`), connectez-vous en exécutant : ```bash minder auth login --grpc-host api.custcodian.dev ``` (Cet hôte API est celui par défaut à partir de la version 0.0.89.) Une fois terminé, vous devriez voir que le serveur Minder est réglé sur `api.custcodian.dev`. ## Exécuter le démarrage rapide de Minder La commande `quickstart` vous guide dans la création de votre premier profil dans Minder, l'enregistrement de vos dépôts, et l'activation de la protection par analyse des secrets pour vos dépôts en quelques secondes. Pour ce faire, exécutez : ```bash minder quickstart ``` Cela vous demandera d'enrôler votre fournisseur, de sélectionner les dépôts souhaités, de créer le type de règle `secret_scanning` et de créer un profil qui active l'analyse des secrets pour les dépôts sélectionnés. Pour voir l'état de votre profil, exécutez : ```bash minder profile status list --profile quickstart-profile --detailed ``` Vous devriez voir l'état global du profil et une vue détaillée des statuts d'évaluation des règles pour chacun de vos dépôts enregistrés. Minder continuera à suivre vos dépôts et s'assurera de corriger toute dérive par rapport à l'état souhaité en utilisant la fonctionnalité `remediate` ou vous alertera, si nécessaire, en utilisant la fonctionnalité `alert`. Félicitations ! 🎉 Vous avez maintenant créé votre premier profil avec succès ! ## Et ensuite ? Vous pouvez maintenant continuer à explorer les fonctionnalités de Minder en ajoutant ou supprimant d'autres dépôts, en créant plus de profils avec diverses règles, et bien plus encore. Il y a beaucoup plus dans Minder que la simple analyse des secrets. La règle `secret_scanning` n'est que l'un des nombreux types de règles que Minder prend en charge. Vous pouvez voir la liste complète des règles et profils prêts à l'emploi maintenus par l'équipe de Minder ici - [mindersec/minder-rules-and-profiles](https://github.com/mindersec/minder-rules-and-profiles). Si vous ne trouvez pas encore ce que vous cherchez, Minder est conçu pour être extensible. Cela permet aux utilisateurs de créer leurs propres types de règles et profils personnalisés et de s'assurer que les spécificités de leur posture de sécurité sont attestées. Maintenant que tout est configuré, vous pouvez continuer à exécuter des commandes `minder` contre l'instance publique de Minder où vous pouvez gérer vos dépôts enregistrés, créer des profils, des règles et bien plus encore, afin de garantir que vos dépôts sont configurés de manière cohérente et sécurisée. Pour plus d'informations sur `minder`, consultez : * commandes CLI de `minder` - [Documentation](https://mindersec.github.io/ref/cli/minder). * Documentation de l'API REST de `minder` - [Documentation](https://mindersec.github.io/ref/api). * Règles et profils de `minder` maintenus par l'équipe de Minder - [GitHub](https://github.com/mindersec/minder-rules-and-profiles). * Documentation de Minder - [Documentation](https://mindersec.github.io/). # Feuille de route La communauté Minder travaille activement sur de nouvelles fonctionnalités et améliorations pour Minder. Vous pouvez trouver notre feuille de route [ici](https://mindersec.github.io/about/roadmap). Si vous souhaitez demander ou contribuer à une fonctionnalité ou une amélioration, veuillez utiliser le [modèle de ticket](https://github.com/mindersec/minder/issues/new?template=enhancement.yml) suivant. # Développement Cette section décrit comment construire et exécuter Minder à partir des sources. ## Construction à partir des sources ### Prérequis Vous aurez besoin des outils suivants - [Go](https://golang.org/doc/install), [Docker](https://docs.docker.com/get-docker/) et [Docker Compose](https://docs.docker.com/compose/install/). Pour construire et exécuter `minder-server`, vous aurez également besoin de [ko](https://ko.build/install/). Pour exécuter la suite de tests via `make test`, vous aurez besoin de [gotestfmt](https://github.com/GoTestTools/gotestfmt#installing) et [helm](https://github.com/helm/helm/releases). Pour invoquer la cible make `run-docker`, vous aurez besoin de [yq](https://github.com/mikefarah/yq). ### Cloner le dépôt ```bash git clone [email protected]:mindersec/minder.git ``` ## Construction Exécutez la commande suivante pour construire `minder` et `minder-server` (les binaires seront présents dans `./bin/`) ```bash make build ``` Pour utiliser `minder` avec l'instance publique de Minder (`api.custcodian.dev`), exécutez : ```bash minder auth login --grpc-host api.custcodian.dev ``` Une fois terminé, vous devriez voir que le serveur Minder est réglé sur `api.custcodian.dev`. Si vous souhaitez exécuter `minder` contre une instance locale de `minder-server`, vous pouvez utiliser les options `--grpc-host=localhost` et `--grpc-port=8090`, ou utiliser un fichier de configuration en suivant les étapes ci-dessous. #### Configuration initiale Créez le fichier de configuration initial pour `minder`. Vous pouvez le faire en exécutant : ```bash cp config/config.yaml.example config.yaml ``` Créez le fichier de configuration initial pour `minder-server`. Vous pouvez le faire en exécutant : ```bash cp config/server-config.yaml.example server-config.yaml ``` Vous devez également configurer une application OAuth2 pour que `minder-server` l'utilise. Une fois cela fait, mettez à jour le fichier de configuration avec les valeurs appropriées. Consultez la documentation sur la façon de procéder - [Documentation](https://mindersec.github.io/run_minder_server/config_oauth). #### Exécuter `minder-server` Démarrez `minder-server` ainsi que ses services dépendants (`keycloak` et `postgres`) en exécutant : ```bash make run-docker ``` #### Configurer la connexion sociale (GitHub) `minder-server` utilise Keycloak comme système de gestion des identités et des accès (IAM). Pour vous connecter, vous devrez configurer une application OAuth2 GitHub et configurer Keycloak pour l'utiliser. Créez une application OAuth2 pour GitHub [ici](https://github.com/settings/developers). Sélectionnez `New OAuth App` et remplissez les détails. L'URL de rappel doit être `http://localhost:8081/realms/stacklok/broker/github/endpoint`. Créez un nouveau secret client pour votre client OAuth2. En utilisant le `client_id` et le `client_secret` que vous avez créés ci-dessus, activez la connexion GitHub sur Keycloak en exécutant la commande suivante : ```bash make KC_GITHUB_CLIENT_ID=<client_id> KC_GITHUB_CLIENT_SECRET=<client_secret> github-login ``` #### Exécuter minder Assurez-vous que le fichier `config.yaml` est présent dans le répertoire courant afin que `minder` puisse l'utiliser. Exécutez `minder` contre votre instance locale de Minder (`localhost:8090`) : ```bash minder auth login ``` Une fois terminé, vous devriez voir que le serveur Minder est réglé sur `localhost:8090`. Par défaut, la CLI `minder` pointera vers l'environnement cloud Custcodian si aucun fichier de configuration n'est présent, mais [créer le `config.yaml` pour exécuter le serveur](#configuration-initiale) fera pointer la CLI vers votre environnement de développement local. Si vous souhaitez explicitement utiliser une instance différente, vous pouvez définir la variable d'environnement `MINDER_CONFIG` pour pointer vers une configuration particulière. Nous avons des configurations pour le développement local et l'environnement cloud Custcodian dans [le répertoire `config`](https://github.com/mindersec/minder/blob/main/config). ### Directives de développement Vous pouvez trouver des informations plus détaillées sur le processus de développement dans le [Guide du développeur](https://mindersec.github.io/developer_guide/get-hacking). ## API Minder * [Documentation de l'API REST](https://docs.mindersec.dev/ref/api) * [Documentation de l'API Proto](https://docs.mindersec.dev/ref/proto) * [Protobuf](https://github.com/mindersec/minder/blob/main/proto/minder/v1/minder.proto) * [Spécification OpenAPI/swagger (JSON)](https://github.com/mindersec/minder/blob/main/pkg/api/openapi/minder/v1/minder.swagger.json) ## Contribuer Nous acceptons les contributions à Minder. Veuillez consulter notre guide [Contributing](https://github.com/mindersec/minder/blob/main/CONTRIBUTING.md) pour plus d'informations. * La communauté Minder se réunit régulièrement. Vous pouvez trouver le calendrier des réunions sur le [Calendrier communautaire OpenSSF](https://calendar.google.com/calendar/u/0?cid=czYzdm9lZmhwNWk5cGZsdGI1cTY3bmdwZXNAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ). * La charte du projet et les documents de gouvernance sont maintenus dans le dépôt [mindersec/community](https://github.com/mindersec/community). ## Provenance Le projet Minder suit les meilleures pratiques en matière de sécurité et de transparence de la chaîne d'approvisionnement logicielle. Tous les actifs publiés : * Disposent d'une provenance SLSA Build Level 3 générée et vérifiable. Pour plus d'informations, consultez le [site web SLSA](https://slsa.dev). * Ont été signés et vérifiés lors de la publication à l'aide du projet [Sigstore](https://sigstore.dev). Cela garantit qu'ils sont inviolables et peuvent être vérifiés par n'importe qui. * Disposent d'une archive SBOM générée et publiée avec la version. Cela permet aux utilisateurs de comprendre les dépendances du projet et leur posture de sécurité. ## Licence Minder est sous licence [Apache 2.0](https://github.com/mindersec/minder/blob/main/LICENSE).