Makes

Проекты, которые следуют приведенным ниже лучшим практикам, могут добровольно и самостоятельно оценить себя и продемонстрировать, что они получили значок Open Source Security Foundation (OpenSSF).

Если это ваш проект, пожалуйста, покажите свой значок на странице проекта! Статус значка выглядит следующим образом: Уровень значка для проекта 5703 - gold Вот как вставить его:

Это критерии уровня Gold. Вы также можете просмотреть критерии уровня Passing или Silver.

        

 Основы 5/5

  • Идентификация

    A DevSecOps framework powered by Nix.

  • Предварительные требования


    Проект ОБЯЗАН получить серебряный значок. [achieve_silver]

  • Надзор за проектом


    Проект ОБЯЗАН иметь «коэффициент автобуса» 2 или более. (Требуется URL) [bus_factor]

    The project is maintained by Fluid Attacks and employes contribute to it as part of of their work schedule. Usually more than 2 developers contribute to each release: https://github.com/fluidattacks/makes/commits/main and currently we have three persons in the payroll with maintainer status: https://fluidattacks.github.io/makes/governance/



    Проект ОБЯЗАН иметь как минимум двух несвязанных значительных соавторов. (Требуется URL) [contributors_unassociated]

    As of 2022-09-22, the project has had code contributions (measured in commits) from the following individuals:

    makes $ git log --format=%aN --since=2021-09-22 | sort | uniq -c | sort -rn

    152 Kevin Amado
    109 John Perez
     49 Daniel Salazar
     15 Diego Restrepo
      6 David Arnold
      3 Luis Saavedra
      2 GuangTao Zhang
      1 Timothy DeHerrera
      1 Github Dependabot
      1 Daniel Murcia
    

    https://github.com/fluidattacks/makes/commits/main


  • Другое


    Проект ОБЯЗАН указывать лицензию в каждом исходном файле. Это МОЖЕТ быть сделано путем включения в комментарий рядом с началом каждого файла следующей строки: SPDX-License-Identifier: [SPDX-выражение лицензии для проекта]. [license_per_file]

    We use https://reuse.software/ and validate its compliance in the CI/CD on each pull request. This is how a file copyright statement looks like: https://github.com/fluidattacks/makes/blob/cf3762cd96b65759d9c18a9b30f41d5aac465f2c/README.md?plain=1#L1-L5


  • Публичное хранилище исходного кода с поддержкой версий


    Хранилище проектного исходного кода ОБЯЗАНО использовать типовое ПО для распределенного управления версиями (например, git или mercurial). [repo_distributed]

    Repository on GitHub, which uses git. git is distributed.



    Проект ОБЯЗАН четко обозначать небольшие задачи, которые могут быть выполнены новыми или случайными участниками. (Требуется URL) [small_tasks]

    Проект ОБЯЗАН требовать двухфакторной аутентификации (ДФА) от разработчиков для изменения центрального хранилища или доступа к конфиденциальным данным (например, приватным отчетам об уязвимостях). Этот механизм ДФА МОЖЕТ использовать механизмы без криптографической защиты, такие как SMS, хотя это не рекомендуется. [require_2FA]

    2FA is required at the organization level, so in order to sign-in to GitHub and approve pull requests or access the repository configuration they need to authenticate first.



    При двухфакторной аутентификации (ДФА) проекту СЛЕДУЕТ использовать криптографические механизмы для предотвращения имперсонации. ДФА на основе службы коротких сообщений (SMS) сама по себе НЕ соответствует этому критерию, поскольку короткие сообщения не шифруются. [secure_2FA]

    GitHub normally uses a token based 2FA read from a mobile authentication app, lately, the 2FA authentication is usually push-based, so a user needs to use GitHub mobile to enter the code display in the screen.


  • Стандарты кодирования


    Проект ОБЯЗАН документировать свои требования по ревью кода, в том числе, как проводится ревью кода, что необходимо проверять и что необходимо для приемлемости кода. (Требуется URL) [code_review_standards]

    Проект ОБЯЗАН проводить проверку не менее 50% всех предлагаемых модификаций до их попадания в выпуск человеком, отличным от автора, для определения того, являются ли эти модификации целесообразными и не содержат ли известных проблем, препятствующих включению. [two_person_review]
  • Рабочая система сборки


    Проект ОБЯЗАН обеспечивать воспроизводимую сборку. Если сборка не требуется (например, в случае языков сценариев, где исходный код используется непосредственно вместо компиляции), выберите «N/A». (Требуется URL) [build_reproducible]

    We use the Makes, which uses the Nix Package Manager under the hood. The Nix Package Manager is a reproducible build tool. Generally all that is needed is a single command and that would build anything available in the repository.

    The build scripts and their Nix environment definition can be found here: https://github.com/fluidattacks/makes/tree/8aeed32054e90ef6dd577a935b35d884a238dcde/makes


  • Набор автотестов


    Набор тестов ОБЯЗАН запускаться стандартным способом для этого языка. (Требуется URL) [test_invocation]

    We have to test many programing languages, so in order to simplify orchestration we use a build tool. Usually all a person needs to do to invoke the test suite is to: - Open a pull request, which fires automated tests automatically, or - Run locally $ m . /test<something>, for example: $ m . /tests/secretsForGpgFromEnv

    https://github.com/fluidattacks/makes/blob/a4b0e3ba6c309972354852efb16bca00d0d97153/.github/workflows/dev.yml#L597



    Проект ОБЯЗАН реализовать непрерывную интеграцию, при которой новый или измененный код интегрируется в центральное хранилище кода, и на получившейся базе кода запускаются автоматические тесты. (Требуется URL) [test_continuous_integration]

    Workflows are defined, running on GitHub actions https://github.com/fluidattacks/makes/tree/main/.github/workflows



    Проект ОБЯЗАН иметь автоматические тестовые пакеты на СПО, которые обеспечивают покрытие не менее 90% инструкций кода, если есть хотя бы один инструмент на СПО, который может измерять этот критерий на выбранном языке. [test_statement_coverage90]

    Most of the code we have (the framework) uses Nix and Shell scripting, and there is no tool to measure their coverage. For our CLI application (which uses Python), we use Pytest and Pytest-Cov, to measure statement coverage, and is executed continuously by the CI/CD system on every Pull Request. However, we also have a lot of integration tests for the Nix+Shell components, so their correctness is verified as well.



    Проект ОБЯЗАН иметь автоматические тестовые пакеты на СПО, которые обеспечивают покрытие не менее 80% веток кода, если есть хотя бы один инструмент на СПО, который может измерять этот критерий на выбранном языке. [test_branch_coverage80]

    Most of the code we have (the framework) uses Nix and Shell scripting, and there is no tool to measure their coverage. For our CLI application (which uses Python), we use Pytest and Pytest-Cov, to measure branch coverage, and is executed continuously by the CI/CD system on every Pull Request. However, we also have a lot of integration tests for the Nix+Shell components, so their correctness is verified as well.


  • Основы правильного использования криптографии

    Обратите внимание, что некоторое ПО не нуждается в использовании криптографических механизмов.

    В ПО, создаваемом проектом, НЕОБХОДИМО поддерживать безопасные протоколы для всех сетевых коммуникаций, такие как SSHv2 или новее, TLS1.2 или новее (HTTPS), IPsec, SFTP и SNMPv3. По умолчанию НЕОБХОДИМО отключать небезопасные протоколы, такие как FTP, HTTP, telnet, SSLv3 или более ранние версии, и SSHv1, и разрешать их только в том случае, если пользователь явным образом это задаёт. Если программное обеспечение, созданное проектом, не поддерживает сетевые коммуникации, выберите «неприменимо» (N/A). [crypto_used_network]


    Если ПО, создаваемое проектом, поддерживает или использует TLS, НЕОБХОДИМО поддерживать как минимум версию TLS 1.2. Примечание: предшественник TLS называется SSL. Если программное обеспечение не использует TLS, выберите «неприменимо» (N/A). [crypto_tls12]

  • Доставка, защищенная от атак посредника (MITM)


    Веб-сайт проекта, репозиторий (если он доступен через Интернет) и сайт загрузки (если он существует отдельно) ОБЯЗАНЫ использовать упрочняющие безопасность (hardening) заголовки с неразрешающими значениями. (Требуется URL) [hardened_site]

  • Другие вопросы безопасности


    Проект ОБЯЗАН иметь проверку безопасности за последние 5 лет. При проверке НЕОБХОДИМО учитывать требования и границы безопасности. [security_review]

    We perform security reviews on each pull request. From a conceptual and design level, the potential problems and their mitigation (threat model) have been identified here: https://fluidattacks.github.io/makes/security/threat-model/. We also make sure that the design principles are secure: https://fluidattacks.github.io/makes/security/design-principles/. Static analysis tools are used often as well: https://fluidattacks.github.io/makes/security/assurance/



    В ПО, создаваемом проектом, НЕОБХОДИМО использовать механизмы упрочнения безопасности (hardening), чтобы дефекты программного обеспечения с меньшей вероятностью приводили к уязвимостям в безопасности. (Требуется URL) [hardening]

    The Makes CLI is a Python application, there is no hardening we can do beyond making sure it runs with a recent version of Python and with dependencies free of known security vulnerabilities: https://fluidattacks.github.io/makes/security/assurance/


  • Динамический анализ кода


    Проект ОБЯЗАН применять хотя бы один инструмент динамического анализа к любой предлагаемой основной версии ПО, создаваемого проектом до её выпуска. [dynamic_analysis]

    We use an automated test suite for this purpose, branch coverage is enabled on it, and the critical flows are tested and verified by the CI/CD system for every change made in the project



    Проекту СЛЕДУЕТ включать достаточно много утверждений (assertions) времени выполнения в создаваемом им ПО и проверять эти утверждения во время динамического анализа. [dynamic_analysis_enable_assertions]

    We use raise SystemExit(code) anytime an error condition is encountered so that the CLI signals to the user that something went wrong. An error message is also normally printed. This system exits would also be caught by the dynamic analysis tool.



Эти данные доступны под лицензией Creative Commons Attribution версии 3.0 или более поздней (CC-BY-3.0+). Все могут свободно делиться и адаптировать эти данные, но должны указывать соответствующие ссылки. При распространении, пожалуйста, указывайте "John Perez and the OpenSSF Best Practices badge contributors".

Владелец анкеты на значок проекта: John Perez.
2022-03-10 18:51:06 UTC, последнее изменение сделано 2022-10-28 18:29:34 UTC. Последний раз условия для получения значка были выполнены 2022-03-10 19:49:27 UTC.

Назад