
Plataforma de Segurança da Cadeia de Suprimentos de 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) --- [Instalação](https://mindersec.github.io/getting_started/install_cli) | [Documentação](https://mindersec.github.io/) | [Lançamentos](https://github.com/mindersec/minder/releases) --- # O que é o Minder? O Minder é uma plataforma open source que ajuda equipas de desenvolvimento e comunidades open source a construir software mais seguro, e a provar aos outros que o que construíram é seguro. O Minder ajuda os proprietários de projetos a gerir proativamente a sua postura de segurança, fornecendo um conjunto de verificações e políticas para minimizar o risco ao longo da cadeia de fornecimento de software, e a atestar as suas práticas de segurança para os consumidores a jusante. O Minder permite que os utilizadores inscrevam repositórios e definam políticas para garantir que os repositórios e artefactos sejam configurados de forma consistente e segura. As políticas podem ser configuradas para apenas alertar ou para corrigir automaticamente. O Minder fornece um conjunto predefinido de regras e também pode ser configurado para aplicar regras personalizadas. O Minder pode ser implementado como um Helm chart e fornece uma ferramenta de CLI `minder`. A Custcodian também fornece uma [versão hospedada e gratuita do Minder](#public-instance). O Minder foi concebido para ser extensível, permitindo que os utilizadores se integrem com as suas ferramentas e processos existentes. ## Funcionalidades * **Configuração e segurança de repositórios:** Simplifique a configuração e gestão de definições e políticas de segurança em vários repositórios. * **Aplicação proativa de segurança:** Aplique continuamente as melhores práticas de configurações de segurança definindo políticas granulares para apenas alertar ou corrigir automaticamente. * **Atestado de artefactos:** Verifique continuamente se os pacotes estão assinados para garantir que são à prova de adulteração, usando o projeto open source Sigstore. * **Gestão de dependências:** Gerencie a postura de segurança das dependências ajudando os programadores a fazer melhores escolhas e aplicando controlos. O Minder está integrado com [OSV](https://osv.dev/) (e pode ser integrado com outras APIs de SCA) para permitir a gestão de dependências orientada por políticas com base no nível de risco das dependências. ## Instância Pública A Custcodian [fornece uma instância pública e gratuita do Minder](https://custcodian.dev/hosted/) em `api.custcodian.dev`. Esta é a instância predefinida usada quando utiliza a CLI `minder` a partir da versão 0.0.89. Esta instância é gratuita para repositórios públicos; para repositórios privados, pode haver um custo adicional para usar esta instância hospedada na nuvem. --- # Primeiros Passos (< 1 minuto) Começar a usar o Minder demora menos de um minuto e é tão fácil como: 1. Instalar o Minder 2. Fazer login no Minder 3. e executar `minder quickstart` para criar o seu primeiro perfil. Em apenas alguns segundos, registará os seus repositórios e ativará a proteção de scanning de segredos para todos eles! 🤯 <img src="https://assets.kitploit.com/production/public/readmes/6978/3ab7c597c1892aa6a64314bb4c0b065694936c8ca64ccc5cd453609ff8a54bbc.gif" width="80%"/> ## Instalação Escolha o seu método preferido para instalar o `minder`: ### macOS (Homebrew) Certifique-se de que tem o [Homebrew](https://brew.sh/) instalado. ```bash brew install minder ``` ### Windows (Winget) Certifique-se de que tem o [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/) instalado. ```bash winget install mindersec.minder ``` ### Baixar um lançamento Descarregue a versão mais recente em [minder/releases](https://github.com/mindersec/minder/releases). ### Compilar a partir do código-fonte Compile `minder` e `minder-server` a partir do código-fonte seguindo o [guia de compilação a partir do código-fonte](#build-from-source). ## Fazer login no Minder Para usar o `minder` com a [instância pública](#public-instance) do Minder (`api.custcodian.dev`), faça login executando: ```bash minder auth login --grpc-host api.custcodian.dev ``` (Este host de API é o predefinido a partir da versão 0.0.89.) Após a conclusão, deverá ver que o Servidor Minder está definido para `api.custcodian.dev`. ## Executar o quickstart do Minder O comando `quickstart` orienta-o na criação do seu primeiro perfil no Minder, regista os seus repositórios e ativa a proteção de scanning de segredos para os seus repositórios em segundos. Para o fazer, execute: ```bash minder quickstart ``` Isto irá solicitar que inscreva o seu fornecedor, selecione os repositórios que deseja, crie o tipo de regra `secret_scanning` e crie um perfil que ativa o scanning de segredos para os repositórios selecionados. Para ver o estado do seu perfil, execute: ```bash minder profile status list --profile quickstart-profile --detailed ``` Deverá ver o estado geral do perfil e uma visão detalhada dos estados de avaliação das regras para cada um dos seus repositórios registados. O Minder continuará a monitorizar os seus repositórios e garantirá que corrige qualquer desvio do estado desejado, utilizando a funcionalidade `remediate` ou alertando-o, se necessário, através da funcionalidade `alert`. Parabéns! 🎉 Criou com sucesso o seu primeiro perfil! ## Próximos passos? Agora pode continuar a explorar as funcionalidades do Minder adicionando ou removendo mais repositórios, criando mais perfis com várias regras, e muito mais. O Minder é muito mais do que apenas scanning de segredos. A regra `secret_scanning` é apenas um dos muitos tipos de regras que o Minder suporta. Pode ver a lista completa de regras e perfis prontos a usar, mantidos pela equipa do Minder, aqui - [mindersec/minder-rules-and-profiles](https://github.com/mindersec/minder-rules-and-profiles). Caso não encontre algo que precisa, o Minder foi concebido para ser extensível. Isto permite que os utilizadores criem os seus próprios tipos de regras e perfis personalizados e garantam que os detalhes da sua postura de segurança sejam atestados. Agora que tem tudo configurado, pode continuar a executar comandos `minder` contra a instância pública do Minder, onde pode gerir os seus repositórios registados, criar perfis, regras e muito mais, para garantir que os seus repositórios estão configurados de forma consistente e segura. Para mais informações sobre o `minder`, consulte: * Comandos da CLI `minder` - [Documentação](https://mindersec.github.io/ref/cli/minder). * Documentação da API REST do `minder` - [Documentação](https://mindersec.github.io/ref/api). * Regras e perfis do `minder` mantidos pela equipa do Minder - [GitHub](https://github.com/mindersec/minder-rules-and-profiles). * Documentação do Minder - [Documentação](https://mindersec.github.io/). # Roteiro A comunidade do Minder está a trabalhar ativamente em novas funcionalidades e melhorias para o Minder. Pode encontrar o nosso roteiro [aqui](https://mindersec.github.io/about/roadmap). Caso deseje solicitar ou contribuir com uma funcionalidade ou melhoria, utilize o seguinte [modelo de issue](https://github.com/mindersec/minder/issues/new?template=enhancement.yml) # Desenvolvimento Esta secção descreve como compilar e executar o Minder a partir do código-fonte. ## Compilar a partir do código-fonte ### Pré-requisitos Precisará das seguintes ferramentas disponíveis - [Go](https://golang.org/doc/install), [Docker](https://docs.docker.com/get-docker/) e [Docker Compose](https://docs.docker.com/compose/install/). Para compilar e executar `minder-server`, também precisará do [ko](https://ko.build/install/). Para executar o conjunto de testes através de `make test`, precisará do [gotestfmt](https://github.com/GoTestTools/gotestfmt#installing) e do [helm](https://github.com/helm/helm/releases). Para invocar o target `run-docker` do make, precisará do [yq](https://github.com/mikefarah/yq). ### Clonar o repositório ```bash git clone [email protected]:mindersec/minder.git ``` ## Compilar Execute o seguinte para compilar `minder` e `minder-server` (os binários estarão presentes em `./bin/`) ```bash make build ``` Para usar o `minder` com a instância pública do Minder (`api.custcodian.dev`), execute: ```bash minder auth login --grpc-host api.custcodian.dev ``` Após a conclusão, deverá ver que o Servidor Minder está definido para `api.custcodian.dev`. Se quiser executar o `minder` contra uma instância local de `minder-server`, pode usar as flags `--grpc-host=localhost` e `--grpc-port=8090`, ou usar um ficheiro de configuração seguindo os passos abaixo. #### Configuração inicial Crie o ficheiro de configuração inicial para o `minder`. Pode fazê-lo executando: ```bash cp config/config.yaml.example config.yaml ``` Crie o ficheiro de configuração inicial para o `minder-server`. Pode fazê-lo executando: ```bash cp config/server-config.yaml.example server-config.yaml ``` Também terá de configurar uma aplicação OAuth2 para o `minder-server` utilizar. Assim que concluído, atualize o ficheiro de configuração com os valores apropriados. Consulte a documentação sobre como o fazer - [Documentação](https://mindersec.github.io/run_minder_server/config_oauth). #### Executar `minder-server` Inicie o `minder-server` juntamente com os seus serviços dependentes (`keycloak` e `postgres`) executando: ```bash make run-docker ``` #### Configurar login social (GitHub) O `minder-server` usa o Keycloak como IAM. Para fazer login, precisará de configurar uma aplicação OAuth2 do GitHub e configurar o Keycloak para a utilizar. Crie uma aplicação OAuth2 para o GitHub [aqui](https://github.com/settings/developers). Selecione `New OAuth App` e preencha os detalhes. O URL de callback deve ser `http://localhost:8081/realms/stacklok/broker/github/endpoint`. Crie um novo segredo de cliente para o seu cliente OAuth2. Utilizando o `client_id` e `client_secret` que criou acima, ative o login do GitHub no Keycloak executando o seguinte comando: ```bash make KC_GITHUB_CLIENT_ID=<client_id> KC_GITHUB_CLIENT_SECRET=<client_secret> github-login ``` #### Executar minder Certifique-se de que o ficheiro `config.yaml` está presente no diretório atual para que o `minder` o possa usar. Execute o `minder` contra a sua instância local do Minder (`localhost:8090`): ```bash minder auth login ``` Após a conclusão, deverá ver que o Servidor Minder está definido para `localhost:8090`. Por predefinição, a CLI `minder` apontará para o ambiente cloud da Custcodian se não existir um ficheiro de configuração, mas [criar o `config.yaml` para executar o servidor](#initial-configuration) fará com que a CLI aponte para o seu ambiente de desenvolvimento local. Se pretender explicitamente usar uma instância diferente, pode definir a variável de ambiente `MINDER_CONFIG` para apontar para uma configuração específica. Temos configurações para desenvolvimento local e para o ambiente cloud da Custcodian incluídas no [diretório `config`](https://github.com/mindersec/minder/blob/main/config). ### Diretrizes de desenvolvimento Pode encontrar informações mais detalhadas sobre o processo de desenvolvimento no [Guia do Programador](https://mindersec.github.io/developer_guide/get-hacking). ## API do Minder * [Documentação da API REST](https://docs.mindersec.dev/ref/api) * [Documentação da API Proto](https://docs.mindersec.dev/ref/proto) * [Protobuf](https://github.com/mindersec/minder/blob/main/proto/minder/v1/minder.proto) * [Especificação OpenAPI/swagger (JSON)](https://github.com/mindersec/minder/blob/main/pkg/api/openapi/minder/v1/minder.swagger.json) ## Como contribuir Aceitamos contribuições para o Minder. Consulte o nosso guia de [Contribuição](https://github.com/mindersec/minder/blob/main/CONTRIBUTING.md) para mais informações. * A comunidade do Minder reúne-se regularmente. Pode encontrar o calendário de reuniões no [Calendário Comunitário OpenSSF](https://calendar.google.com/calendar/u/0?cid=czYzdm9lZmhwNWk5cGZsdGI1cTY3bmdwZXNAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ). * O estatuto do projeto e os documentos de governação são mantidos no repositório [mindersec/community](https://github.com/mindersec/community). ## Proveniência O projeto Minder segue as melhores práticas para segurança e transparência da cadeia de fornecimento de software. Todos os assets lançados: * Têm uma proveniência SLSA Build Level 3 gerada e verificável. Para mais informações, consulte o [site SLSA](https://slsa.dev). * Foram assinados e verificados durante o lançamento usando o projeto [Sigstore](https://sigstore.dev). Isto garante que são à prova de adulteração e podem ser verificados por qualquer pessoa. * Têm um arquivo SBOM gerado e publicado juntamente com o lançamento. Isto permite que os utilizadores compreendam as dependências do projeto e a sua postura de segurança. ## Licença O Minder está licenciado sob a [Licença Apache 2.0](https://github.com/mindersec/minder/blob/main/LICENSE).