
Платформа безопасности цепочки поставок ПО
 [](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 [предоставляет бесплатный публичный экземпляр Minder](https://custcodian.dev/hosted/) по адресу `api.custcodian.dev`. Это экземпляр, используемый по умолчанию при использовании CLI `minder` начиная с версии 0.0.89. Этот экземпляр бесплатен для использования с публичными репозиториями; для частных репозиториев может взиматься дополнительная плата за использование облачного хостинга. --- # Начало работы (менее 1 минуты) Запуск и работа с Minder занимает менее минуты и состоит из: 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). ### Собрать из исходников Соберите `minder` и `minder-server` из исходников, следуя [руководству по сборке из исходников](#сборка-из-исходников). ## Вход в Minder Чтобы использовать `minder` с [публичным экземпляром](#публичный-экземпляр) Minder (`api.custcodian.dev`), войдите, выполнив: ```bash minder auth login --grpc-host api.custcodian.dev ``` (Этот хост API используется по умолчанию начиная с версии 0.0.89.) После завершения вы должны увидеть, что сервер Minder установлен на `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. Полный список готовых к использованию правил и профилей, поддерживаемых командой Minder, можно найти здесь — [mindersec/minder-rules-and-profiles](https://github.com/mindersec/minder-rules-and-profiles). Если вы не нашли чего-то, Minder спроектирован как расширяемый. Это позволяет пользователям создавать свои собственные типы правил и профили и удостоверять особенности своей безопасности. Теперь, когда всё настроено, вы можете продолжать выполнять команды `minder` для публичного экземпляра Minder, где сможете управлять зарегистрированными репозиториями, создавать профили, правила и многое другое, чтобы ваши репозитории были настроены единообразно и безопасно. Для получения дополнительной информации о `minder` см.: * Команды CLI `minder` — [Документация](https://mindersec.github.io/ref/cli/minder). * Документация REST API `minder` — [Документация](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` с публичным экземпляром Minder (`api.custcodian.dev`), выполните: ```bash minder auth login --grpc-host api.custcodian.dev ``` После завершения вы должны увидеть, что сервер Minder установлен на `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 ``` Также необходимо настроить приложение OAuth2 для `minder-server`. После завершения обновите файл конфигурации соответствующими значениями. См. документацию о том, как это сделать — [Документация](https://mindersec.github.io/run_minder_server/config_oauth). #### Запуск `minder-server` Запустите `minder-server` вместе с зависимыми сервисами (`keycloak` и `postgres`), выполнив: ```bash make run-docker ``` #### Настройка входа через социальные сети (GitHub) `minder-server` использует Keycloak в качестве IAM. Для входа вам потребуется настроить приложение OAuth2 для GitHub и настроить Keycloak для его использования. Создайте приложение OAuth2 для GitHub [здесь](https://github.com/settings/developers). Выберите `New OAuth App` и заполните детали. URL обратного вызова должен быть `http://localhost:8081/realms/stacklok/broker/github/endpoint`. Создайте новый секрет клиента для вашего OAuth2-клиента. Используя `client_id` и `client_secret`, созданные выше, включите вход через GitHub в Keycloak, выполнив следующую команду: ```bash make KC_GITHUB_CLIENT_ID=<client_id> KC_GITHUB_CLIENT_SECRET=<client_secret> github-login ``` #### Запуск minder Убедитесь, что файл `config.yaml` присутствует в текущем каталоге, чтобы `minder` мог его использовать. Запустите `minder` против вашего локального экземпляра Minder (`localhost:8090`): ```bash minder auth login ``` После завершения вы должны увидеть, что сервер Minder установлен на `localhost:8090`. По умолчанию CLI `minder` будет указывать на облачную среду Custcodian, если файл конфигурации отсутствует, но [создание `config.yaml` для запуска сервера](#начальная-конфигурация) заставит CLI указывать на вашу локальную среду разработки. Если вы явно хотите использовать другой экземпляр, вы можете установить переменную окружения `MINDER_CONFIG` для указания на конкретную конфигурацию. У нас есть конфигурации для локальной разработки и облачной среды Custcodian в [каталоге `config`](https://github.com/mindersec/minder/blob/main/config). ### Рекомендации по разработке Более подробную информацию о процессе разработки вы можете найти в [Руководстве разработчика](https://mindersec.github.io/developer_guide/get-hacking). ## API Minder * [Документация 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 Build Level 3. Для получения дополнительной информации см. [веб-сайт SLSA](https://slsa.dev). * Были подписаны и проверены во время выпуска с использованием проекта [Sigstore](https://sigstore.dev). Это гарантирует, что они защищены от подделки и могут быть проверены кем угодно. * Имеют архив SBOM, сгенерированный и опубликованный вместе с выпуском. Это позволяет пользователям понимать зависимости проекта и их уровень безопасности. ## Лицензия Minder лицензирован в соответствии с [Лицензией Apache 2.0](https://github.com/mindersec/minder/blob/main/LICENSE).