
Piattaforma di sicurezza della catena di fornitura del software
 [](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) --- [Installazione](https://mindersec.github.io/getting_started/install_cli) | [Documentazione](https://mindersec.github.io/) | [Rilasci](https://github.com/mindersec/minder/releases) --- # Cos'è Minder? Minder è una piattaforma open source che aiuta i team di sviluppo e le comunità open source a creare software più sicuri e a dimostrare agli altri che ciò che hanno costruito è sicuro. Minder aiuta i proprietari di progetto a gestire proattivamente la loro postura di sicurezza fornendo un insieme di controlli e policy per minimizzare i rischi lungo la catena di fornitura del software e ad attestare le loro pratiche di sicurezza ai consumatori a valle. Minder consente agli utenti di iscrivere repository e definire policy per garantire che i repository e gli artefatti siano configurati in modo coerente e sicuro. Le policy possono essere impostate per avvisare solo o per autoriparare. Minder fornisce un insieme predefinito di regole e può anche essere configurato per applicare regole personalizzate. Minder può essere distribuito come un chart Helm e fornisce uno strumento CLI `minder`. Custcodian fornisce anche una [versione hosted gratuita di Minder](#istanza-pubblica). Minder è progettato per essere estensibile, consentendo agli utenti di integrarsi con i propri strumenti e processi esistenti. ## Caratteristiche * **Configurazione e sicurezza dei repository:** Semplifica la configurazione e la gestione delle impostazioni e delle policy di sicurezza tra i repository. * **Applicazione proattiva della sicurezza:** Applica continuamente le configurazioni di sicurezza delle best practice impostando policy granulari per avvisare solo o autoriparare. * **Attestazione degli artefatti:** Verifica continuamente che i pacchetti siano firmati per garantire che siano a prova di manomissione, utilizzando il progetto open source Sigstore. * **Gestione delle dipendenze:** Gestisci la postura di sicurezza delle dipendenze aiutando gli sviluppatori a fare scelte migliori e applicando controlli. Minder è integrato con [OSV](https://osv.dev/) (e può essere integrato con altre API SCA) per abilitare una gestione delle dipendenze basata su policy in base al livello di rischio delle dipendenze. ## Istanza Pubblica Custcodian [fornisce un'istanza pubblica gratuita di Minder](https://custcodian.dev/hosted/) all'indirizzo `api.custcodian.dev`. Questa è l'istanza predefinita utilizzata quando usi la CLI `minder` a partire dalla release 0.0.89. Questa istanza è gratuita per i repository pubblici; per i repository privati, potrebbe esserci un costo aggiuntivo per l'utilizzo di questa istanza cloud-hosted. --- # Per Iniziare (in meno di 1 minuto) Avviare e utilizzare Minder richiede meno di un minuto ed è facile come: 1. Installare Minder 2. Effettuare il login a Minder 3. ed eseguire `minder quickstart` per creare il tuo primo profilo. In pochi secondi, registrerai i tuoi repository e abiliterai la protezione da scansione dei segreti per tutti! 🤯 <img src="https://assets.kitploit.com/production/public/readmes/6978/3ab7c597c1892aa6a64314bb4c0b065694936c8ca64ccc5cd453609ff8a54bbc.gif" width="80%"/> ## Installazione Scegli il metodo che preferisci per installare `minder`: ### MacOS (Homebrew) Assicurati di avere [Homebrew](https://brew.sh/) installato. ```bash brew install minder ``` ### Windows (Winget) Assicurati di avere [Winget](https://learn.microsoft.com/it-it/windows/package-manager/winget/) installato. ```bash winget install mindersec.minder ``` ### Scarica una release Scarica l'ultima release da [minder/releases](https://github.com/mindersec/minder/releases). ### Compila dal sorgente Compila `minder` e `minder-server` dal sorgente seguendo la [guida alla compilazione dal sorgente](#compilazione-dal-sorgente). ## Effettuare il login a Minder Per usare `minder` con l'[istanza pubblica](#istanza-pubblica) di Minder (`api.custcodian.dev`), esegui il login eseguendo: ```bash minder auth login --grpc-host api.custcodian.dev ``` (Questo host API è il predefinito a partire dalla release 0.0.89.) Al termine, dovresti vedere che il server Minder è impostato su `api.custcodian.dev`. ## Esegui quickstart di Minder Il comando `quickstart` ti guida nella creazione del tuo primo profilo in Minder, nella registrazione dei tuoi repository e nell'abilitazione della protezione da scansione dei segreti per i tuoi repository in pochi secondi. Per farlo, esegui: ```bash minder quickstart ``` Questo ti chiederà di iscrivere il tuo provider, selezionare i repository che desideri, creare il tipo di regola `secret_scanning` e creare un profilo che abilita la scansione dei segreti per i repository selezionati. Per vedere lo stato del tuo profilo, esegui: ```bash minder profile status list --profile quickstart-profile --detailed ``` Dovresti vedere lo stato complessivo del profilo e una vista dettagliata degli stati di valutazione delle regole per ciascuno dei tuoi repository registrati. Minder continuerà a monitorare i tuoi repository e garantirà di correggere eventuali derive dallo stato desiderato utilizzando la funzione `remediate` o ti avviserà, se necessario, utilizzando la funzione `alert`. Congratulazioni! 🎉 Hai creato con successo il tuo primo profilo! ## Quali sono i prossimi passi? Ora puoi continuare a esplorare le funzionalità di Minder aggiungendo o rimuovendo repository, creando più profili con regole varie e molto altro. C'è molto di più in Minder della sola scansione dei segreti. La regola `secret_scanning` è solo uno dei tanti tipi di regole supportati da Minder. Puoi vedere l'elenco completo delle regole e dei profili pronti all'uso mantenuti dal team di Minder qui - [mindersec/minder-rules-and-profiles](https://github.com/mindersec/minder-rules-and-profiles). Nel caso in cui non trovi qualcosa di ancora, Minder è progettato per essere estensibile. Ciò consente agli utenti di creare propri tipi di regole e profili personalizzati e garantire che le specificità della loro postura di sicurezza siano attestate. Ora che hai tutto configurato, puoi continuare a eseguire comandi `minder` contro l'istanza pubblica di Minder dove puoi gestire i tuoi repository registrati, creare profili, regole e molto altro, così da garantire che i tuoi repository siano configurati in modo coerente e sicuro. Per maggiori informazioni su `minder`, vedi: * Comandi CLI di `minder` - [Documentazione](https://mindersec.github.io/ref/cli/minder). * Documentazione API REST di `minder` - [Documentazione](https://mindersec.github.io/ref/api). * Regole e profili di `minder` mantenuti dal team di Minder - [GitHub](https://github.com/mindersec/minder-rules-and-profiles). * Documentazione di Minder - [Documentazione](https://mindersec.github.io/). # Roadmap La comunità di Minder sta lavorando attivamente a nuove funzionalità e miglioramenti per Minder. Puoi trovare la nostra roadmap [qui](https://mindersec.github.io/about/roadmap). Se desideri richiedere o contribuire con una funzionalità o un miglioramento, utilizza il seguente [modello di issue](https://github.com/mindersec/minder/issues/new?template=enhancement.yml) # Sviluppo Questa sezione descrive come compilare ed eseguire Minder dal sorgente. ## Compilazione dal sorgente ### Prerequisiti Avrai bisogno dei seguenti strumenti disponibili - [Go](https://golang.org/doc/install), [Docker](https://docs.docker.com/get-docker/) e [Docker Compose](https://docs.docker.com/compose/install/). Per compilare ed eseguire `minder-server`, avrai anche bisogno di [ko](https://ko.build/install/). Per eseguire la suite di test con `make test`, avrai bisogno di [gotestfmt](https://github.com/GoTestTools/gotestfmt#installing) e [helm](https://github.com/helm/helm/releases). Per invocare il target make `run-docker`, avrai bisogno di [yq](https://github.com/mikefarah/yq). ### Clona il repository ```bash git clone [email protected]:mindersec/minder.git ``` ## Compilazione Esegui quanto segue per compilare `minder` e `minder-server` (i binari saranno presenti in `./bin/`) ```bash make build ``` Per usare `minder` con l'istanza pubblica di Minder (`api.custcodian.dev`), esegui: ```bash minder auth login --grpc-host api.custcodian.dev ``` Al termine, dovresti vedere che il server Minder è impostato su `api.custcodian.dev`. Se vuoi eseguire `minder` contro un'istanza locale di `minder-server`, puoi usare i flag `--grpc-host=localhost` e `--grpc-port=8090`, oppure usare un file di configurazione seguendo i passaggi seguenti. #### Configurazione iniziale Crea il file di configurazione iniziale per `minder`. Puoi farlo eseguendo: ```bash cp config/config.yaml.example config.yaml ``` Crea il file di configurazione iniziale per `minder-server`. Puoi farlo eseguendo: ```bash cp config/server-config.yaml.example server-config.yaml ``` Devi anche configurare un'applicazione OAuth2 per `minder-server`. Una volta completato, aggiorna il file di configurazione con i valori appropriati. Consulta la documentazione su come farlo - [Documentazione](https://mindersec.github.io/run_minder_server/config_oauth). #### Eseguire `minder-server` Avvia `minder-server` insieme ai suoi servizi dipendenti (`keycloak` e `postgres`) eseguendo: ```bash make run-docker ``` #### Configurare il login sociale (GitHub) `minder-server` utilizza Keycloak come IAM. Per effettuare il login, dovrai configurare un'applicazione OAuth2 di GitHub e configurare Keycloak per utilizzarla. Crea un'applicazione OAuth2 per GitHub [qui](https://github.com/settings/developers). Seleziona `New OAuth App` e compila i dettagli. L'URL di callback dovrebbe essere `http://localhost:8081/realms/stacklok/broker/github/endpoint`. Crea un nuovo segreto client per il tuo client OAuth2. Utilizzando il `client_id` e il `client_secret` creati sopra, abilita il login GitHub su Keycloak eseguendo il seguente comando: ```bash make KC_GITHUB_CLIENT_ID=<client_id> KC_GITHUB_CLIENT_SECRET=<client_secret> github-login ``` #### Eseguire minder Assicurati che il file `config.yaml` sia presente nella directory corrente in modo che `minder` possa utilizzarlo. Esegui `minder` contro la tua istanza locale di Minder (`localhost:8090`): ```bash minder auth login ``` Al termine, dovresti vedere che il server Minder è impostato su `localhost:8090`. Per impostazione predefinita, la CLI `minder` punterà all'ambiente cloud di Custcodian se non è presente un file di configurazione, ma la [creazione del file `config.yaml` per eseguire il server](#configurazione-iniziale) farà puntare la CLI al tuo ambiente di sviluppo locale. Se vuoi esplicitamente usare un'istanza diversa, puoi impostare la variabile d'ambiente `MINDER_CONFIG` per puntare a una configurazione particolare. Abbiamo configurazioni per lo sviluppo locale e l'ambiente cloud di Custcodian nel [direttorio `config`](https://github.com/mindersec/minder/blob/main/config). ### Linee guida per lo sviluppo Puoi trovare informazioni più dettagliate sul processo di sviluppo nella [Guida per sviluppatori](https://mindersec.github.io/developer_guide/get-hacking). ## API di Minder * [Documentazione API REST](https://docs.mindersec.dev/ref/api) * [Documentazione API Proto](https://docs.mindersec.dev/ref/proto) * [Protobuf](https://github.com/mindersec/minder/blob/main/proto/minder/v1/minder.proto) * [Specifica OpenAPI/swagger (JSON)](https://github.com/mindersec/minder/blob/main/pkg/api/openapi/minder/v1/minder.swagger.json) ## Contribuire Accogliamo con favore i contributi a Minder. Consulta la nostra guida [Contributing](https://github.com/mindersec/minder/blob/main/CONTRIBUTING.md) per maggiori informazioni. * La comunità di Minder si riunisce regolarmente. Puoi trovare il calendario delle riunioni sul [Calendario della comunità OpenSSF](https://calendar.google.com/calendar/u/0?cid=czYzdm9lZmhwNWk5cGZsdGI1cTY3bmdwZXNAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ). * La carta del progetto e i documenti di governance sono mantenuti nel repository [mindersec/community](https://github.com/mindersec/community). ## Provenienza Il progetto Minder segue le migliori pratiche per la sicurezza e la trasparenza della catena di fornitura del software. Tutti gli asset rilasciati: * Hanno una provenienza generata e verificabile di livello SLSA Build Level 3. Per maggiori informazioni, consulta il [sito web SLSA](https://slsa.dev). * Sono stati firmati e verificati durante il rilascio utilizzando il progetto [Sigstore](https://sigstore.dev). Ciò garantisce che siano a prova di manomissione e possano essere verificati da chiunque. * Hanno un archivio SBOM generato e pubblicato insieme alla release. Ciò consente agli utenti di comprendere le dipendenze del progetto e la loro postura di sicurezza. ## Licenza Minder è concesso in licenza con [Licenza Apache 2.0](https://github.com/mindersec/minder/blob/main/LICENSE).