ソフトウェア部品表
ソフトウェア部品表(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 ドキュメントを生成するには、-sbom
をconfigureオプションとして設定します。
例えば、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パッケージは以下のようになります:
- Qt モジュール
- Qt プラグイン -プラットフォームプラグインなど
- Qt ツール -mocなど
- Qt アプリケーション - Qt Designer など。
- サードパーティコンポーネント -Qt で使用されるサードパーティのコードを参照してください。
- システムライブラリ依存 -Qt Configure Options を参照してください。
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
関連トピック
- SPDX 2.3
- Qt Wiki - SBOM- Qt ソースから SBOM ドキュメントを生成する
- Qt で使用されるサードパーティのコード
©2024 The Qt Company Ltd. ここに含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。