
Обнаруживайте и устраняйте неправильные конфигурации и риски безопасности во всех ваших ресурсах GitHub и GitLab.
Укрепите безопасность вашего управления исходным кодом!
Обнаруживайте и устраняйте неправильные конфигурации, проблемы безопасности и соответствия требованиям во всех ваших ресурсах GitHub и GitLab 🔥
от Legit Security.
Legit Security — это решение для управления положением дел в области безопасности приложений (ASPM) и безопасности цепочки поставок программного обеспечения.
Дополнительную информацию см. в таблице сравнения.
Установка возможна несколькими способами:
brew install legitify
Вы можете загрузить последний релиз legitify с https://github.com/Legit-Labs/legitify/releases, каждый архив содержит:
Из исходного кода, выполнив следующие шаги:
git clone [email protected]:Legit-Labs/legitify.git
go run main.go analyze ...
gh extension install legit-labs/gh-legitify
gh legitify
Вы можете запускать legitify в рамках CI-процесса с помощью пользовательских действий GitHub:
name: Legitify Analyze
on:
workflow_dispatch:
schedule:
- cron: '0 11 * * 1-5'
jobs:
analyze:
runs-on: ubuntu-latest
steps:
- name: Legitify Action
uses: Legit-Labs/legitify@main
with:
github_token: ${{ secrets.PAT_FOR_LEGITIFY }}
ignore-policies: |
non_admins_can_create_public_repositories
requires_status_checks
Дополнительные параметры и конфигурацию см. в файле действия.
Для повышения безопасности цепочки поставок ПО пользователей legitify, начиная с версии v0.1.6, каждый релиз legitify содержит документ SLSA Level 3 Provenance.
Документ происхождения относится ко всем артефактам в релизе, а также к сгенерированному образу Docker.
Вы можете использовать официальный верификатор SLSA framework для проверки происхождения.
Пример использования для архитектуры darwin_arm64 для релиза v0.1.6:
VERSION=0.1.6
ARCH=darwin_arm64
./slsa-verifier verify-artifact --source-branch main --builder-id 'https://github.com/slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@refs/tags/v1.2.2' --source-uri "git+https://github.com/Legit-Labs/legitify" --provenance-path multiple.intoto.jsonl ./legitify_${VERSION}_${ARCH}.tar.gz
SCM_TOKEN=<your_token> legitify analyze
По умолчанию legitify проверяет политики для всех ваших ресурсов (организации, репозитории, участники, действия). Архивные репозитории пропускаются.
Вы можете управлять анализируемыми ресурсами с помощью флагов командной строки namespace и org:
--namespace (-n): анализировать политики, относящиеся к указанным ресурсам--org: ограничить анализ указанными организациями GitHub или группами GitLab, исключая архивные репозитории--repo: ограничить анализ указанными репозиториями GitHub или проектами GitLab--scm: укажите платформу управления исходным кодом. Возможные значения: github или gitlab. По умолчанию github. Обратите внимание: при работе с GitLab требуется --scm gitlab.--enterprise: укажите, какие предприятия следует анализировать. Обратите внимание: для анализа предприятия необходимо указать его slug.SCM_TOKEN=<your_token> legitify analyze --org org1,org2 --namespace organization,member
Приведённая выше команда проверит политики организации и участников для org1 и org2.
SCM_TOKEN=<your_token> OPENAI_TOKEN=<токен> ./legitify gpt-analysis --repo org1/repo1 --org org1
Анализ безопасности предоставленного репозитория или организации на основе GPT-3.
ПРИМЕЧАНИЕ: Метаданные репозитория/организации отправляются на серверы openai.
Флаги:
--org: ограничить анализ указанными организациями GitHub или группами GitLab--repo: ограничить анализ указанными репозиториями GitHub или проектами GitLab--scm: укажите платформу управления исходным кодом. Возможные значения: github или gitlab. По умолчанию github.--token: токен для SCM (или установите переменную окружения SCM_TOKEN)--openai-token: токен для API openai (или установите переменную окружения OPENAI_TOKEN)Необходимо указать --org, --repo или оба.
Генерация токена openai:
Вы также можете запускать legitify как GitHub Action в ваших рабочих процессах — см. конкретные примеры в директории action_examples.
-t) или как переменную окружения (SCM_TOKEN).
Для полного анализа PAT требует следующие области видимости:admin:org, read:enterprise, admin:org_hook, read:org, repo, read:repo_hook
См. Создание персонального токена доступа для получения дополнительной информации.
Персональные токены доступа с детальной настройкой (fine-grained) в настоящее время не поддерживаются.
Вы можете запускать legitify против экземпляра GitHub Enterprise Server, если установите URL конечной точки в переменной окружения SERVER_URL:
export SERVER_URL="https://github.example.com/"
SCM_TOKEN=<your_token> legitify analyze --org org1,org2 --namespace organization,member
-t) или как переменную окружения (SCM_TOKEN).
Для полного анализа PAT требует следующие области видимости:
read_api, read_user, read_repository, read_registry
См. Создание персонального токена доступа для получения дополнительной информации.--scm gitlab. Для работы с GitLab Server также необходимо указать SERVER_URL:export SERVER_URL="https://gitlab.example.com/"
SCM_TOKEN=<your_token> legitify analyze --namespace organization --scm gitlab
ПРИМЕЧАНИЕ 1: Для игнорирования недействительного сертификата сервера передайте флаг
--ignore-invalid-certificate
ПРИМЕЧАНИЕ 2: Для учётных записей GitLab без премиум-доступа некоторые политики (например, политики защиты веток) будут пропущены
Пространства имён в legitify — это ресурсы, которые собираются и проверяются на соответствие политикам. В настоящее время поддерживаются следующие пространства имён:
organization – политики уровня организации GitHub (или группы GitLab) (например, «Двухфакторная аутентификация не применяется для организации»)actions – политики действий GitHub на уровне организации (например, «Запуски GitHub Actions не ограничены проверенными действиями»)member – политики уровня участника (например, «Обнаружен устаревший администратор»)repository – политики уровня репозитория GitHub (или проекта GitLab) (например, «Проверка кода как минимум двумя рецензентами не применяется»). Примечание: архивные репозитории игнорируются, если только они не указаны напрямую через аргумент --repo.runner_group – политики групп раннеров (например, «раннер может использоваться публичными репозиториями»)По умолчанию legitify анализирует все пространства имён. Вы можете ограничиться только выбранными с помощью флага --namespace, после которого указывается список выбранных пространств имён через запятую.
По умолчанию legitify выводит результаты в удобочитаемом формате. Это включает список нарушений политик, отсортированный по серьёзности, а также сводную таблицу, отсортированную по пространству имён.
С помощью флага --output-format (-f) legitify поддерживает вывод результатов в следующих форматах:
human-readable – удобочитаемый текст (по умолчанию).json – стандартный JSON.sarif – формат SARIF (информация).С помощью флага --output-scheme legitify поддерживает вывод результатов в различных схемах группировки.
Примечание: для вывода нестандартных схем необходимо указать --output-format=json.
flattened – без группировки; плоский список политик с их нарушениями (по умолчанию).group-by-namespace – группировка политик по пространству имён.group-by-resource – группировка политик по ресурсу, например, конкретная организация/репозиторий.group-by-severity – группировка политик по степени серьёзности.--output-file – полный путь к файлу вывода (по умолчанию: без файла вывода, вывод в stdout).--error-file – полный путь к файлу журнала ошибок (по умолчанию: ./error.log).При выводе в удобочитаемом формате legitify поддерживает традиционный флаг --color[=when] со следующими опциями:
auto – цветной вывод, если stdout является терминалом, без цвета в противном случае (по умолчанию).always – цветной вывод независимо от места назначения вывода.none – вывод без цвета независимо от места назначения вывода.--failed-only, чтобы отфильтровать пройденные/пропущенные проверки из результата.--ignore-policies-path $PATH и укажите файл с политиками, которые вы хотите игнорировать, чтобы пропустить конкретные политики.
Одна политика на строку, например:
no_conversation_resolution requires_status_checks ─╯Scorecard — это проект с открытым исходным кодом от OSSF:
Scorecards — это автоматизированный инструмент, который оценивает ряд важных эвристик («проверок»), связанных с безопасностью программного обеспечения, и присваивает каждой проверке оценку от 0 до 10. Вы можете использовать эти оценки, чтобы понять конкретные области для улучшения с целью усиления безопасности вашего проекта. Вы также можете оценить риски, которые вносят зависимости, и принимать обоснованные решения о принятии этих рисков, оценке альтернативных решений или работе с мейнтейнерами для улучшений.
Legitify поддерживает запуск scorecard для всех репозиториев организации, применяя политики оценки и показывая результаты с помощью флага --scorecard:
no – не запускать scorecard (по умолчанию).yes – запустить scorecard и применить политику, которая оповещает о каждом репозитории с оценкой ниже 7.0.verbose – запустить scorecard, применить политику, которая оповещает о каждом репозитории с оценкой ниже 7.0, и встроить её вывод в вывод legitify.Legitify выполняет следующие проверки scorecard:
Legitify поставляется с набором политик для каждой SCM в директории policies/.
Эти политики задокументированы здесь.
Спасибо, что решили внести вклад в Legitify! Мы поощряем и ценим любые виды вклада. Вот несколько ресурсов, которые помогут вам начать:
Если у вас есть вопросы о legitify или вам нужна помощь в его работе, не стесняйтесь обращаться к нам. Наша команда стремится оказывать поддержку и обеспечивать бесперебойную работу.
Если вам понравился Legitify, вам обязательно понравится платформа Legit Security!
Ниже приведено сравнение возможностей Legitify и Legit:
Чтобы ознакомиться с Legit, посетите наш веб-сайт или запишитесь на демо
| Проверка | Публичный репозиторий | Частный репозиторий |
|---|
| Security-Policy | V | |
| CII-Best-Practices | V | |
| Fuzzing | V | |
| License | V | |
| Signed-Releases | V | |
| Branch-Protection | V | V |
| Code-Review | V | V |
| Contributors | V | V |
| Dangerous-Workflow | V | V |
| Dependency-Update-Tool | V | V |
| Maintained | V | V |
| Pinned-Dependencies | V | V |
| SAST | V | V |
| Token-Permissions | V | V |
| Vulnerabilities | V | V |
| Webhooks | V | V |
| Возможность | Legitify | Платформа Legit Security |
|---|
| Поддерживаемые платформы | GitHub GitLab | Все основные SCM (включая Azure DevOps, Bitbucket и другие) Системы CI/CD (например, Jenkins) Реестры пакетов (например, JFrog Artifactory) Облачные провайдеры (например, AWS) |
| Обнаружение рисков | Только неправильные конфигурации SCM | Неправильные конфигурации SCM Неправильные конфигурации CI Неправильные конфигурации CD Неправильные конфигурации реестров пакетов Риски пайплайнов Секреты IaC Инциденты безопасности И другое... |
| Отчёт о соответствии | OSSF SCM Best Practices | SSDF SLSA SOC2 ISO 27001 FedRAMP И другое... |
| Обнаружение дрейфа политик | Может обнаруживаться периодически через GitHub Action Legitify | Получайте оповещения в реальном времени при внесении неправильной конфигурации |
| Управление активами SDLC | - | Да |
| Управление задачами и политиками | - | Да |
| Контекст «Код в облако» | - | Да (контекстуализированная информация позволяет умнее расставлять приоритеты) |
| Рабочие пространства и группы продуктов | - | Да |
| Тикеты и оповещения | - | Jira, Slack и другие |
| Импорт рисков | - | Импортные API и интеграции с SAST, SCA и другими решениями для тестирования |
| Rest API | - | Да |