sentinel

Projekte, die den nachfolgenden Best Practices folgen, können sich freiwillig selbst zertifizieren und zeigen, dass sie einen Core-Infrastruktur-Initiative-/OpenSSF-Badge erhalten haben.

Es gibt keine Auswahl an Praktiken, die garantieren können, dass Software niemals Fehler oder Schwachstellen hat. Selbst formale Methoden können fehlschlagen, wenn die Spezifikationen oder Annahmen falsch sind. Auch gibt es keine Auswahl an Praktiken, die garantieren können, dass ein Projekt eine gesunde und gut funktionierende Entwicklungsgemeinschaft erhalten wird. Allerdings können Best Practices dabei helfen, die Ergebnisse von Projekten zu verbessern. Zum Beispiel ermöglichen einige Praktiken die Mehrpersonen-Überprüfung vor der Freigabe, die sowohl helfen können ansonsten schwer zu findende technische Schwachstellen zu finden und gleichzeitig dazu beitragen Vertrauen und den Wunsch nach wiederholter Zusammenarbeit zwischen Entwicklern verschiedener Unternehmen zu schaffen. Um ein Badge zu verdienen, müssen alle MÜSSEN und MÜSSEN NICHT Kriterien erfüllt sein, alle SOLLTEN Kriterien müssen erfüllt sein oder eine Rechtfertigung enthalten, und alle EMPFHOLEN Kriterien müssen erfüllt sein oder nicht (wir wollen sie zumindest berücksichtigt wissen). Wenn lediglich ein allgemeiner Kommentar angebeben werden soll, keine direkte Begründung, dann ist das erlaubt, wenn der Text mit "//" und einem Leerzeichen beginnt. Feedback ist willkommen auf derGitHub-Website als Issue oder Pull-Request. Es gibt auch eine E-Mail-Liste für allgemeine Diskussionen.

Wir stellen Ihnen gerne die Informationen in mehreren Sprachen zur Verfügung, allerdings ist die englische Version maßgeblich, insbesondere wenn es Konflikte oder Inkonsistenzen zwischen den Übersetzungen gibt.
Wenn dies Ihr Projekt ist, zeigen Sie bitte Ihren Baseline-Badge-Status auf Ihrer Projektseite! Der Baseline-Badge-Status sieht so aus: Baseline-Badge-Level für Projekt 14063 ist baseline-1 So betten Sie das Baseline-Badge ein:
Sie können Ihren Baseline-Badge-Status anzeigen, indem Sie Folgendes in Ihre Markdown-Datei einbetten:
[![OpenSSF Baseline](https://www.bestpractices.dev/projects/14063/baseline)](https://www.bestpractices.dev/projects/14063)
oder indem Sie Folgendes in Ihr HTML einbetten:
<a href="https://www.bestpractices.dev/projects/14063"><img src="https://www.bestpractices.dev/projects/14063/baseline"></a>


Dies sind die Baseline Niveau 2 Kriterien. Dies sind Kriterienversion v2026.08.28.

Baseline Series: Baseline Niveau 1 Baseline Niveau 2 Baseline Niveau 3

        

 Grundlagen

  • Allgemein

    Hinweis: Andere Projekte können den selben Namen benutzen.

    The security update management platform for SUSE and openSUSE Linux distributions

    Bitte verwenden Sie das SPDX-License-Expression-Format; Beispiele sind "Apache-2.0", "BSD-2-Clause", "BSD-3-Clause", "GPL-2.0+", "LGPL-3.0+", "MIT" und "(BSD-2-Clause OR Ruby)". Geben sie nicht die einfachen oder doppelten Anführungszeichen mit an.
    Wenn es mehr als eine Programmiersprache gibt, listen Sie sie als kommagetrennte Werte (Leerzeichen sind optional) auf und sortieren Sie sie von am häufigsten zum am wenigsten verwendeten. Wenn es eine lange Liste gibt, bitte mindestens die ersten drei häufigsten auflisten. Wenn es keine Programmiersprache gibt (z. B. ist dies nur ein Dokumentations- oder Testprojekt), verwenden Sie das einzelne Zeichen "-". Bitte verwenden Sie eine herkömmliche Großschreibung für jede Sprache, z.B. "JavaScript".
    Das Common Platform Enumeration (CPE) ist ein strukturiertes Namensschema für IT-Systeme, Software und Pakete. Es wird in diversen Systemen und Datenbanken bei der Meldung von Schwachstellen verwendet.

 Steuerelemente 16/19

  • Steuerelemente


    Wenn eine CI/CD-Aufgabe ohne angegebene Berechtigungen ausgeführt wird, MUSS das CI/CD-System die Berechtigungen der Aufgabe standardmäßig auf die niedrigsten in der Pipeline gewährten Berechtigungen setzen. [OSPS-AC-04.01]
    Konfigurieren Sie die Einstellungen des Projekts so, dass neuen Pipelines standardmäßig die niedrigsten verfügbaren Berechtigungen zugewiesen werden, wobei zusätzliche Berechtigungen nur bei Bedarf für bestimmte Aufgaben gewährt werden.

    The repository's default workflow permissions are set to read (the minimum). Additionally, every workflow either declares a top-level permissions: block restricting to the minimum required scopes, or declares per-job permissions: on each job individually. No workflow relies on the repository default for write access — elevated permissions (write to packages, pages, issues, pull-requests) are always explicitly requested at the narrowest scope needed.



    Wenn ein offizieller Release erstellt wird, MUSS diesem Release eine eindeutige Versionskennung zugewiesen werden. [OSPS-BR-02.01]
    Weisen Sie jedem vom Projekt erstellten Release eine eindeutige Versionskennung zu und folgen Sie dabei einer konsistenten Namenskonvention oder einem Nummerierungsschema. Beispiele sind SemVer, CalVer oder Git-Commit-ID.

    Every official release is assigned a unique SemVer identifier (e.g. v0.3.0) via release-please automation. The version source of truth is backend/pyproject.toml; on merge of a Release PR, release-please creates a Git tag (v<major>.<minor>.<patch>) and a corresponding GitHub Release with auto-generated changelog. Tags are never reused or manually created — uniqueness is enforced by Git's tag semantics and the automation's monotonic bump logic.



    Wenn ein offizieller Release erstellt wird, MUSS dieser Release ein beschreibendes Protokoll funktionaler und sicherheitsrelevanter Änderungen enthalten. [OSPS-BR-04.01]
    Stellen Sie sicher, dass alle Releases ein beschreibendes Änderungsprotokoll enthalten. Es wird empfohlen sicherzustellen, dass das Änderungsprotokoll von Menschen lesbar ist und Details über Commit-Nachrichten hinaus enthält, wie z.B. Beschreibungen der Sicherheitsauswirkung oder Relevanz für verschiedene Anwendungsfälle. Um Maschinenlesbarkeit zu gewährleisten, platzieren Sie den Inhalt unter einer Markdown-Überschrift wie "## Changelog".

    Non-trivial release notes file in repository: https://github.com/StayPirate/sentinel/blob/master/CHANGELOG.md. [release_notes]



    Wenn eine Build- und Release-Pipeline Abhängigkeiten einbindet, MUSS sie standardisierte Tools verwenden, wo verfügbar. [OSPS-BR-05.01]
    Verwenden Sie ein gängiges Tool für Ihr Ökosystem, wie z.B. Paketmanager oder Abhängigkeits-Management-Tools, um Abhängigkeiten zur Build-Zeit einzubinden. Dies kann die Verwendung einer Abhängigkeitsdatei, Lock-Datei oder Manifest umfassen, um die erforderlichen Abhängigkeiten zu spezifizieren, die dann vom Build-System eingezogen werden.

    The build and release pipeline uses uv (with a lockfile uv.lock) to resolve and install Python dependencies deterministically. Dependencies are declared in backend/pyproject.toml using standard PEP 621 metadata, and uv sync --frozen in CI ensures the lockfile is the sole source of installed versions — no ad-hoc pip install or unmanaged dependency resolution occurs during build. The Dockerfile similarly uses uv sync --frozen for reproducible image builds.



    Wenn ein offizieller Release erstellt wird, MUSS dieser Release signiert sein oder in einem signierten Manifest erfasst werden, das die kryptographischen Hashes jedes Assets enthält. [OSPS-BR-06.01]
    Signieren Sie alle freigegebenen Software-Assets zur Build-Zeit mit einer kryptographischen Signatur oder Attestierungen, wie z.B. GPG- oder PGP-Signatur, Sigstore-Signaturen, SLSA-Provenance oder SLSA-VSAs. Fügen Sie die kryptographischen Hashes jedes Assets in eine signierte Manifest- oder Metadaten-Datei ein.

    Releases are created via release-please with a unique Git tag, but no cryptographic signing or attestation is currently applied. The GitHub Release has no attached assets, no SLSA provenance attestation, no cosign signature, and no signed manifest containing cryptographic hashes of build artifacts. The container images pushed to ghcr.io are similarly unattested (no docker/attest-build-provenance or cosign sign step in build-images.yml).



    Wenn das Projekt ein Release erstellt hat, MUSS die Projektdokumentation eine Beschreibung enthalten, wie das Projekt seine Abhängigkeiten auswählt, bezieht und verfolgt. [OSPS-DO-06.01]
    Es wird empfohlen, diese Informationen zusammen mit der technischen und Design-Dokumentation des Projekts auf einer öffentlich zugänglichen Ressource wie dem Quellcode-Repository, der Projektwebsite oder einem anderen Kanal zu veröffentlichen.

    The project documents its dependency management approach across multiple files: CONTRIBUTING.md describes how to install dependencies (uv sync), docs/deployment.md documents the tooling (uv with lockfile), the CI security gate (pip-audit on every merge), and the Dockerfile build strategy (uv sync --frozen). Dependabot is configured (.github/dependabot.yml) to track and propose updates for three ecosystems — Python/uv, GitHub Actions, and Docker base images — on a weekly schedule. The lockfile (uv.lock) pins exact versions for reproducibility, pip-audit gates every PR against known vulnerabilities, and Dependabot automates tracking of new upstream releases.



    Die Projektdokumentation MUSS Anweisungen enthalten, wie die Software gebaut wird, einschließlich erforderlicher Bibliotheken, Frameworks, SDKs und Abhängigkeiten. [OSPS-DO-07.01]
    Es wird empfohlen, diese Informationen zusammen mit der Beiträgerdokumentation des Projekts zu veröffentlichen, z. B. in CONTRIBUTING.md oder anderen Entwickleraufgabendokumentationen. Dies kann auch mithilfe von Makefile-Zielen oder anderen Automatisierungsskripten dokumentiert werden.

    CONTRIBUTING.md provides step-by-step build instructions: install uv, run uv sync (which automatically downloads the correct Python 3.13 interpreter and all dependencies from the lockfile), start infrastructure via ./scripts/dev-env.sh up, run migrations, and launch the server. docs/deployment.md documents the production build process (multi-stage Dockerfile with uv sync --frozen), required infrastructure (PostgreSQL, Redis), and the software requirements table listing all runtime dependencies with minimum versions.



    Die Projektdokumentation MUSS eine Liste der Projektmitglieder mit Zugriff auf sensible Ressourcen enthalten. [OSPS-GV-01.01]
    Dokumentieren Sie Projektteilnehmer und ihre Rollen durch Artefakte wie members.md, governance.md, maintainers.md oder eine ähnliche Datei im Quellcode-Repository des Projekts. Dies kann so einfach sein wie die Aufnahme von Namen oder Account-Handles in einer Liste von Maintainern, oder komplexer sein, abhängig von der Governance des Projekts.

    This criterion targets projects with shared infrastructure credentials (e.g., production server access, signing keys, package registry tokens). Sentinel's sensitive resources (GitHub repository admin, RELEASE_TOKEN secret, ghcr.io publish permissions) are managed entirely through GitHub's built-in access controls — the repository is owned by a single maintainer (StayPirate). There is no team or multi-person access to sensitive resources that requires a documented roster beyond what GitHub already surfaces in Settings > Collaborators.



    Die Projektdokumentation MUSS Beschreibungen der Rollen und Verantwortlichkeiten der Projektmitglieder enthalten. [OSPS-GV-01.02]
    Dokumentieren Sie Projektteilnehmer und ihre Rollen durch Artefakte wie members.md, governance.md, maintainers.md oder ähnliche Dateien im Quellcode-Repository des Projekts.

    CONTRIBUTING.md documents the roles and responsibilities: the repository has a single maintainer/owner responsible for reviewing and merging contributions, managing releases, and triaging security reports. SECURITY.md identifies the security contact role (security@suse.com). The CODEOWNERS mechanism is implicit (single owner); GitHub's collaborator settings surface access levels. For a single-maintainer project this is sufficient — there are no additional roles (committers, release managers, etc.) to document.



    Die Projektdokumentation MUSS einen Leitfaden für Code-Mitwirkende enthalten, der die Anforderungen für akzeptable Beiträge beschreibt. [OSPS-GV-03.02]
    Erweitern Sie die Inhalte von CONTRIBUTING.md oder CONTRIBUTING/ in der Projektdokumentation, um die Anforderungen für akzeptable Beiträge zu beschreiben, einschließlich Codierungsstandards, Testanforderungen und Einreichungsrichtlinien für Code-Beitragende. Es wird empfohlen, dass dieser Leitfaden die verbindliche Quelle sowohl für Beitragende als auch für Genehmiger ist.

    CONTRIBUTING.md provides a comprehensive contributor guide covering: development environment setup, code style and linting requirements (ruff check, ruff format, mypy --strict), testing requirements (all changes must include tests, pytest must pass), commit message format (Conventional Commits), PR process (title format, issue linkage, required CI checks), and the specs-first workflow (feature specifications must exist before implementation). The document also includes a table of which changes require a specification and which do not.



    Das Versionskontrollsystem MUSS bei jedem Commit von allen Code-Mitwirkenden verlangen zu bestätigen, dass sie rechtlich befugt sind, die zugehörigen Beiträge zu leisten. [OSPS-LE-01.01]
    Fügen Sie ein DCO in das Repository des Projekts ein, das Code-Beitragende dazu verpflichtet zu bestätigen, dass sie rechtlich berechtigt sind, die zugehörigen Beiträge bei jedem Commit zu leisten. Verwenden Sie eine Statusüberprüfung, um sicherzustellen, dass die Bestätigung erfolgt ist. Ein CLA erfüllt diese Anforderung ebenfalls. Einige Versionskontrollsysteme, wie GitHub, können dies in den Nutzungsbedingungen der Plattform enthalten.

    The project does not currently require a DCO (Developer Certificate of Origin) sign-off or equivalent legal assertion on commits. There is no Signed-off-by requirement documented in CONTRIBUTING.md, no DCO bot or GitHub App configured, and no pre-commit hook enforcing the -s flag. Contributors are not required to assert legal authorization to make their contributions.



    Wenn ein Commit in den primären Branch erfolgt, MÜSSEN alle automatisierten Statusüberprüfungen für Commits bestanden werden oder manuell umgangen werden. [OSPS-QA-03.01]
    Konfigurieren Sie das Versionskontrollsystem des Projekts so, dass alle automatisierten Statusüberprüfungen bestanden werden müssen oder eine manuelle Bestätigung erforderlich ist, bevor ein Commit in den primären Branch zusammengeführt werden kann. Es wird empfohlen, dass optionale Statusüberprüfungen NICHT als Bestehen-oder-Durchfallen-Anforderung konfiguriert werden, die Genehmiger versucht sein könnten zu umgehen.

    Branch protection on master requires all 7 status checks to pass before merge (Backend Lint, Backend Type Check, Backend Security Scan, Backend Tests, Image Smoke Test, Shell Lint, PR Metadata), with strict status checks enabled. Direct pushes to master are blocked — all commits arrive via squash merge of a PR that has passed CI. Bypassing requires admin override (enforce_admins is disabled, allowing the repository owner to bypass in exceptional circumstances — this satisfies the "pass or be manually bypassed" wording).



    Bevor ein Commit akzeptiert wird, MÜSSEN die CI/CD-Pipelines des Projekts mindestens eine automatisierte Test-Suite ausführen, um sicherzustellen, dass die Änderungen den Erwartungen entsprechen. [OSPS-QA-06.01]
    Automatisierte Tests sollten vor jedem Merge in den primären Branch ausgeführt werden. Die Test-Suite sollte in einer CI/CD-Pipeline ausgeführt werden und die Ergebnisse sollten für alle Beitragenden sichtbar sein. Die Test-Suite sollte in einer konsistenten Umgebung ausgeführt werden und so ausgeführt werden, dass Beitragende die Tests lokal ausführen können. Beispiele für Test-Suites sind Unit-Tests, Integrationstests und End-to-End-Tests.

    The CI pipeline (ci.yml) runs on every pull request targeting master and includes a full automated test suite: uv run pytest executes 850+ unit and integration tests. Branch protection requires the "Backend Tests" status check to pass before merge — no commit reaches master without the test suite passing.



    Wenn das Projekt eine Veröffentlichung vorgenommen hat, MUSS die Projektdokumentation Design-Dokumentation enthalten, die alle Aktionen und Akteure innerhalb des Systems demonstriert. [OSPS-SA-01.01]
    Fügen Sie Designs in die Projektdokumentation ein, die die Aktionen und Akteure erklären. Akteure umfassen jedes Subsystem oder jede Entität, die ein anderes Segment im System beeinflussen kann. Stellen Sie sicher, dass dies für neue Funktionen oder Breaking Changes aktualisiert wird.

    docs/architecture.md documents the system boundary, layer architecture, and integration patterns. docs/system-map.md provides component diagrams and data flow visuals covering all actors (vulnerability analysts, team leads, automation/CLI, external systems) and actions (CVE ingestion, ticket lifecycle, release detection, eligibility evaluation). Feature specifications in docs/features/ detail every action per domain (identity, tickets, packages, integrations, platform) including state machines, API operations, and background task behaviors.



    Wenn das Projekt eine Veröffentlichung vorgenommen hat, MUSS die Projektdokumentation Beschreibungen aller externen Software-Schnittstellen der veröffentlichten Software-Assets enthalten. [OSPS-SA-02.01]
    Dokumentieren Sie alle Software-Schnittstellen (APIs) der veröffentlichten Software-Assets und erklären Sie, wie Benutzer mit der Software interagieren können und welche Daten erwartet oder produziert werden. Stellen Sie sicher, dass dies für neue Funktionen oder Breaking Changes aktualisiert wird.

    docs/api-spec.md provides the complete external API specification including endpoint paths, HTTP methods, request/response schemas, error codes, pagination, filtering, and authentication requirements. docs/data-sources.md catalogs all external system interfaces (NVD, MITRE, IBS/OBS, SMELT, AIMAAS, Bugzilla, RabbitMQ) with protocols, hosts, and data contracts. docs/cli-reference.md documents the CLI interface. The OpenAPI contract is auto-generated and published to GitHub Pages on each release, providing a machine-readable description of the full REST API surface.



    Wenn das Projekt eine Veröffentlichung vorgenommen hat, MUSS das Projekt eine Sicherheitsbewertung durchführen, um die wahrscheinlichsten und folgenschwersten potenziellen Sicherheitsprobleme zu verstehen, die innerhalb der Software auftreten könnten. [OSPS-SA-03.01]
    Die Durchführung einer Sicherheitsbewertung informiert sowohl Projektmitglieder als auch nachgelagerte Verbraucher darüber, dass das Projekt versteht, welche Probleme innerhalb der Software auftreten könnten. Das Verständnis darüber, welche Bedrohungen realisiert werden könnten, hilft dem Projekt, Risiken zu verwalten und anzugehen. Diese Informationen sind für nachgelagerte Verbraucher nützlich, um den Sicherheitssachverstand und die Praktiken des Projekts zu demonstrieren. Stellen Sie sicher, dass dies für neue Funktionen oder Breaking Changes aktualisiert wird.

    The project maintains an extensive docs/reviews/ directory with security review findings for every major component — over 50 review documents covering authentication, RBAC, networking, API specification, fetcher infrastructure, and all integration points. Each review includes findings from a dedicated @security-reviewer agent (among others), threat model assessments (e.g., brute-force resistance in local-authentication, trusted-upstream assumptions in networking, pre-disclosure data exposure in RBAC), and explicit risk acceptance decisions with rationale. The CI pipeline also runs bandit (static security analysis) and pip-audit (dependency vulnerability scanning) on every merge. Security-sensitive areas are subject to mandatory review per Guardrail 10.



    Die Projektdokumentation MUSS eine Richtlinie für die koordinierte Offenlegung von Schwachstellen (Coordinated Vulnerability Disclosure, CVD) mit einem klaren Zeitrahmen für die Reaktion enthalten. [OSPS-VM-01.01]
    Erstellen Sie eine SECURITY.md-Datei im Stammverzeichnis, die die Richtlinie des Projekts für koordinierte Offenlegung von Schwachstellen beschreibt. Fügen Sie eine Methode zur Meldung von Schwachstellen hinzu. Setzen Sie Erwartungen dafür, wie das Projekt reagieren und gemeldete Probleme angehen wird.

    SECURITY.md defines a coordinated vulnerability disclosure policy: vulnerabilities are reported privately to security@suse.com, the team acknowledges receipt within 5 business days, provides an initial assessment within 15 business days, and coordinates disclosure timing with the reporter. The document explicitly requests reporters to allow a reasonable timeframe for remediation before public disclosure.



    Die Projektdokumentation MUSS eine Möglichkeit zur privaten Meldung von Schwachstellen direkt an die Sicherheitskontakte des Projekts bereitstellen. [OSPS-VM-03.01]
    Bieten Sie Sicherheitsforschern eine Möglichkeit, Schwachstellen privat an das Projekt zu melden. Dies kann eine dedizierte E-Mail-Adresse, ein Webformular, spezialisierte VCS-Tools, E-Mail-Adressen für Sicherheitskontakte oder andere Methoden sein.

    SECURITY.md directs reporters to email security@suse.com for private vulnerability disclosure. Additionally, GitHub's Private Vulnerability Reporting feature is enabled on the repository (visible in the Security tab), providing a second private channel directly integrated with GitHub's advisory workflow. Both mechanisms allow reporters to communicate directly with the project's security contacts without public exposure.



    Die Projektdokumentation MUSS Daten über entdeckte Schwachstellen öffentlich veröffentlichen. [OSPS-VM-04.01]
    Bereitstellen von Informationen über bekannte Schwachstellen in einem vorhersehbaren öffentlichen Kanal, wie z.B. einem CVE-Eintrag, Blogbeitrag oder einem anderen Medium. Soweit möglich sollten diese Informationen betroffene Version(en) enthalten, wie ein Verbraucher feststellen kann, ob er betroffen ist, und Anweisungen zur Schadensbegrenzung oder Behebung.

    GitHub's Security Advisories feature is enabled on the repository, providing the standard mechanism to publicly publish data about discovered vulnerabilities (CVE assignment, affected versions, severity, remediation). SECURITY.md references the coordinated disclosure process that leads to public advisory publication once a fix is available. Any confirmed vulnerability would be published as a GitHub Security Advisory with full details (description, affected versions, CVSS score, remediation steps).



Sie können Tools und KI-Systeme nutzen, um Änderungen über eine einfache URL vorzuschlagen, z. B. https://www.bestpractices.dev/de/projects/14063/choose/edit?osps_ac_01_01_status=Met&osps_ac_01_01_justification=GitHub+enforced. Wie das geht, erfahren Sie in unserem Automatisierungsvorschlagssystem. Diese Daten sind unter der Community Data License Agreement – Permissive, Version 2.0 (CDLA-Permissive-2.0) verfügbar. Dies bedeutet, dass ein Datenempfänger die Daten mit oder ohne Änderungen weitergeben darf, solange der Datenempfänger den Text dieser Vereinbarung mit den weitergegebenen Daten zur Verfügung stellt. Bitte nennen Sie Gianluca Gabrielli und die OpenSSF Best Practices Badge-Mitwirkenden als Urheber.

Projekt-Badge-Eintrag im Besitz von: Gianluca Gabrielli.
Eintrag erstellt: 2026-08-13 13:55:49 UTC, zuletzt aktualisiert: 2026-08-14 06:09:03 UTC. Letztes erreichtes Badge: 2026-08-13 16:48:08 UTC.