3.2. セキュリティーインサイトの表示
コードを更新して変更をプッシュすると、システムは自動的に on-push
パイプラインをトリガーします。デフォルトでは、RHTAP は ソフトウェアアーティファクト (SLSA) レベル 3 仕様を満たすコンテナー化されたデプロイメントに標準ビルドパイプラインを使用します。
図3.1 正常なパイプライン実行

パイプラインの実行では、次のタスクが実行します。
-
init
: 再構築フラグ、認証を設定し、イメージリポジトリーシークレットを作成します。 -
clone-repository
: ビルドの準備のためにリポジトリーのクローンを作成します。 build-container
:- Buildah を使用してソースコードからコンテナーイメージを作成し、レジストリーにプッシュします。
- すべてのコンポーネントと依存関係を文書化するためにソフトウェアの BOM (SBOM) を生成します。
- イメージ署名やアテステーションなどのセキュリティーアーティファクトを公開します。
-
update-deployment
: GitOps リポジトリーを更新して新しいイメージをデプロイします。 -
acs
タスク: ポリシーへの準拠を確認するためにセキュリティーチェックを実行します。 -
show-sbom
: 透明性のためにすべてのソフトウェアコンポーネントとライブラリーをリスト表示します。 -
summary
: リソースをクリーンアップし、パイプラインの実行の概要を提供します。
パイプライン実行内の任意のタスクをクリックすると、ログが表示されます。
3.2.1. Red Hat Advanced Cluster Security のタスク
パイプライン内の RHACS タスクは、RHTAP インストールプロセス中に RHACS をインストールして設定した場合にのみ成功します。RHACS がインストールまたは設定されていない場合、パイプラインはこれらのタスクをスキップします。
- RHACS のインストール手順の詳細は、Red Hat Advanced Cluster Security for Kubernetes のインストール を参照してください。
- RHTAP のインストールプロセス中に RHACS をインストールおよび設定しなかった場合は、ACS の設定 を参照してください。
図3.2 パイプライン実行内の RHACS タスク

パイプラインには、roxctl
を使用してセキュリティーチェックを実行する 3 つの RHACS タスクが含まれています。
-
roxctl image scan
- イメージ内のコンポーネントと脆弱性を識別し、結果を JSON 形式で返します。 -
roxctl image check
- イメージ内のビルド時のセキュリティー違反を検証します。たとえば、'No log4j allowed' などのポリシーや、実稼働イメージに curl、wget、パッケージマネージャーを含めることに対する制限などです。 -
roxctl deployment check
- YAML デプロイメントファイル内のビルド時およびデプロイ時のセキュリティー違反をチェックします。
RHACS レポートの視覚化
RHDH の CI タブのパイプライン実行セクションには、構造化されたポップアップインターフェイスに詳細なタスクレポートが表示されます。ポップアップには次の内容が含まれます。
- Red Hat Advanced Cluster Security (RHACS タスクの有無に応じて条件付きで表示されます): すべての RHACS タスクの個別のタブを表示し、特定されたセキュリティーの問題の概要を示します。
-
その他:
PipelineRun
からの結果 (IMAGE_URL、IMAGE_DIGEST
など) を提供します。このセクションは、ポップアップで複数のセクション (たとえば、Enterprise Contract や RHACS) が使用可能な場合にのみ表示されます。
RHACS レポートを表示するには、以下を実行します。
- Catalog を選択し、確認するコンポーネントを選択します。
CI タブ > Actions 列 > View output アイコンを選択し、選択したコンポーネントの詳細な RHACS レポートを確認します。
図3.3 詳細な RHACS レポート
注記必要な権限がある場合は、RHACS コンソールで脆弱性やポリシーを管理し、特定のイメージの詳細な脆弱性レポートを確認できます。詳細は、ダッシュボードの表示 を参照してください。
RHACS レポートの解釈
RHACS タスクからのレポートは、強力なセキュリティー体制を維持するために重要なセキュリティーの洞察を提供します。
以下は、roxctl image scan
(イメージスキャン) レポートを解釈する例です。roxctl image check
(イメージチェック) レポートおよび roxctl deployment check
(デプロイメントチェック) レポートにも同じアプローチを使用します。
- 脆弱性の内訳: RHACS は、検出された脆弱性を重大度別 (重大、重要、中程度、低)、ステータス別 (修正可能、修正不可能) に分類し、スキャン結果の概要を提供します。この分類には、分析された脆弱性とコンポーネントの総数と、Common Vulnerabilities and Exposures (CVE) が含まれます。
表示される詳細情報: レポートには、特定された脆弱性ごとに次の内容が含まれています。
- CVE ID: 脆弱性の一意の識別子。
- 重大度: 脆弱性によってもたらされる脅威のレベル。
- コンポーネント: 脆弱性の影響を受けるソフトウェアコンポーネント。
- コンポーネントバージョン: 影響を受けるコンポーネントのバージョン。
- 修復の提案: 脆弱性に対処するための推奨事項。該当する場合は、脆弱性が修正されたバージョンが含まれています。
3.2.2. SBOM について
show-sbom
タスクは、アプリケーションで使用されるすべてのソフトウェアライブラリーのリストを作成します。これは、脆弱性を特定し、セキュリティーへの影響を評価するのに役立ちます。
図3.4 パイプライン実行内の show-sbom
タスク

SBOM の表示
手順
- Catalog を選択し、コンポーネントを選択します。
CI タブを選択し、
show-sbom
タスクのリンクアイコンを選択します。システムは SBOM タスクログを表示します。ブラウザーで SBOM を確認し、log4j
などの脆弱性を検索します。図3.5 SBOM の詳細
CLI での SBOM のダウンロード
前提条件
- Cosign CLI ツールがインストールされている。
-
build-container
およびshow-sbom
タスクが正常に実行されている。
手順
-
成功したパイプライン実行を展開し、
show-summary
タスクを選択します。 SBOM イメージ URL を検索してコピーし、ターミナルで次のコマンドを実行します。
cosign コマンドの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cosign download sbom <the-sbom-url-you-copied>
$ cosign download sbom <the-sbom-url-you-copied>
(オプション) 詳細な分析のために出力をファイルに保存します。
cosign コマンドの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cosign download sbom <the-sbom-url-you-copied> > sbom.txt
$ cosign download sbom <the-sbom-url-you-copied> > sbom.txt
SBOM の解釈
SBOM には、プロジェクトで使用される各ライブラリーに関する次のような情報が含まれます。
- ライブラリー、著者、またはパブリッシャーのソース
- ライブラリー名
- ライブラリーのバージョン
- ライセンスの種類
この情報は、個々のライブラリーが安全に提供され、更新され、準拠していることを保証するのに役立ちます。
SBOM の例
{ "bomFormat": "CycloneDX", "specVersion": "1.4", "serialNumber": "urn:uuid:89146fc4-342f-496b-9cc9-07a6a1554220", "version": 1, "metadata": { ... }, "components": [ { "bom-ref": "pkg:pypi/flask@2.1.0?package-id=d6ad7ed5aac04a8", "type": "library", "author": "Armin Ronacher <armin.ronacher@active-4.com>", "name": "Flask", "version": "2.1.0", "licenses": [ { "license": { "id": "BSD-3-Clause" } } ], "cpe": "cpe:2.3:a:armin-ronacher:python-Flask:2.1.0:*:*:*:*:*:*:*", "purl": "pkg:pypi/Flask@2.1.0", "properties": [ { "name": "syft:package:foundBy", "value": "python-package-cataloger" ...
{
"bomFormat": "CycloneDX",
"specVersion": "1.4",
"serialNumber": "urn:uuid:89146fc4-342f-496b-9cc9-07a6a1554220",
"version": 1,
"metadata": {
...
},
"components": [
{
"bom-ref": "pkg:pypi/flask@2.1.0?package-id=d6ad7ed5aac04a8",
"type": "library",
"author": "Armin Ronacher <armin.ronacher@active-4.com>",
"name": "Flask",
"version": "2.1.0",
"licenses": [
{
"license": {
"id": "BSD-3-Clause"
}
}
],
"cpe": "cpe:2.3:a:armin-ronacher:python-Flask:2.1.0:*:*:*:*:*:*:*",
"purl": "pkg:pypi/Flask@2.1.0",
"properties": [
{
"name": "syft:package:foundBy",
"value": "python-package-cataloger"
...