Documentation Index
Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
Use this file to discover all available pages before exploring further.
このドキュメントでは、vantage-packager イメージ公開パイプラインによって作成された暗号署名およびアテステーションを検証する方法について説明します。
vantage-packager パイプラインは、公開された各イメージごとに複数のセキュリティアーティファクトを生成します。
- コンテナイメージ署名: Cosign を使用した暗号署名
- SPDX SBOM アテステーション: SPDX 2.3 形式の Software Bill of Materials
- 脆弱性スキャンアテステーション: SARIF 形式のセキュリティスキャン結果
すべてのアーティファクトは同じ秘密鍵で署名され、対応する公開鍵を使用して検証できます。
以下のツールがインストールされている必要があります。
cosign - 署名およびアテステーションの検証用
jq - JSON の解析および分析用
curl - アーティファクトのダウンロード用(任意)
公開鍵を使用して画像署名を検証します。
# 署名を検証(プライベートレジストリの場合は透明性ログをスキップ)
cosign verify --key cosign.key.pub --insecure-ignore-tlog \
abyvtgonprm27.azurecr.io/vantage-installer:2.7.1
自己署名証明書を使用しているレジストリの場合:
cosign verify --key cosign.key.pub --insecure-ignore-tlog --allow-insecure-registry \
abyvtgonprm27.azurecr.io/vantage-installer:2.7.1
期待される出力:
[{
"critical": {
"identity": {
"docker-reference": "abyvtgonprm27.azurecr.io/vantage-installer"
},
"image": {
"docker-manifest-digest": "sha256:a4190ad9d5289d7ad2d02d05749c10713a7aac217e8010b5e4ef15161b181c94"
},
"type": "cosign container image signature"
}
}]
SPDX ソフトウェア部品表 (SBOM) のアテステーションを検証します。
# SPDX構成証明を検証する
cosign verify-attestation --key cosign.key.pub --type spdx --insecure-ignore-tlog \
abyvtgonprm27.azurecr.io/vantage-installer:2.7.1
脆弱性スキャンの証明を検証します。
# 脆弱性スキャンアテステーションを検証
cosign verify-attestation --key cosign.key.pub --type vuln --insecure-ignore-tlog \
abyvtgonprm27.azurecr.io/vantage-installer:2.7.1
アテステーションから SPDX SBOM を抽出します:
# SPDX SBOMのダウンロードと抽出
cosign download attestation --predicate-type spdx \
abyvtgonprm27.azurecr.io/vantage-installer:2.7.1 | \
jq -r '.payload' | base64 -d | jq -r '.predicate' > sbom.json
脆弱性スキャン結果を取得します。
# 脆弱性スキャンのダウンロードと抽出
cosign download attestation --predicate-type vuln \
abyvtgonprm27.azurecr.io/vantage-installer:2.7.1 | \
jq -r '.payload' | base64 -d | jq -r '.predicate' > vuln-scan.sarif
# SBOMメタデータを表示
jq '{
name: .name,
spdxVersion: .spdxVersion,
creationInfo: .creationInfo,
packageCount: (.packages | length)
}' sbom.json
# バージョン付きですべてのパッケージを一覧表示
jq -r '.packages[] | "\(.name) \(.versionInfo // "unknown")"' sbom.json | sort
# CPE識別子(脆弱性参照)を持つパッケージを一覧表示
jq -r '.packages[] | select(.externalRefs[]?.referenceType == "cpe23Type") |
"\(.name) \(.versionInfo // "unknown") - \(.externalRefs[0].referenceLocator)"' sbom.json
# 宣言されたライセンスを持つパッケージを表示する
jq -r '.packages[] | select(.licenseDeclared != "NOASSERTION") |
"\(.name): \(.licenseDeclared)"' sbom.json
# スキャンのメタデータを表示
jq '{
version: .version,
tool: .runs[0].tool.driver.name,
toolVersion: .runs[0].tool.driver.version,
resultCount: (.runs[0].results | length)
}' vuln-scan.sarif
# 検出されたすべての脆弱性をリスト表示
jq -r '.runs[0].results[] |
"\(.ruleId) - \(.level // "unknown") - \(.message.text)"' vuln-scan.sarif
# 重大度が高い脆弱性のみを表示
jq -r '.runs[0].results[] | select(.level == "error") |
"\(.ruleId): \(.message.text)"' vuln-scan.sarif
高度な分析を行うには、CycloneDX SBOM ユーティリティをインストールして利用します。
# sbom-utilityをインストール(利用可能な場合)
go install github.com/CycloneDX/sbom-utility@latest
# SPDX SBOMを検証
sbom-utility validate --input-file sbom.json
# コンポーネントレポートを生成
sbom-utility query --input-file sbom.json --select "name,version" --from "packages"
# 依存関係ツリービューを作成
jq -r '.packages[] |
select(.name != null) |
"\(.name)@\(.versionInfo // "unknown") (\(.supplier // "unknown"))"' sbom.json |
sort | uniq
- https://sbom.sh/ にアクセスします
sbom.json ファイルをアップロードします
- コンポーネントや依存関係をインタラクティブに可視化して確認します
# 署名アーティファクトの参照を検索
cosign triangulate --type signature \
abyvtgonprm27.azurecr.io/vantage-installer:2.7.1
# アテステーションアーティファクトの参照を検索
cosign triangulate --type attestation \
abyvtgonprm27.azurecr.io/vantage-installer:2.7.1