ソフトウェア部品表

ソフトウェア部品表(Software Bill of Materials:SBOM)ドキュメントとは、インストールされたファイル、著作権、ライセンス、バージョン、ソースリポジトリ、および Qt インストールに関するその他の関連情報の宣言です。SBOM ドキュメントは、Qt ユーザーやその他の関係者にコンポーネント情報を共有することで、サプライチェーン管理を容易にします。Qt の SBOM ドキュメントは、ライセンスコンプライアンスとセキュリティ脆弱性管理に特に役立ちます。

Qt 6.8 以降、Qt のビルドシステムは異なるプラットフォームやビルド構成に合わせて SBOM ドキュメントを生成することができます。Qt Online Installerは、SBOM ドキュメントを各 Qt バージョンのインストールディレクトリにあるsbom ディレクトリに配置します。例えば、Qt 6.8.1 Android arm64-v8a インストールの場合、SBOM ドキュメントは次の場所にあります:

<INSTALL_DIR>/6.8.1/android_arm64_v8a/sbom/

Qt ソースから SBOM ドキュメントを生成するには、-sbomconfigureオプションとして設定します。

例えば、configureステップの間に:

./configure  -sbom

SBOMドキュメントの生成は、通常のQtインストールの一部になります:

ninja install
cmake --install .

Qt 6.8 では、このビルドプロセスによって、SPDXフォーマットで指定された JSON およびtag:value フォーマットの SBOM ドキュメントが作成されます。

Qt のビルド手順の詳細については、「Qt ソースのビルド」と「Qt 設定オプション」を参照してください。

Qtの開発者とメンテナーのために、SBOM WikiにSBOMドキュメントを作成するための特定の情報があります。

SPDXフォーマット

SBOMドキュメントはSPDX 2.3形式です。ドキュメントはQtモジュールに関する情報で始まる。SPDXパッケージは個別の項目として続く。

Qtのインストールでは、SPDXパッケージは以下のようになります:

SPDX パッケージには、通常少なくとも以下の情報が含まれています:

  • パッケージ名、バージョン、サプライヤ名、ビルド情報
  • Qt License Attribution - Qt 製品は、異なる商用ライセンスやオープンソースライセンスの下にある場合があります。例えば、パッケージには複数のライセンスが記載されている場合があります:
    LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only

    Qt Licensingにライセンスオプションに関する詳細情報があります。

  • 著作権表示 - SBOM ドキュメントには、Qt のソース著作権、およびサードパーティのソースまたは作者の著作権が含まれています。
  • CPE(Common Platform Enumeration) - パッケージ識別のための命名スキーム。Qt では、SBOM CPE 形式が一般的である:
    cpe:<cpe_version>:<part>:<vendor>:<product>:<version>:<update>:<edition>:<language>:<sw_edition>:<target_sw>:<target_hw>:<other>

    Qt Network Authorizationパッケージの識別子の例は次のとおり:

    cpe:2.3:a:qt:qtnetworkauth:6.8.0:*:*:*:*:*:*:*

    詳細については、CPE仕様のページを参照のこと。

  • PURL (Package URL) - CPEの代替となるPURLは、以下のフォーマットを使用する識別子スキームです:
    scheme:type/namespace/name@version?qualifiers#subpath

    パッケージのPURLの例は以下の通りです:

    pkg:generic/TheQtCompany/qtnetworkauth@6.8.0

    詳しくはパッケージURLのページをご覧ください。

  • 依存関係のようなパッケージ間の関係。

    例えば、依存関係の一覧のDEPENDS_ON 。有効な関係タイプの一覧は、SPDX 2.3の第11節を参照してください。

サードパーティのSPDXパッケージ

サードパーティコンポーネントのSPDXパッケージには、通常少なくとも以下の内容が含まれます:

  • 名前、バージョン、説明
  • ホームページとダウンロード場所
  • Qt での使用方法
  • ライセンスと著作権情報
  • そのコンポーネントがセキュリティクリティカルかどうか - 信頼されていないコードを処理する可能性があるかどうか

SBOMの例

以下は、Qt Network Authorizationモジュールの SBOM ドキュメントの例です。SBOMファイル名はqtnetworkauth-6.8.0.spdx で、インストールのsbom ディレクトリにあります。SBOM ドキュメントには、以下の例には記載されていない他のパッケージがいくつか含まれていることに注意してください。

SPDXVersion: SPDX-2.3
DataLicense: CC0-1.0
SPDXID: SPDXRef-DOCUMENT
DocumentName: qtnetworkauth-6.8.0
DocumentNamespace: https://qt.io/spdxdocs/qtnetworkauth-6.8.0
Creator: Organization: TheQtCompany
Creator: Tool: Qt Build System
CreatorComment: <text>This SPDX document was created from CMake 3.27.7, using the qt
build system from https://code.qt.io/cgit/qt/qtbase.git/tree/cmake/QtPublicSbomHelpers.cmake</text>
Created: 2024-09-19T11:07:23Z
ExternalDocumentRef: DocumentRef-qtbase https://qt.io/spdxdocs/qtbase-6.8.0 SHA1: 3dbc51259a07d458524a976da2e9607a76fab7e7

PackageName: NetworkAuth
SPDXID: SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth
PackageDownloadLocation: git://code.qt.io/qt/qtnetworkauth.git
PackageVersion: 6.8.0
PackageSupplier: Organization: TheQtCompany
PackageLicenseConcluded: LicenseRef-Qt-Commercial OR GPL-3.0-only
PackageLicenseDeclared: LicenseRef-Qt-Commercial OR GPL-3.0-only
ExternalRef: PACKAGE-MANAGER purl pkg:github/qt/qtnetworkauth?library_name=NetworkAuth#src/oauth
ExternalRef: PACKAGE-MANAGER purl pkg:generic/TheQtCompany/qtnetworkauth-NetworkAuth?vcs_url=https://code.qt.io/qt/qtnetworkauth.git&library_name=NetworkAuth#src/oauth
FilesAnalyzed: true
PackageCopyrightText: <text>Copyright (C) 2024 The Qt Company Ltd.</text>
PrimaryPackagePurpose: LIBRARY
ExternalRef: SECURITY cpe23Type cpe:2.3:a:qt:qtnetworkauth:6.8.0:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:qt:qt:6.8.0:*:*:*:*:*:*:*
Relationship: SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth DEPENDS_ON DocumentRef-qtbase:SPDXRef-Package-qtbase-qt-module-Core
Relationship: SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth DEPENDS_ON DocumentRef-qtbase:SPDXRef-Package-qtbase-qt-module-PlatformModuleInternal
Relationship: SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth DEPENDS_ON DocumentRef-qtbase:SPDXRef-Package-qtbase-qt-module-Gui
Relationship: SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth DEPENDS_ON DocumentRef-qtbase:SPDXRef-Package-qtbase-qt-module-Network
Relationship: SPDXRef-Package-qtnetworkauth CONTAINS SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth

©2024 The Qt Company Ltd. ここに含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。