This documentation is for a release that is no longer maintained
See documentation for the latest supported version.Red Hat Trusted Application Pipeline のスタートガイド
カスタマイズなしにすぐに使用できるソフトウェアテンプレートを確認します。これは、署名、アテステーション、ソフトウェア部品表 (SBOM)、SLSA 検証、CVE スキャン、リリースポリシーガードレールなどの安全なサプライチェーン機能が組み込まれたアプリケーションを構築するためのものです。
概要
第1章 RHTAP の基礎について リンクのコピーリンクがクリップボードにコピーされました!
ソフトウェア開発ライフサイクル (SDLC) 全体のサイバーセキュリティープラクティスを一新することを目的としたフレームワーク、Red Hat Trusted Application Pipeline (RHTAP) の堅牢な基盤を紹介します。RHTAP を使用すると、従来のセキュリティー対策を超えた取り組みを開始し、最先端のソリューションと DevSecOps CI/CD フレームワークを、計画からデプロイまでの各段階に統合できます。このようなプロアクティブな戦略により、開発者のオンボーディング、プロセスの加速、および初期段階からのセキュリティーの組み込みを加速します。
1.1. セキュアな CI/CD フレームワーク リンクのコピーリンクがクリップボードにコピーされました!
RHTAP の中心となるのは、最高レベルのソフトウェア開発標準を遵守するように設計された、先駆的でセキュアな CI/CD フレームワークです。RHTAP は、Supply-chain Levels for Software Artifacts (SLSA) レベル 3 に準拠し、すべてのコード行がセキュリティーの堅牢化に寄与するようにして、脆弱性の早期検出と軽減を大幅に強化します。
1.2. RHTAP のセキュリティーツールの詳細 リンクのコピーリンクがクリップボードにコピーされました!
潜在的な脆弱性を軽減するには、ソフトウェア開発全体にわたってソフトウェアのセキュリティーを確保することが不可欠です。RHTAP は、セキュリティー対策を強化するために設計された強力なツール群を活用します。RHTAP がコンポーネントを活用してセキュリティー脅威に対する強力な防御を提供する仕組みを説明します。
Red Hat Trusted Artifact Signer (RHTAS)
- Red Hat Trusted Artifact Signer は、署名およびアテステーションメカニズムを通じてソフトウェアインテグリティーを強化することに重点を置いています。RHTAS は、すべてのコードとアーティファクトが署名およびアテストされていることを確認することで、使用されているソフトウェアコンポーネントの信頼性とセキュリティーを確認する検証可能な信頼チェーンを実現します。
Red Hat Trusted Profile Analyzer (RHTPA)
- Red Hat Trusted Profile Analyzer は、Software Bills of Materials (SBOM) の生成と管理を扱います。SBOM は、ソフトウェア製品に含まれるすべてのコンポーネント、ライブラリー、依存関係の詳細なリストを提供するため、透明性とコンプライアンスを維持する上で非常に重要です。RHTPA は、SBOM の作成を自動化し、ソフトウェアの構成に関する正確で最新の情報をステークホルダーに提供します。
Red Hat Advanced Cluster Security (RHACS)
- Red Hat Advanced Cluster Security は、アーティファクトの脆弱性をスキャンし、デプロイメントを強化します。このような事前対応のアプローチにより、開発プロセスの早い段階でセキュリティーの問題を特定して軽減し、アプリケーションが開始からデプロイメントまで確実に強化されます。
1.3. 必須のプラットフォームとツール リンクのコピーリンクがクリップボードにコピーされました!
RHTAP は、開発ワークフローを強化し、安全で効率的なソフトウェア配信をサポートするさまざまなプラットフォームやツールと統合されます。これらのツールは、シームレスな開発エクスペリエンスに必要なインフラストラクチャーと自動化を提供します。
Red Hat Developer Hub (RHDH)
- Red Hat Developer Hub は、開発者向けのセルフサービスポータルです。オンボーディングプロセスを効率化し、セキュアなソフトウェア開発に必要な豊富なリソースとツールへのアクセスを提供します。このプラットフォームは、ベストプラクティスを推奨し、開発プロセスの最初からセキュリティー対策を組み込むことを容易にします。
Quay
- Quay は、コンテナーイメージ用のセキュアなリポジトリーを提供します。これはコンテナー化されたアプリケーションを信頼して保管できる場所として機能し、脆弱性を継続的にスキャンして、ライフサイクル全体を通じてイメージの安全性を確保します。
OpenShift GitOps
- OpenShift GitOps は、Git リポジトリーを使用して Kubernetes のデプロイメントとそのインフラストラクチャーを管理します。OpenShift GitOps は、インフラストラクチャーとアプリケーションの設定を Git で維持することで、一貫性のある自動化されたデプロイメントプラクティスを保証し、手動によるエラーを減らし、デプロイメントの効率を高めます。
OpenShift Pipeline
- OpenShift Pipelines は、ソフトウェアの継続的インテグレーションおよび継続的デリバリー (CI/CD) を自動化し、可視性を提供します。OpenShift Pipelines は、ビルド、テスト、およびデプロイメントのプロセスを自動化することで、合理化および効率化されたワークフローを保証し、高品質の基準を維持しながら実稼働までのプロセスを加速します。
1.4. 主なセキュリティープラクティス リンクのコピーリンクがクリップボードにコピーされました!
RHTAP には、特定のセキュリティー上の懸念に効果的に対処するために、次のツールが組み込まれています。
- 脆弱性のスキャン: RHTAP は、各プルリクエストごとに、指定の CVE スキャナー (Advanced Cluster Security など) を使用して徹底的なスキャンを実行し、可能な限り早い段階で脆弱性を特定して対処します。
- SBOM の生成: RHTAP の SBOM 自動生成は、ソフトウェアの透明性とコンプライアンスを維持する上で重要な役割を果たします。組織は、ソフトウェアコンポーネントの包括的なインベントリーを提供することで、ソフトウェアサプライチェーンをより適切に管理して保護することができます。
- コンテナーイメージのセキュリティー: RHTAP は、コンテナーイメージが SLSA (Supply-chain Levels for Software Artifacts) ガイドラインに準拠していることを検証します。これは、41 を超えるルールを含む Enterprise Contract により実行されます。これにより、開発プロセスで使用されるコンテナーイメージを厳格なセキュリティー標準に準拠させることができます。
1.5. CI/CD ツールの選択 リンクのコピーリンクがクリップボードにコピーされました!
RHTAP を使用して CI/CD パイプラインを設定する場合、特定の要件と希望に応じて、Tekton と Jenkins を柔軟に選択できます。
Tekton
- Tekton は、ソフトウェアプロジェクトのビルド、テスト、およびデプロイメントプロセスを自動化するクラウドネイティブソリューションを提供します。Tekton は、Kubernetes 中心のアプローチで CI/CD ワークフローを管理することにより、シームレスな統合と一貫したアプリケーション配信を保証します。コードとしての宣言型パイプラインにより柔軟性とスケーラビリティーが実現され、開発パイプラインの効率と信頼性が向上します。Tekton を使用すると、堅牢な自動化と CI/CD プロセスの明確な可視性が得られるため、最新のクラウドネイティブ環境に最適です。
Jenkins
- Jenkins は、ソフトウェアプロジェクトのビルド、テスト、およびデプロイメントプロセスを自動化します。Jenkins は CI/CD ワークフローを管理することで、一貫性があり、信頼性の高いアプリケーション配信を保証します。広範なプラグインエコシステムにより、さまざまなツールやテクノロジーと柔軟に統合でき、開発パイプラインの効率と効果が向上します。
1.6. すぐに使用できるソフトウェアテンプレートの活用 リンクのコピーリンクがクリップボードにコピーされました!
RHTAP は、すぐに使用できるソフトウェアテンプレートを備えており、前述の強力なセキュリティーツールを開発ワークフローに直接シームレスに統合します。そのため、開発者はセキュリティー関連の煩わしさを最小限に抑えながらイノベーションに集中できます。すぐに使用できるソフトウェアテンプレートは、完全なカスタマイズが可能で、組織独自の要件にシームレスに対応できます。
1.7. 今後の道筋 リンクのコピーリンクがクリップボードにコピーされました!
DevSecOps の考え方を取り入れ、RHTAP を活用することで、セキュアで効率的な開発環境が促進されます。このような継続的な評価と向上の取り組みにより、組織は現在と将来のサイバーセキュリティーの課題に効果的に対処できるようになります。
第2章 セキュアなアプリケーション開発に向けた準備 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Trusted Application Pipeline (RHTAP) は、アプリケーションの開発、セキュリティー、およびデプロイメントを効率化するように設計された統合ツールスイートです。これには、以下が含まれます。
- Red Hat Advanced Cluster Security (RHACS): アーティファクトの脆弱性をスキャンします。
- Red Hat Developer Hub: 開発者向けのセルフサービスポータルです。
- OpenShift GitOps: Kubernetes デプロイメントとそのインフラストラクチャーを管理します。
- OpenShift Pipelines: 継続的インテグレーションと継続的デリバリー (CI/CD) を自動化し、可視性を提供します。
- quay.io: アーティファクトを保存するためのコンテナーレジストリーです。
- Red Hat Trusted Artifact Signer: アーティファクトに署名し、検証します。
- Red Hat Trusted Profile Analyzer: セキュリティー体制に関するインサイトを提供します。
2.1. RHTAP の使用 リンクのコピーリンクがクリップボードにコピーされました!
RHTAP の使用には、インストールが必要です。インストールには、OpenShift Container Platform (OCP) クラスターへの ClusterAdmin アクセスや GitHub アカウントなど、いくつかの前提条件の設定が含まれます。
詳細なインストール手順は、Red Hat Trusted Application Pipeline のインストール を参照してください。
第3章 サンプルソフトウェアテンプレートを使用したアプリケーションの構築 リンクのコピーリンクがクリップボードにコピーされました!
RHTAP は、Red Hat Developer Hub (RHDH) のすぐに使用できるソフトウェアテンプレートにより、開発環境を変革します。このテンプレートは、Red Hat の包括的なツール群 (RHDH、RHTAS、RHTPA) およびテクノロジーとシームレスに統合できるように細心の注意を払って設計されています。この統合により、オンプレミス環境内でセキュアで効果的な開発者向けの SDLC を実現するための強固なフレームワークが提供されます。
これらの基本要素に加えて、すぐに使用できる RHTAP のソフトウェアテンプレートには、開発エクスペリエンスをさらに保護し最適化する主要なテクノロジーとの統合機能がデフォルトで組み込まれています。
- ACS (Advanced Cluster Security): 開発プロセスの早い段階で脆弱性を特定して軽減することで、デプロイメントを強化し、計画段階からデプロイ段階までアプリケーションを確実に強化します。
- Quay: コンテナーイメージのセキュアな保管場所として機能します。脆弱性を継続的にスキャンする信頼性の高いリポジトリーを提供し、コンテナー化されたアプリケーションを安全に保ちます。
- Tekton Pipelines: ビルドおよびデプロイプロセスを正確に自動化し、SDLC にシームレスに統合される CI/CD フレームワークを実現して、実稼働までの時間を短縮します。
- GitOps: Git リポジトリーでインフラストラクチャーとアプリケーションの設定を維持することで GitOps 戦略を導入し、すべての環境で一貫性のある自動デプロイを実現します。
さらに、RHTAP は、Java、Python、Node.js、Go などの幅広い一般的なプログラミング言語によるアプリケーションの開発とコンテナー化をサポートし、組織のアプリケーション開発能力を拡大します。
クラスター管理者は、RHTAP をインストールすると、特定のテンプレートと拡張機能を使用して Red Hat Developer Hub ポータルをカスタマイズできるようになります。このカスタマイズプロセスにより、開発ワークフローが簡素化され、パイプライン、脆弱性、ポリシーに関連する懸念が軽減されます。カスタマイズは、開発者がコーディングに集中できるようにする上で重要です。
クラスター管理者は、カスタマイズを進める前に、このガイドを通じて利用可能なソフトウェアとパイプラインテンプレートについて理解しておくことが重要です。この理解は、RHTAP によりセキュアなサプライチェーンをサポートする仕組みを把握する上で欠かせないものであり、後のカスタマイズ作業の土台となります。
3.1. 準備 リンクのコピーリンクがクリップボードにコピーされました!
- RHTAP が正常にインストールされていることを確認します。
- RHTAP が提供するリンクを使用して、Red Hat Developer Hub (RHDH) にログインします。RHDH は包括的な開発者プラットフォームとして機能し、開発者ポータルの作成を容易にします。開発プロセスを強化する統合プラットフォームをエンジニアリングチームに提供し、高品質のソフトウェアを効率的に作成するためのさまざまなツールとリソースを提供します。
3.2. アプリケーションの構築 リンクのコピーリンクがクリップボードにコピーされました!
RHDH ポータルで Create を選択し、適切なテンプレートを選択します。たとえば、Quarkus Java - Trusted Application Pipeline などです。
RHDH で、RHTAP が提供するテンプレートを使用して開発者向けのアプリケーションまたはマイクロサービスを構築するプロセスは、基本的に次の 3 つのステップのみです。
- アプリケーション情報の指定
- アプリケーションリポジトリー情報の指定
- デプロイメント情報の指定
アプリケーション情報の指定
-
Name フィールドにアプリケーション名を入力します。名前には小文字 (a-z)、数字 (0-9)、ダッシュ (-) を使用できます。ただし、先頭と末尾が小文字の英数字である必要があります。有効な名前の例は
my-nameやabc-123です。長さは 1 - 63 文字である必要があります。 -
Owner ドロップダウンリストから、このアプリケーションの適切な RHDH コンポーネント所有者を選択します。デフォルト値は
user:guestで、システムに特定の所有者が登録されていない場合に表示されます。所有者を登録していない場合は、デフォルトのuser:guestを選択したままにします。必要に応じて、guestをユーザー名に置き換えて、アプリケーションの所有権をカスタマイズすることもできます。 - Next を選択します。Application Repository Information フォームが表示されます。
アプリケーションリポジトリー情報の指定
- Host Type ドロップダウンリストから、適切なリポジトリーホストタイプを選択します。
- Repository Owner フィールドに、使用している Git アプリケーションを所有する組織の名前を入力します。これには、個人のユーザーアカウント、組織、または組織内のプロジェクトを指定できます。
- Repository Name フィールドに適切なリポジトリー名を入力します。使用できる文字は、A-Z、a-z、0-9、アンダースコア (_)、およびダッシュ (-) 文字に限られます。システムがこの情報を使用して、ホストリポジトリーサーバー上に作成するリポジトリーに名前を付けます。
-
Repository Default Branch フィールドに、リポジトリーのデフォルトブランチを入力します。このフィールドにはデフォルトで
mainが表示されます。これをそのまま使用できます。 -
Repository Server フィールドに、オンプレミスホストの URL を入力します。
HTTPプロトコルと.git拡張子は除外します。たとえば、gitlab-gitlab.apps.cluster-ljg9z.sandbox219.opentlc.com です。 - CI Provider ドロップダウンリストから、システムがアプリケーションの構築、テスト、およびデプロイに使用する適切な継続的インテグレーション (CI) ツール (Jenkins や Tekton など) を選択します。
- Next を選択します。Deployment Information フォームが表示されます。
デプロイメント情報の指定
-
Image Registry フィールドに、オンプレミスのイメージレジストリー URL を入力します。
HTTPプロトコルは除外します。たとえば、quay-tv2pb.apps.cluster-tv2pb.sandbox1194.opentlc.com などです。 - Image Organization フィールドに、ステップ 1 で指定したイメージレジストリーのイメージ設定を入力します。
Image Name フィールドに適切なイメージ名を入力します。小文字、ピリオド、区切り文字のみを使用してください。区切り文字には、ピリオド (.)、最大 2 つのアンダースコア (_)、または 1 つ以上のハイフン (-) が含まれます。たとえば、
my-app_1.2と入力します。注記名前の先頭と末尾が区切り文字にならないようにする必要があります。
Deployment Namespace フィールドに、アプリケーションをデプロイする名前空間またはクラスターの接頭辞を入力します。システムにより、実際の名前空間が
rhtap-app-development、rhtap-app-stage、およびrhtap-app-prodという形で作成されます。注記rhtap-appは、デフォルトのデプロイメント名前空間の接頭辞です。クラスター管理者はこの接頭辞をカスタマイズできます。デフォルトのデプロイメント名前空間の接頭辞をカスタマイズする方法の詳細は、サンプルソフトウェアテンプレートのカスタマイズ を参照してください。- 追加したすべての情報を確認するには、Review を選択します。
Create を選択します。RHTAP が、アプリケーションのインフラストラクチャーとデプロイメントパイプラインの設定に不可欠な一連の自動タスクを開始します。このプロセスの裏で、次のような重要な操作がいくつか実行します。
- リポジトリーの作成と設定: 指定したホスティングサービス (GitLab または GitHub) に、アプリケーションに合わせてカスタマイズされた新しいリポジトリーが自動的に作成されます。これには、デプロイメント設定を保持する GitOps リポジトリーと、アプリケーションコードが存在するソースリポジトリーの両方のセットアップが含まれます。
- Argo CD 統合: リポジトリーがセットアップされると、Argo CD リソースが作成および設定されます。宣言型の GitOps 継続的デリバリーツールである Argo CD が動作し、指定された名前空間全体のアプリケーションのデプロイを調整します。
- 名前空間の作成: デプロイメント環境のセットアップの一環として、アプリケーションの要件に基づいてさまざまな名前空間が自動的に生成されます。このとき、開発、ステージング、および実稼働環境用の個別の名前空間が生成されるため、段階間の分離とセキュリティーが確保されます。
- パイプライン定義: 最後に、パイプライン定義が環境に追加され、'Pipeline as code' モデルが提供されます。これにより、ベストプラクティスとセキュリティー対策に沿って、アプリケーションの構築、テスト、およびデプロイの自動ワークフローが定義されます。
3.3. アプリケーションの確認 リンクのコピーリンクがクリップボードにコピーされました!
RHTAP を使用してアプリケーションを正常に作成したら、そのコンポーネント、ソースコード、GitOps 設定、および関連ドキュメントを簡単に確認できます。包括的な分析を実行する方法は次のとおりです。
アプリケーションへのアクセス:
- アプリケーションを見つけるには、Open Component in catalog を選択します。新しく作成されたアプリケーションがリスト表示される Catalog に移動することもできます。
ソースコードの確認:
- Overview タブに移動し、View Source を選択して、アプリケーションのソースコードが格納されているリポジトリーを開きます。このステップで、アプリケーションの構築とロジックを詳しく把握できます。
デプロイメント履歴の確認:
- Overview タブに移動し、Deployment summary セクションに移動して、namespace 全体にわたるアプリケーションのデプロイメントの概要を確認します。また、適切な Argo CD アプリケーションを選択して Argo CD でデプロイメントの詳細を開くか、Revision 列からコミット ID を選択して GitLab または GitHub での変更を確認します。
GitOps リポジトリーの確認:
- Overview タブで、Kind ドロップダウンを使用して Resource を選択し、関連する GitOps リポジトリーを見つけます。
- GitOps 設定を直接調べるには、View Source を選択します。または、技術ドキュメントを含むより広範な概要情報を確認するために、Catalog セクションから View TechDocs を選択し、Home > Repository セクションの GitOps リポジトリーを選択します。
ドキュメントの確認:
- Overview タブから、View Tech Docs をクリックします。
- これにより、アプリケーションの技術ドキュメントが開き、アプリケーションの機能、設定手順、効果的な活用方法に関する詳細な情報が表示されます。
3.4. (オプション) アプリケーションの登録の解除 リンクのコピーリンクがクリップボードにコピーされました!
このプロセスを実行すると、アプリケーションのソースと GitOps リポジトリーがカタログとリソースビューから削除され、実質的に非表示になります。アプリケーション自体はクラスター内で機能し続けます。登録解除したアプリケーションはいつでも再登録できます。
- Catalog に移動し、登録解除するコンポーネントを選択します。
コンポーネントに関連する縦の省略記号のメニューを選択し、Unregister entity を選択します。確認ダイアログが表示されます。
- Unregister Location 選択します。アプリケーションの Git リポジトリーがカタログビューから削除されます。
- Catalog に移動し、Kind ドロップダウンリストから Resource を選択して、対応する GitOps リソースを登録解除します。
次のコマンドを実行して、クラスターからアプリケーションを削除します。
oc delete application your-app-name-app-of-apps -n rhtap
oc delete application your-app-name-app-of-apps -n rhtap1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
rhtapはデフォルトの名前空間です。また、your-app-nameはアプリケーションの名前です。
第4章 (オプション) Jenkins へのアプリケーションの追加 リンクのコピーリンクがクリップボードにコピーされました!
一般的に使用されているオープンソース自動化サーバーである Jenkins は、ビルド、テスト、およびデプロイメントのプロセスを自動化することで、開発ワークフローを大幅に効率化できます。この章の手順に従って、アプリケーションを Jenkins と統合します。アプリケーションの構築時に別の継続的インテグレーション (CI) プロバイダーを選択した場合は、この章をスキップして、コードを更新とセキュリティーインサイトの表示 の章に進むことができます。
前提条件
- 環境に Jenkins がインストール、設定されている。
- Jenkins ジョブの作成および管理に必要な権限がある。
- RHTAP のインストール後のフェーズで、Jenkins パイプラインの 正しい認証情報を追加 している。
-
Jenkinsfileを確認して Jenkins 設定と一致しているようにする。たとえば、パイプラインを実行できる場所を制限するためにエージェント設定を更新する必要がある場合があります。 -
Jenkins エージェントに必要なバイナリーがインストールされている (
git、curl、jq、yq、buildah、syft、cosign、python3、およびtree)。パイプラインの実行が開始時に失敗する場合は、1 つ以上のバイナリーが欠落していることを示している可能性があります。
手順
- Jenkins インスタンスにログインします。
- Jenkins ダッシュボードから、New Item を選択します。
パイプラインジョブの名前を入力し、パイプライン プロジェクト (例:
secure-jenkins) を選択します。注記パイプラインジョブの名前は、Jenkins CI を追加するアプリケーションの名前と一致する必要があります。名前が一致しない場合、パイプラインは Jenkins 上で実行されますが、RHDH では表示されません。
-
(オプション) 別のパイプライン名を使用する場合は、ソースリポジトリーの
catalog-info.yamlファイルのjenkins.io/job-full-nameフィールドを、選択したパイプライン名に更新します。
-
(オプション) 別のパイプライン名を使用する場合は、ソースリポジトリーの
- OK を選択してジョブを作成します。
- Configure > General ページで Pipeline セクションに移動し、Definition ドロップダウンリストから Pipeline script from SCM を選択します。
- SCM ドロップダウンリストから Git を選択します。
Repository URL フィールドに、Jenkins ソースリポジトリーの URL を入力します。
- Red Hat Developer Hub プラットフォームのカタログから適切なアプリケーションを選択します。
- Overview タブに移動し、View Source を選択して、アプリケーションのソースコードが格納されているリポジトリーを開きます。
-
ビルドするブランチ セクションで、
*/mainと入力します。 - Save を選択します。システムは live-jenkins (ジョブの名前) ページを表示します。
Build Now を選択します。システムはビルドパイプラインを開始します。ビルドが完了するまで待機します。
- Stage View セクションで、Pipeline Overview を選択し、パイプライン実行を視覚化します。
- Pipeline Console を選択して、パイプライン実行の各ステージのライブログを確認します。
検証
アプリケーションを Jenkins と統合した後、Red Hat Developer Hub プラットフォームで Jenkins パイプラインのさまざまな側面を確認できます。以下の手順に従ってください。
カタログから適切なアプリケーションまたはコンポーネントを選択します。
- CI タブに移動して、Jenkins プロジェクトを表示します。適切な Jenkins ジョブについては、Actions 列を使用して、ジョブの表示、再実行、および履歴の表示を行うことができます。システムは、最新の実行のステータスを含むジョブの概要を表示します。
- CD タブに移動し、適切なカードを選択して、コミットメッセージ、作成者名、ArgoCD と GitOps によって管理されるデプロイメント履歴などのデプロイメントの詳細を表示します。
- カタログの Kind ドロップダウンリストから Resource を選択します。システムは Jenkins GitOps ジョブを表示します。適切な GitOps リソースを選択して確認します。
- Topology タブに移動して、開発名前空間内でのアプリケーションのデプロイメントを視覚化します。
第5章 コードを更新とセキュリティーインサイトの表示 リンクのコピーリンクがクリップボードにコピーされました!
RHTAP を使用してコンポーネントを正常に構築したら、次のステップとして、コードを変更し、セキュリティーインサイトを詳しく調べます。
5.1. コード更新の開始 リンクのコピーリンクがクリップボードにコピーされました!
RHTAP では、このプロセスは簡単です。
- Catalog を選択し、セキュリティーインサイトを表示する適切なコンポーネントを選択します。
-
Overview タブで View Source タブを選択して、GitLab または GitHub のプロジェクトを表示します。ここで、View Tech Docs を選択して、プロジェクトのドキュメントを表示することもできます。ドキュメントのソースは、リポジトリー内の
docsディレクトリーです。これらのファイルを更新し、パイプラインが正常に実行されると、技術ドキュメントも更新されます。
5.2. コードの変更 リンクのコピーリンクがクリップボードにコピーされました!
リポジトリーにアクセスすれば、Git リポジトリーを操作するというお馴染みのプロセスをすぐに実行できます。手順は次のとおりです。
- リポジトリーを 複製 し、ローカルまたは開発環境で作業を開始します。
-
技術ドキュメントや
index.htmlを更新したり、新しい機能やバグ修正を追加したりして、アプリケーションを 変更 します。 - 変更を コミット します。
- 変更をリポジトリーに プッシュ します。
- GitLab または GitHub UI を使用して、Web インターフェイス内でコードを直接更新することもできます。
- GitLab ユーザーのみ: コードの更新時にパイプラインの実行を自動的にトリガーするには、GitLab で Webhook とシークレットを設定する必要があります。GitLab で Webhook とシークレットをセットアップする方法の詳細は、自動化されたパイプライントリガー用の GitLab Webhook の設定 を参照してください。
5.3. パイプライン実行の表示 リンクのコピーリンクがクリップボードにコピーされました!
コードを変更した後にパイプライン実行を表示するには、以下を実行します。
- RHDH プラットフォームに戻り、変更がどのように進行したかを確認します。
- Catalog に移動し、変更した特定のコンポーネントを選択します。
- CI タブを開き、パイプライン実行にアクセスします。
パイプライン実行以外にも、RHDH は他のタブを通じて貴重な情報を提供します。
- CD: CD タブを使用して、ArgoCD と GitOps によって管理されるデプロイメントに関する詳細情報を確認します。
- Topology: Topology タブを使用して、開発名前空間内のアプリケーションのデプロイメントを視覚的に表示します。
5.4. セキュリティーインサイトの表示 リンクのコピーリンクがクリップボードにコピーされました!
コードを更新して変更をプッシュすると、システムが自動的に on-push パイプラインをトリガーします。RHTAP は、デフォルトで標準のビルドパイプラインを使用してコンテナーによるデプロイを迅速に実行し、Software Artifacts (SLSA) レベル 3 仕様に準拠してサプライチェーンのセキュリティーを強化します。
図5.1 正常なパイプライン実行
この図は、各パイプラインタスクの概要を示しています。緑色 のステータスは、正常に完了したことを示しています。細かく監視する必要をなくし、ワークフローを効率化します。
初期ビルドパイプラインのタスクは、次のもので構成されます。
-
init: パイプラインを初期化し、再構築フラグと認証を設定して、PipelineRun のイメージリポジトリーシークレットを生成します。 -
clone-repository: 指定されたリポジトリーをワークスペースに複製し、git-clone タスクで実行できるように準備します。 build-container: このタスクは Buildah を使用してソースコードをコンテナーイメージに変換し、指定されたレジストリーにプッシュします。このタスクの主なアクションと結果は次のとおりです。- コンテナーイメージの作成とデプロイメント: Buildah がソースコードをコンテナーイメージにコンパイルします。作成が成功すると、イメージが指定されたイメージレジストリーにプッシュされます。
- Software Bill of Materials (SBOM) の生成: 透明性とコンプライアンスを確保する一環として、コンテナーイメージに含まれるコンポーネント、ライブラリー、依存関係の詳細を示す SBOM が生成されます。この SBOM は最終的なコンテナーイメージ内に埋め込まれ、簡単にアクセスして検証できるようになります。
- SBOM の公開: このタスクでは、SBOM をコンテナーイメージに組み込むだけでなく、Cosign を使用して SBOM を独立したイメージとしてプッシュします。これにより、セキュリティーチームとコンプライアンスチームによる SBOM の管理と検証が容易になります。
-
アーティファクトの作成: このタスクでは、イメージ署名 (
.sig) やアテステーション (.att) などの重要なセキュリティーアーティファクトを生成します。これらのアーティファクトは、コンテナーイメージとそのコンテンツの整合性と信頼性を検証するために不可欠であり、デプロイメントパイプライン内で信頼性とセキュリティーを検証するための堅牢なメカニズムを提供します。
-
update-deployment: 新しくビルドされたイメージを使用してデプロイメント環境を更新します。この更新は、Overlay>Developmentディレクトリーの GitOps リポジトリーで実行されます。 -
acsタスク: コードとデプロイメント設定のセキュリティー評価を実施し、確立されたセキュリティーポリシーとベストプラクティスに準拠していることを確認します。 -
show-sbom: アプリケーションで使用されるすべてのソフトウェアコンポーネントとライブラリーの包括的なリストを作成し、透明性を向上させ、脆弱性管理をサポートします。 -
summary: PipelineRun の概要を提供し、PipelineRun の情報を追加して、PipelineRun によって使用されるイメージリポジトリーシークレットを削除します。
パイプライン実行内のタスクをクリックすると、タスクが正常に完了したときに生成されたログやその他の詳細にアクセスできます。正常に完了したタスクは、緑色 のチェックで示されます。
5.4.1. Red Hat Advanced Cluster Security のタスク リンクのコピーリンクがクリップボードにコピーされました!
RHTAP は、パイプライン内で Red Hat Advanced Cluster Security (RHACS) とそのセキュリティーチェックを活用します。RHACS がインストールおよび設定されている場合、パイプラインは RHACS タスク (roxctl image scan など) を実行します。完了すると緑色のチェックが表示されます。ただし、RHACS がインストールまたは設定されていない場合、パイプラインは RHACS タスクをスキップします。
- パイプライン内の RHACS タスクは、RHTAP のインストールプロセス中に RHACS をインストールおよび設定した場合にのみ、正常に実行します。RHACS のインストールの詳細な手順については、Red Hat Advanced Cluster Security for Kubernetes のインストール を参照してください。
- RHTAP のインストールプロセス中に RHACS をインストールおよび設定しなかった場合は、ACS の設定 を参照してください。
図5.2 パイプライン実行内の RHACS タスク
パイプラインには、roxctl を使用して包括的なセキュリティーチェックを実行する次の 3 つの RHACS タスクが組み込まれています。
-
roxctl image scan- イメージ内で検出されたコンポーネントと脆弱性を JSON 形式で返します。 -
roxctl image check- イメージに含まれるセキュリティーポリシーのビルド時の違反をチェックします。たとえば、'log4j の禁止' や、curl、wget、パッケージマネージャーが実稼働環境のイメージに含まれていないかどうかをチェックします。 -
roxctl deployment check- YAML デプロイメントファイルに含まれるセキュリティーポリシーのビルド時およびデプロイ時の違反をチェックします。
これらのタスクにより、開発段階からセキュリティーポリシーと設定を確実に遵守できます。
RHACS レポートの視覚化
Red Hat Developer Hub の CI タブの Pipeline Runs セクションには、構造化されたポップアップインターフェイスから詳細なタスクレポートにアクセスして解釈できる機能があります。ポップアップは次のセクションで構成されています。
- Red Hat Advanced Cluster Security (RHACS タスクが利用可能かどうかに応じて条件付きで表示されます): このセクションには、イメージスキャン、イメージチェック、デプロイメントチェックなど、すべての RHACS タスク用の個別のタブが表示され、セキュリティー問題の最初の概要が表示されます。
-
Others: このセクションには、
PipelineRunの結果 (IMAGE_URL、IMAGE_DIGESTなど) が表示されます。このセクションは、ポップアップに複数のセクション (たとえば、Enterprise Contract または {RHRHACSLongName}) がある場合にのみ表示されます。
RHACS レポートを表示するには、以下を実行します。
- Catalog を選択し、RHACS レポートを確認する適切なコンポーネントを開きます。
CI タブ > Actions 列 > View output アイコンを選択し、ソフトウェアコンポーネントの詳細な RHACS レポートを確認します。
図5.3 詳細な RHACS レポート
適切な権限を持っている場合は、RHACS コンソールに移動して、脆弱性やポリシーを管理し、特定のイメージの詳細な脆弱性レポートを確認できます。詳細は、ダッシュボードの表示 を参照してください。
RHACS レポートの解釈
Red Hat Advanced Cluster Security (RHACS) タスクによって生成される詳細なレポートは、堅牢なセキュリティー体制を維持する上で重要なセキュリティーインサイトを提供するのに役立ちます。
roxctl image scan (イメージスキャン) レポートを解釈する方法の例を以下に示します。roxctl image check (イメージチェック) および roxctl deployment check (デプロイメントチェック) からのレポートを解釈する場合にも、同様のアプローチを適用できます。
- 脆弱性の内訳: RHACS は、検出された脆弱性を重大度別 (重大、重要、中程度、低)、ステータス別 (修正可能、修正不可能) に分類し、スキャン結果の概要を提供します。この分類には、分析された脆弱性とコンポーネントの総数と、Common Vulnerabilities and Exposures (CVE) が含まれます。
表示される詳細情報: レポートには、特定された脆弱性ごとに次の内容が含まれています。
- CVE ID: 脆弱性の一意の識別子。
- 重大度: 脆弱性によってもたらされる脅威のレベル。
- コンポーネント: 脆弱性の影響を受けるソフトウェアコンポーネント。
- コンポーネントバージョン: 影響を受けるコンポーネントのバージョン。
- 修復の提案: 脆弱性に対処するための推奨事項。該当する場合は、脆弱性が修正されたバージョンが含まれています。
5.4.2. SBOM について リンクのコピーリンクがクリップボードにコピーされました!
show-sbom タスクは、コンポーネントが使用するすべてのソフトウェアライブラリーをリスト表示します。これにより、ソフトウェアサプライチェーンの透明性に貢献し、脆弱性の特定とセキュリティーへの影響の評価を容易にします。
図5.4 パイプライン実行内の show-sbom タスク
SBOM の表示
手順
- Catalog を選択し、SBOM を表示する適切なコンポーネントを開きます。
CI タブを選択し、リンクアイコンを選択します。SBOM タスクのログが表示されます。Web ブラウザーを使用して、ソフトウェアサプライチェーンの脆弱性を示す用語を SBOM ですぐに検索できます。たとえば、
log4jを検索してみてください。図5.5 SBOM の詳細
CLI での SBOM のダウンロード
前提条件
- Cosign CLI ツールがインストールされている。
-
build-containerおよびshow-sbomタスクが正常に実行されている。
手順
-
正常に実行された適切なパイプライン実行を展開し、
show-summaryタスクを選択します。 SBOM イメージの URL を見つけてコピーし、ターミナルで次のコマンドを実行します。
cosign コマンドの例
cosign download sbom <the-sbom-url-you-copied>
$ cosign download sbom <the-sbom-url-you-copied>Copy to Clipboard Copied! Toggle word wrap Toggle overflow (オプション) 完全な SBOM を検索可能な形式で表示するには、次のコマンドを実行して出力をリダイレクトします。
cosign コマンドの例
cosign download sbom <the-sbom-url-you-copied> > sbom.txt
$ cosign download sbom <the-sbom-url-you-copied> > sbom.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow
SBOM の確認
SBOM では、次の抜粋例に示すように、プロジェクトが使用する各ライブラリーの 4 つの特性を確認できます。
- 作成者または公開者
- 名前
- バージョン
- ライセンス
この情報は、個々のライブラリーが安全なソースからのものであり、更新済みで、コンプライアンスに準拠したものであることを確認するのに役立ちます。
SBOM の例
第6章 アプリケーションのデプロイとセキュリティーインサイトの表示 リンクのコピーリンクがクリップボードにコピーされました!
組織は、通常、開発、実稼働前、および実稼働の各段階を含む構造化されたアプローチを使用してアプリケーションをデプロイします。このプロセスは、多くの場合、自動化され、定義されたルールとトリガーによって管理されます。
このガイドでは、OpenShift GitOps で ArgoCD を介してアプリケーションをデプロイし、すべての段階で継続的デプロイメントを実現する方法を説明します。ArgoCD は、GitOps ベースのデプロイ戦略を促進し、Git リポジトリーを、インフラストラクチャー設定の信頼できる唯一の情報源として扱います。このリポジトリーを更新すると、環境全体のデプロイがトリガーされます。
このガイドでは、デプロイ方法の例を示します。組織のワークフローに適した方法を採用してください。
6.1. ビルドを実稼働前の環境または実稼働環境にプロモートする リンクのコピーリンクがクリップボードにコピーされました!
ある環境から別の環境 (開発環境からステージ環境または実稼働環境など) にビルドをプロモートするには、プルリクエスト (PR) を通じて GitOps リポジトリーを更新する必要があります。
- RHDH プラットフォームで、Catalog を選択します。
- Kind ドロップダウンリストから Resource を選択し、適切な GitOps リポジトリーを選択します。
- Overview タブで、View Source を選択します。
(オプション) または、Catalog を選択し、Overview タブで View TechDocs を選択します。
- Home > Repository セクションで、GitOps リポジトリーを選択します。
GitOps リポジトリーを複製し、
component/<app-name>ディレクトリーに移動します。注記ローカルの複製が最新であることを確認してください。
- 新しいブランチをチェックアウトします。
-
リポジトリー内で、
component/<app-name>/overlaysディレクトリーを見つけます。ここには、各環境に対応するdevelopment、stage、およびprodサブディレクトリーがあります。 アプリケーションを、開発環境からステージ環境または実稼働環境に手動で移動します。
Expand アプリケーションの移動先 実行する手順 開発環境からステージ環境
-
developmentディレクトリーを展開し、deployment-patch.yamlを選択します。 - コンテナーイメージの URL をコピーします。たとえば、quay.io/<username>/<app-name>/imageurl です。
-
stageディレクトリーに移動し、deployment-patch.yamlを選択して、既存のコンテナーイメージ URL を、コピーした URL に置き換えます。
注記コンテナーイメージに加えて、その他の設定変更 (レプリカなど) を開発環境からステージ環境にプロモートする場合は、
developmentディレクトリーにあるdeployment-patch.yamlファイルから変更内容をコピーし、stageディレクトリーのdeployment-patch.yamlファイルに貼り付けてください。ステージ環境から実稼働環境
-
stageディレクトリーを展開し、deployment-patch.yamlを選択します。 - コンテナーイメージの URL をコピーします。たとえば、quay.io/<username>/<app-name>/imageurl です。
-
prodディレクトリーに移動し、deployment-patch.yamlを選択して、既存のコンテナーイメージ URL を、コピーした URL に置き換えます。
注記コンテナーイメージに加えて、その他の設定変更 (レプリカなど) をステージ環境から実稼働環境にプロモートする場合は、
stageディレクトリーにあるdeployment-patch.yamlファイルから変更内容をコピーし、prodディレクトリーのdeployment-patch.yamlファイルに貼り付けてください。-
- 更新をコミットしてプッシュします。
プルリクエスト (PR) を作成します。この操作により、プロモーションパイプライン実行が開始し、更新されたコンテナーイメージが Red Hat Enterprise Contract (Enterprise Contract) のポリシーに照らして検証されます。パイプライン実行はすべてのタスクを視覚的に表します。緑色 のステータスは正常に完了したことを示します。
- RHDH 内の CI タブでプロモーションパイプラインを確認します。
PR を確認してマージします。PR をマージすると、ArgoCD がトリガーされ、ビルドを次の環境にプロモートするために必要な変更が自動的に適用されます。
- RHDH 内の CD タブで最新のデプロイメント更新を確認します。アプリケーションの現在のステータス、デプロイメントの詳細、パイプライン実行の作成者、コミットメッセージ (ステージ環境から実稼働環境へのプロモートなど)、実稼働環境に進んだコンテナーイメージに関する更新が表示されます。
検証
- アプリケーションのプロモートが成功したかどうかを評価するには、Topology タブに移動します。ここで、指定した名前空間全体のアプリケーションの配布状況を確認できます。
6.2. セキュリティーインサイトの表示 リンクのコピーリンクがクリップボードにコピーされました!
プロモーションパイプライン実行は、パイプライン内のすべてのタスクを視覚的に表します。緑色 のステータスは、正常に完了したことを示しています。細かく監視する必要をなくし、ワークフローを効率化します。
プロモーションパイプラインのタスクは、次のもので構成されます。
-
clone-repository: 指定されたリポジトリーをワークスペースに複製し、git-clone タスクで実行できるように準備します。 -
gather-deploy-images: PR の変更に基づいて、スキャンするコンテナーイメージを検出します。 -
verify-enterprise-contract: 変更されたコンテナーイメージを検証します。このタスクにより、企業の標準ビルドシステムまたは承認済みのビルドシステムから生成されたイメージであることが確認されます。このタスクでは、Enterprise Contract (EC) ポリシーと Sigstore の cosign ツールを活用し、イメージ署名とアテステーションの整合性を評価します。
パイプライン実行内のタスクをクリックすると、そのタスクに関連するログやその他の詳細にアクセスできます。
6.2.1. Enterprise Contract タスク リンクのコピーリンクがクリップボードにコピーされました!
Enterprise Contract は、ソフトウェアサプライチェーンのセキュリティーを維持するために設計されたツール群です。コンテナーイメージのビルドおよびテスト方法に関するポリシーを定義および適用できます。
Enterprise Contract は、Red Hat Trusted Application Pipeline によって生成されたコンテナーイメージを実稼働環境にリリースする前に、イメージが明確に定義された要件を満たしていることを確認します。イメージが該当する基準を満たしていない場合、EC は対処する必要がある具体的な問題を概説したレポートを生成します。
Red Hat Trusted Application Pipeline のビルドプロセスでは、Tekton Chains を使用して、ビルドパイプラインの署名済みの in-toto アテステーションを作成します。次に、EC がこの署名済みのアテステーションを活用して、ビルドの整合性を暗号的に検証し、一連のポリシーに照らして評価します。これらのポリシーにより、規定されたベストプラクティスと組織固有のセキュリティーガイドラインにビルドプロセスが準拠していることが確認されます。
コンプライアンスレポートの解釈
Enterprise Contract (EC) スキャンによって生成される詳細なレポートは、堅牢なセキュリティー体制を維持する上で重要なセキュリティーインサイトを提供するのに役立ちます。このレポートを解釈する方法を以下に示します。
- ポリシーコンプライアンスの概要: EC スキャンは、Supply Chain Levels for Software Artifacts (SLSA) セキュリティーフレームワークへのアプリケーションのコンプライアンスを評価します。レポートには、実行されたチェック、各チェックのステータス (成功、警告、失敗) がリスト表示され、観察された警告または失敗に関するメッセージが表示されます。
表示される詳細情報: ポリシーレポートの詳細:
- 成功したチェック: 満たされたポリシールールの数と詳細。
- 警告と失敗: 警告または失敗の原因となったポリシールールと、理由を説明するメッセージ。
- ルールへの準拠: ソースコードの参照やアテステーションチェックなど、アプリケーションが個々のポリシールールにどの程度準拠しているかの詳細。
図6.1 EC レポート
コンプライアンスレポートの詳細情報の活用
EC スキャンレポートから得られる詳細情報は、セキュリティーおよびコンプライアンスの取り組みの優先順位を付ける上で重要です。
- ポリシーへの準拠の確認: SLSA およびその他の関連する標準への準拠を綿密に確認して、アプリケーションのインテグリティーを確保します。EC スキャンの推奨事項に従って、コンプライアンスのギャップに対処します。
- レポート確認の効率化: レポート内に用意されているフィルターを使用して重要な領域に焦点を当てることで、確認プロセスの効率化を促進し、重要な問題やコンプライアンスのギャップを迅速に特定できます。
改訂日時: 2024-09-11