ソフトウェア部品表(SBOM)
ソフトウェア部品表(SBOM)文書とは、Qtのインストールに関する、インストールされたファイル、著作権、ライセンス、バージョン、ソースリポジトリ、およびその他の関連情報を記載した宣言書です。SBOM文書は、コンポーネント情報をQtユーザーやその他の関係者に共有することで、サプライチェーン管理を促進します。 QtのSBOM文書は、特にライセンスコンプライアンスやセキュリティ脆弱性管理において有用です。
Qt 6.8 以降、Qt のビルドシステムは、さまざまなプラットフォームやビルド構成に合わせてカスタマイズされた SBOM ドキュメントを生成できるようになりました。 Qt Online Installer SBOMドキュメントは、各Qtバージョンのインストールディレクトリ内にあるsbom ディレクトリに配置されます。たとえば、Qt 6.12.0のAndroid arm64-v8aインストールの場合、SBOMドキュメントは次の場所にあります:
<INSTALL_DIR>/6.12.0/android_arm64_v8a/sbom/QtのソースからSBOMドキュメントを独自に生成するには、configureオプションとして-sbom を指定します。
たとえば、configure ステップでは次のように指定します:
./configure -sbomこれにより、SBOMドキュメントの生成は通常のQtインストールプロセスの一部となります:
ninja install
cmake --install .このビルドプロセスでは、SPDX形式で規定されている通り、JSON およびtag:value 形式の SBOM ドキュメントが生成されます。
Qt 6.11 以降、ビルドプロセスではオプションでCycloneDXSBOM ドキュメントが生成されます。
Qtのビルド手順に関する詳細については、「Qtソースのビルド」および「Qtのconfigureオプション」を参照してください。
Qtの開発者およびメンテナー向けに、SBOM WikiにはSBOMドキュメントの作成に関する具体的な情報が掲載されています。
REUSE準拠のQtモジュール
Qt モジュールは、Qt 6.9 以降、REUSEに準拠しています。具体的には、ライセンス文書およびライセンスチェックが Qt の開発プロセスの一部となっています。さまざまなツールが、Qt リポジトリ内のファイル、または外部の REUSE.toml ファイルにあるライセンスをチェックします。
reuse-toolは REUSE 準拠性をチェックし、ソース SBOM を生成します。また、内部ツールが、生成されたソース SBOM ファイルが Qt のライセンス仕様に準拠しているかを確認します。
Qtソースコードにおけるライセンス文書化に関する詳細については、以下を参照してください:
SPDX 形式
SBOMドキュメントはSPDX 2.3形式で記述されています。ドキュメントは、Qtモジュールに関する情報から始まります。その後、SPDXパッケージが個別のエントリとして続きます。
Qtのインストール環境において、SPDXパッケージは以下のいずれかとなります:
- Qtモジュール
- Qt プラグイン — たとえば、プラットフォームプラグイン
- Qt ツール — 例:moc
- Qtアプリケーション — 例: Qt Widgets Designer
- サードパーティ製コンポーネント — 「Qtで使用されるサードパーティ製コード」を参照
- システムライブラリの依存関係 -Qt コンフィギュレーションオプション
SPDXパッケージには通常、少なくとも以下の情報が含まれます:
- パッケージ名、バージョン、提供元名、およびビルド情報
- Qtライセンスの帰属表示 - Qt製品は、さまざまな商用ライセンスまたはオープンソースライセンスの下で提供されている場合があります。例えば、パッケージには、締結済みの複数のライセンスが記載されている場合があります:
LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-onlyQt ライセンスに関するページには、ライセンスの選択肢についての詳細情報が記載されています。
- 著作権表示 - 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.12.0:*:*:*:*:*:*:*詳細については、CPE仕様ページを参照してください。
- PURL(パッケージURL) - CPEの代替となるPURLは、以下の形式を使用する識別子スキームです:
scheme:type/namespace/name@version?qualifiers#subpathパッケージのPURLの例は以下の通りです:
pkg:generic/TheQtCompany/qtnetworkauth@6.12.0詳細については、「パッケージURL」のページをご覧ください。
- パッケージ間の依存関係などの関係。
例えば、依存関係を一覧表示するための
DEPENDS_ONなど。有効な関係タイプのリストについては、SPDX 2.3の第11条を参照してください。
サードパーティ製SPDXパッケージ
サードパーティ製コンポーネント用のSPDXパッケージには、通常、少なくとも以下の情報が含まれます:
- 名前、バージョン、および説明
- ホームページおよびダウンロード先
- Qt での使用方法
- ライセンスおよび著作権情報
- そのコンポーネントがセキュリティ上重要かどうか(コードが信頼できないコードを処理する可能性があるか否か)
SPDX SBOMの例
以下は、 Qt Network Authorization モジュール用のSPDX SBOMドキュメントの例です。SBOMファイル名はqtnetworkauth-6.9.0.spdx で、インストール先のsbom ディレクトリにあります。なお、このSBOMドキュメントには、以下の例には記載されていない他のパッケージがいくつか含まれている点にご注意ください。
SPDXVersion: SPDX-2.3
DataLicense: CC0-1.0
SPDXID: SPDXRef-DOCUMENT
DocumentName: qtnetworkauth-6.9.0
DocumentNamespace: https://qt.io/spdxdocs/qtnetworkauth-6.9.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.9.0 SHA1: 3dbc51259a07d458524a976da2e9607a76fab7e7
PackageName: NetworkAuth
SPDXID: SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth
PackageDownloadLocation: git://code.qt.io/qt/qtnetworkauth.git
PackageVersion: 6.9.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.9.0:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:qt:qt:6.9.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-NetworkAuthCycloneDX 形式
Qt 6.11 以降、ビルドプロセスではオプションでCycloneDX v1.6形式の SBOM ドキュメントが生成されます。
CycloneDX 形式での生成を必須にするには、Qt を次のように設定します:
./configure -sbom -sbom-cyclonedx-v1_6 -sbom-cyclonedx-v1_6-requiredCycloneDXドキュメントを生成するには、以下の依存関係が必要です:
- Pythonバージョン 3.9 以降
- Python パッケージ:
- cyclonedx-python-lib[json-validation]
- tomli
Pythonのpip ツールを使用して、必要なパッケージをインストールできます:
pip install 'cyclonedx-python-lib[json-validation]' tomliCycloneDXのドキュメントには、コンポーネント、ライセンス、依存関係、セキュリティメタデータなど、SPDXドキュメントと同様の情報が記載されています。
SPDXと比較すると、CycloneDXの情報には、ライセンスや関係タイプなど一部の領域に関する詳細が少なくなっています。
インストールされたCycloneDX SBOMドキュメントのファイル名は、「<module>-<version>.cdx.json 」という形式になります。
CycloneDX SBOM の例
以下は、 Qt Network Authorization モジュール用の CycloneDX SBOM ドキュメントの例です。SBOM のファイル名はqtnetworkauth-6.11.0.cdx.json で、インストール先の `sbom ` ディレクトリにあります。なお、SBOM ドキュメントには、以下の例には記載されていない他のコンポーネントもいくつか含まれています。
{
"components": [
{
"bom-ref": "SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth",
"copyright": "Copyright (C) The Qt Company Ltd. and other contributors.",
"cpe": "cpe:2.3:a:qt:qt:6.11.0:*:*:*:*:*:*:*",
"licenses": [
{
"license": {
"acknowledgement": "concluded",
"id": "GPL-3.0-only"
}
}
],
"name": "NetworkAuth",
"properties": [
{
"name": "qt:sbom:entity_type",
"value": "QT_MODULE"
},
{
"name": "qt:sbom:is_qt_entity_type",
"value": "true"
},
{
"name": "spdx:external-reference:package-manager:purl",
"value": "pkg:github/qt/qtnetworkauth?library_name=NetworkAuth#src/oauth"
},
{
"name": "spdx:external-reference:security:cpe23",
"value": "cpe:2.3:a:qt:qtnetworkauth:6.11.0:*:*:*:*:*:*:*"
}
],
"purl": "pkg:generic/TheQtCompany/qtnetworkauth-NetworkAuth?library_name=NetworkAuth&vcs_url=https://code.qt.io/qt/qtnetworkauth.git#src/oauth",
"supplier": {
"name": "TheQtCompany",
"url": [
"https://qt.io"
]
},
"type": "library",
"version": "6.11.0"
}
],
"dependencies": [
{
"dependsOn": [
"SPDXRef-Package-qtbase-qt-module-Core",
"SPDXRef-Package-qtbase-qt-module-Gui",
"SPDXRef-Package-qtbase-qt-module-Network",
"SPDXRef-Package-qtbase-qt-module-PlatformModuleInternal"
],
"ref": "SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth"
}
],
"serialNumber": "urn:uuid:ce0d41b5-0fe8-5383-bf31-ff353a05b8be",
"version": 1,
"$schema": "http://cyclonedx.org/schema/bom-1.6.schema.json",
"bomFormat": "CycloneDX",
"specVersion": "1.6"
}meta-qt6 を使用した Yocto ビルド
Boot to Qt は、meta-qt6 レイヤーを使用してすべての Qt モジュールをビルドし、生成された SBOM ドキュメントは、Boot to Qt を Qt Online Installer経由でxml-ph-0000@deepl.internalをインストールすると、生成されたSBOMドキュメントはSPDXファイルとして利用可能です。インストールパスは、Qtのバージョンおよびターゲットハードウェアによって異なります。
たとえば、Raspberry Pi ターゲットの場合、SBOM .spdx ドキュメントは次の場所にあります:
<INSTALL_DIR>/6.12.0/Boot2Qt/raspberrypi-armv8/toolchain/sysroots/cortexa53-poky-linux/usr/lib/sbom/詳細については、以下のページをご覧ください:
関連トピック
- SPDX 2.3
- Qt Wiki - SBOM- Qt ソースから SBOM ドキュメントを生成する
- Qtで使用されているサードパーティ製コード
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.