
소프트웨어 공급망 보안 플랫폼
 [](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](#퍼블릭-인스턴스)를 제공합니다. 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/ko-kr/windows/package-manager/winget/)이 설치되어 있는지 확인하세요. ```bash winget install mindersec.minder ``` ### 릴리스 다운로드 [minder/releases](https://github.com/mindersec/minder/releases)에서 최신 릴리스를 다운로드하세요. ### 소스에서 빌드 [소스에서 빌드 가이드](#소스에서-빌드)를 따라 소스에서 `minder`와 `minder-server`를 빌드하세요. ## Minder에 로그인 Minder의 [퍼블릭 인스턴스](#퍼블릭-인스턴스)(`api.custcodian.dev`)와 함께 `minder`를 사용하려면 다음을 실행하여 로그인하세요: ```bash minder auth login --grpc-host api.custcodian.dev ``` (이 API 호스트는 0.0.89 릴리스부터 기본값입니다.) 완료되면 Minder 서버가 `api.custcodian.dev`로 설정된 것을 확인할 수 있습니다. ## Minder quickstart 실행 `quickstart` 명령은 Minder에서 첫 번째 프로필을 생성하고, 저장소를 등록하며, 몇 초 안에 저장소에 대한 비밀 스캐닝 보호를 활성화하는 과정을 안내합니다. 이를 실행하려면: ```bash minder quickstart ``` 그러면 공급자를 등록하고, 원하는 저장소를 선택하며, `secret_scanning` 규칙 유형을 생성하고 선택한 저장소에 대해 비밀 스캐닝을 활성화하는 프로필을 만들도록 안내합니다. 프로필 상태를 확인하려면 다음을 실행하세요: ```bash minder profile status list --profile quickstart-profile --detailed ``` 전체 프로필 상태와 등록된 각 저장소에 대한 규칙 평가 상태의 세부 보기가 표시됩니다. Minder는 계속해서 저장소를 추적하고 `remediate` 기능을 사용하여 원하는 상태와의 차이를 해결하거나, 필요한 경우 `alert` 기능을 사용하여 경고합니다. 축하합니다! 🎉 첫 번째 프로필을 성공적으로 생성했습니다! ## 다음 단계는? 이제 저장소를 추가하거나 제거하고, 다양한 규칙으로 더 많은 프로필을 생성하는 등 Minder의 기능을 계속 탐색할 수 있습니다. Minder는 비밀 스캐닝 외에도 훨씬 더 많은 기능을 제공합니다. `secret_scanning` 규칙은 Minder가 지원하는 많은 규칙 유형 중 하나일 뿐입니다. 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 팀이 유지 관리하는 `minder` 규칙 및 프로필 - [GitHub](https://github.com/mindersec/minder-rules-and-profiles). * Minder 문서 - [문서](https://mindersec.github.io/). # 로드맵 Minder 커뮤니티는 Minder의 새로운 기능과 개선 사항을 적극적으로 개발하고 있습니다. 로드맵은 [여기](https://mindersec.github.io/about/roadmap)에서 확인할 수 있습니다. 기능이나 개선 사항을 요청하거나 기여하고 싶다면 다음 [이슈 템플릿](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의 퍼블릭 인스턴스(`api.custcodian.dev`)와 함께 `minder`를 사용하려면 다음을 실행하세요: ```bash minder auth login --grpc-host api.custcodian.dev ``` 완료되면 Minder 서버가 `api.custcodian.dev`로 설정된 것을 확인할 수 있습니다. 로컬 `minder-server` 인스턴스에 대해 `minder`를 실행하려면 `--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` 실행 다음을 실행하여 종속 서비스(`keycloak` 및 `postgres`)와 함께 `minder-server`를 시작합니다: ```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 실행 `minder`가 사용할 수 있도록 현재 디렉토리에 `config.yaml` 파일이 있는지 확인하세요. 로컬 Minder 인스턴스(`localhost:8090`)에 대해 `minder`를 실행합니다: ```bash minder auth login ``` 완료되면 Minder 서버가 `localhost:8090`으로 설정된 것을 확인할 수 있습니다. 기본적으로 `minder` CLI는 구성 파일이 없으면 Custcodian 클라우드 환경을 가리키지만, [서버 실행을 위한 `config.yaml` 생성](#초기-구성)은 CLI를 로컬 개발 환경으로 가리키게 합니다. 명시적으로 다른 인스턴스를 사용하려면 `MINDER_CONFIG` 환경 변수를 설정하여 특정 구성을 가리킬 수 있습니다. 로컬 개발 및 Custcodian 클라우드 환경에 대한 구성이 [`config` 디렉토리](https://github.com/mindersec/minder/blob/main/config)에 체크인되어 있습니다. ### 개발 지침 개발 프로세스에 대한 자세한 내용은 [개발자 가이드](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) 저장소에서 관리됩니다. ## 출처 Minder 프로젝트는 소프트웨어 공급망 보안 및 투명성을 위한 모범 사례를 따릅니다. 모든 릴리스된 자산: * 생성 및 검증 가능한 SLSA 빌드 레벨 3 출처를 가지고 있습니다. 자세한 내용은 [SLSA 웹사이트](https://slsa.dev)를 참조하세요. * 릴리스 중에 [Sigstore](https://sigstore.dev) 프로젝트를 사용하여 서명 및 검증되었습니다. 이는 자산이 변조되지 않았으며 누구나 검증할 수 있음을 보장합니다. * SBOM 아카이브가 생성되어 릴리스와 함께 게시됩니다. 이를 통해 사용자는 프로젝트의 종속성과 보안 상태를 이해할 수 있습니다. ## 라이선스 Minder는 [Apache 2.0 라이선스](https://github.com/mindersec/minder/blob/main/LICENSE)에 따라 라이선스가 부여됩니다.