遵循以下最佳实践的项目将能够自愿的自我认证,并显示他们已经实现了核心基础设施计划(OpenSSF)徽章。 显示详细资料
[](https://www.bestpractices.dev/projects/1351)
<a href="https://www.bestpractices.dev/projects/1351"><img src="https://www.bestpractices.dev/projects/1351/badge"></a>
A framework for securing software update systems.
The contribution process is covered in below documents. It prescribes following a custom style guide, based on well-known public style guides. https://github.com/theupdateframework/python-tuf/contribute https://github.com/theupdateframework/python-tuf/blob/develop/docs/GOVERNANCE.md#contributions https://github.com/secure-systems-lab/code-style-guidelines/blob/master/python.md
https://github.com/theupdateframework/python-tuf/contribute
In addition, an automatic DCO check is performed on all pull requests to the repository.
The project clearly defines and documents its governance model in GOVERNANCE.md https://github.com/theupdateframework/python-tuf/blob/develop/docs/GOVERNANCE.md
The project follows the CNCF code of conduct: https://github.com/theupdateframework/python-tuf/blob/develop/docs/CODE-OF-CONDUCT.md
The project's GOVERNANCE.md and MAINTAINERS.txt clearly define the different roles and their responsibilities. https://github.com/theupdateframework/python-tuf/blob/develop/docs/GOVERNANCE.md https://github.com/theupdateframework/python-tuf/blob/develop/docs/MAINTAINERS.txt
The project has more than three people with admin rights to the GitHub repository and multiple maintainers that can create and close issues, accept proposed changes, and release new versions of the software. https://github.com/theupdateframework/python-tuf/blob/develop/docs/MAINTAINERS.txt https://github.com/orgs/theupdateframework/people
The project has a bus factor of over 2. https://github.com/theupdateframework/python-tuf/blob/develop/docs/MAINTAINERS.txt https://github.com/orgs/theupdateframework/people
The current roadmap is documented as GitHub project "TUF refactor towards 1.0.0" https://github.com/theupdateframework/python-tuf/projects
Note: At the time of revising the badge criteria (January 2022), the project is reaching the end of the current long-term roadmap. Once finalized, a new roadmap will be published.
project specification: https://theupdateframework.github.io/specification/latest/ published papers: https://theupdateframework.io/publications/
The project's security page and research papers document what users can expect in terms of security and threat model. https://theupdateframework.io/security/ https://theupdateframework.io/publications/ https://theupdateframework.io/papers/survivable-key-compromise-ccs2010.pdf?raw=true
The project provides excessively commented and easy-to-read Python code as usage examples for different usage scenarios. The examples are easy to find in the documentation. https://theupdateframework.readthedocs.io/en/latest/ (usage examples)
The project makes an effort to keep documentation up to date and encourages contributors to verify that any pull requests also update documentation for things that are modified. https://github.com/theupdateframework/tuf/blob/develop/.github/PULL_REQUEST_TEMPLATE.md
https://github.com/theupdateframework/python-tuf#-a-framework-for-securing-software-update-systems
The project website is built with the go Hugo static site generator and Bulma CSS framework, which does not require JavaScript and is 100% responsive. https://theupdateframework.io/ https://bulma.io/
The reference documentation is hosted on readthedocs using the standard Sphinx RTD Theme, which has several accessibility features. https://theupdateframework.readthedocs.io/ https://sphinx-rtd-theme.readthedocs.io/en/stable/changelog.html
The project source code repository is hosted on GitHub, which can be used by several alternate ways, with different degrees of documented accessibility: https://government.github.com/accessibility/ https://github.com/theupdateframework/python-tuf
The software produced by the project is an API for software developers. Accessibility is provided by extensive standardized (napoleon/sphinx) code documentation and a focus on mnemonic naming. https://www.sphinx-doc.org/en/master/usage/extensions/napoleon.html
Our specification and reference library are meant to be used by developers and integrated into a new or preexisting updater.
This criteria is not applicable if the end user is the person running the updater, because they are not expected to read text that originate from our library (TUF exceptions should be caught by the adopter and a suitable error message given to the user). But if the end user is the repo maintainer or adopter, then translations are probably needed for the code. However, our project's documentation, papers, website haven't been translated and are unreadable by non-English speakers, so it's unlikely they can even get started using the repo tools.
GitHub meets this criterion.
Python's standard packaging and installation tools make it easy to use older versions of the project and provide upgrade paths to newer versions.
The project uses GitHub's issue tracker to track individual issues.
https://github.com/theupdateframework/python-tuf/issues
The published security advisories give credit to reporters of vulnerabilities, unless anonymity is requested: https://github.com/theupdateframework/python-tuf/security/advisories?state=published
The project documents the process for responding to vulnerability reports. https://github.com/theupdateframework/python-tuf/#security-issues-and-bugs
The project encourages contributors to follow its coding style guidelines in the governance document and in a template automatically applied to pull requests: https://github.com/theupdateframework/python-tuf/blob/develop/docs/GOVERNANCE.md#contributions https://github.com/theupdateframework/python-tuf/blob/develop/.github/PULL_REQUEST_TEMPLATE.md
The linked-to guidelines are here: https://github.com/secure-systems-lab/code-style-guidelines
The project automatically enforces its coding style guidelines via Pylint, black and isort.
No native binaries are being generated by the project.
The standard Python build and installation system can be freely configured by users as they wish. The project does not restrict the user of relevant flags.
The project does not recursively build subdirectories. All of its dependencies are external to its installation.
No true building occurs since the project uses Python.
The project's releases can be installed and uninstalled with pip (Python's recommended tool to install Python packages).
Python's recommended tool to install Python packages, which the project supports, does honor standard conventions for selecting the location where built artifacts are written to at installation time.
The project's instructions for contributors explains how they can quickly install the project, it's dependencies, set up the environment, and run the unit tests. https://github.com/theupdateframework/python-tuf/contribute
The project's setup.cfg specify's its external dependencies. https://github.com/theupdateframework/python-tuf/blob/develop/setup.cfg
The project monitors dependency updates using GitHub native dependabot
https://github.com/dependabot
The project monitors dependency updates using GitHub native dependabot and automatically performs updates when they become available.
The project makes an honest attempt to make sure that it doesn't use deprecated or obsolete functions. Python versions that are marked as no longer maintained are also unsupported.
The project uses GitHub Actions to run the automated test suite on each pull request and push to the main branch.
https://github.com/theupdateframework/python-tuf/actions https://github.com/theupdateframework/python-tuf/blob/develop/.github/workflows/ci.yml
The project makes an honest effort to make sure that tests are added for all bugs that are fixed. It enforces at least 97% test coverage.
https://github.com/theupdateframework/python-tuf/blob/develop/tox.ini
The project's tox.ini config and continuous integration system requires 97% coverage of the source code, otherwise a build failure results. Its policy is captured in the GOVERNANCE.md and pull request template.
https://github.com/theupdateframework/python-tuf/blob/develop/docs/GOVERNANCE.md#contributions https://github.com/theupdateframework/python-tuf/blob/develop/.github/PULL_REQUEST_TEMPLATE.md
The project provides a formal written policy on testing of new functionality. https://github.com/theupdateframework/python-tuf/blob/develop/docs/GOVERNANCE.md#contributions https://github.com/theupdateframework/python-tuf/blob/develop/.github/PULL_REQUEST_TEMPLATE.md
The project's pull request template documents the policy of verifying that tests have been added to the change. https://github.com/theupdateframework/python-tuf/blob/develop/.github/PULL_REQUEST_TEMPLATE.md
In addition, tests are performed prominently and automatically for any pull request, and failures are flagged. https://github.com/theupdateframework/python-tuf/actions
These policies are also explained in the contributors pages: https://github.com/theupdateframework/python-tuf/blob/develop/docs/GOVERNANCE.md#contributions https://github.com/theupdateframework/python-tuf/contribute
The project does not accept Pull Requests with pyint, bandit, black or isort warnings.
https://github.com/theupdateframework/python-tuf/blob/develop/tox.ini https://github.com/theupdateframework/python-tuf/blob/develop/.github/workflows/ci.yml
The project strives to implement secure design principles.
The project's default security mechanisms do not depend on weak algorithms or modes.
The project supports multiple cryptographic algorithms, where applicable.
The project supports the storage of private cryptographic keys and dynamic tokens.
The project supports TLS for all of its network communications.
The project supports at TLS version 1.2, as provided by standard Python.
The project performs TLS certificate verification by default.
The project performs certificate verification, and before sending HTTP headers, but it does not need to send private information.
The project documents to process for obtaining public signing keys and verifying releases of the project.
All of the project's release tags are cryptographically signed. https://github.com/theupdateframework/python-tuf/tags
Input validation is of utmost importance for the update framework. See discussion in: https://github.com/theupdateframework/python-tuf/pull/1301
All inputs are validated at the user boundary, i.e. when deserializing metadata from untrusted sources.
The project tries to use hardening mechanisms whenever possible. Given that the software is a security product, developers and reviewers have a focus on secure programming. Reviewing guidelines are documented in: https://github.com/secure-systems-lab/lab-guidelines/blob/master/code-review.md
The project's research papers provide a description of the threat model, clear identification of trust boundaries, an argument that secure design principles have been applied, and an argument that common implementation security weaknesses have been countered. https://theupdateframework.io/security/ https://theupdateframework.io/publications/
The project uses Floss tools pylint and Bandit (security linter) for static analysis and black and isort for uniform auto-format, which are all run in CI.
The project does not produce software written in a memory-unsafe language.
后退