パイプラインの各段階を理解する

以下のリストでは、プル・リクエスト (PR)、継続的統合 (CI)、継続的デプロイメント (CD)、および継続的コンプライアンス (CC) パイプラインの各ステージについて説明します。

Pull Request (PR) パイプラインのステージ

PR パイプラインは、選択されたアプリケーション・リポジトリーのプル要求に対して準拠性検査を実行し、メイン・ブランチにマージするための安全機能として機能します。 PR パイプラインは、選択したブランチに対するプル要求をオープンまたは更新することによってトリガーされます。

詳しくは、 プル要求(PR)パイプライン の資料を参照してください。

プルリクエスト(PR)パイプラインの段階
PR パイプライン・ステージ 説明
code-pr-start プル要求に関連付けられている GitHub リポジトリーを複製します。
code-setup 残りのパイプライン・ステージを準備するためのビルドおよびテスト環境のセットアップ
code-detect-secrets アプリケーション・コードでシークレット検出スキャンを実行します
code-unit-tests PR に関連付けられているコードの単体テストを実行します。
code-compliance-checks Code Risk Analyzer (CRA) または Mend Unified Agent は、オープン・ソースの依存関係に対する脆弱性検出、およびアプリケーション・リポジトリーに対するその他のコンプライアンス検査をスキャンします。
code-pr-finish パイプライン状況を統合します。 以前にパイプラインで実行された準拠性検査のいずれかが失敗した場合、このステージは失敗します。 これは、PR をマージしたりビルドをデプロイしたりする前に、コンプライアンスの問題が確実に修正されるようにするための「フェイルセーフ」動作です。

継続的統合 (CI) パイプライン・ステージ

CI パイプラインは、アプリケーション・リポジトリーからデプロイ可能な成果物をビルドします。 ビルドされた成果物をスキャン、テスト、および署名すると同時に、インベントリー内にリリースされ、デプロイメントおよび変更管理によって追跡される各ステージに関する証拠を収集します。

詳しくは、 継続的統合(CI)パイプライン の資料を参照してください。

継続的インテグレーション(CI)パイプライン
CI パイプライン・ステージ 説明
code-pr-start パイプライン環境のセットアップ (パイプライン・ローカル・ファイル・システムへの構成リポジトリーおよびアプリケーション・リポジトリーの複製を含む)
code-setup 残りのパイプライン・ステージを準備するためのビルドおよびテスト環境のセットアップ
code-unit-tests アプリケーションコードの単体テストとアプリケーションテストの実行
code-peer-review コード変更がマージされて実動にプロモートされる前に、それらのコード変更の 「ピア・レビュー」 を強制します。
code-static-scan アプリケーション・コードに対して静的スキャンを実行します (デフォルトは SonarQube ですが、他のツールを使用できます)。
code-compliance-checks コード・リスク・アナライザー(CRA) スキャンを実行し、オープンソースの依存関係の脆弱性を検出する
build-artifact ソース・コード・リポジトリーからの成果物およびイメージのビルド
build-sign-artifact ビルドされた成果物およびイメージに署名します
build-scan-artifact Vulnerability Advisor を使用したコンテナー・イメージのスキャン
deploy-dev ビルドした成果物を開発環境にデプロイする
code-dynamic-scan 開発環境にデプロイされたアプリケーションで OWASP-Zap API および UI 動的スキャン を実行します。
deploy-acceptance-tests 開発環境にデプロイされたビルド成果物に対して、受け入れテストと統合テストを実行する
deploy-release ビルドされた成果物を、 Continuous Delivery (CD) パイプラインで使用されるインベントリーに追加します。
code-ci-finish ログ・ファイル、成果物、エビデンスを収集、作成し、エビデンス・ロッカーにアップロードします。 以前にパイプラインで実行された準拠性検査のいずれかが失敗した場合、このステージは失敗します。 これは、PR をマージしたりビルドをデプロイしたりする前に、コンプライアンスの問題が確実に修正されるようにするための「フェイルセーフ」動作です。

継続的デプロイメント (CD) パイプライン・ステージ

CD パイプラインは、証拠のすべての内容と変更要求の要約をコンパイルします。 これは、ビルドをステージングや実稼働などの環境にデプロイし、すべてのエビデンスをエビデンス・ロッカーにアップロードします。

詳しくは、 継続的デプロイメント(CD)パイプライン の資料を参照してください。

継続的デプロイメント(CD)パイプライン
CD パイプライン・ステージ 説明
prod-start deployment delta (CD デプロイメントによって更新されるサービス) を計算します。
prod-setup 残りの CD パイプライン・ステージを準備するためのターゲット環境のセットアップ
prod-verify-artifact CI パイプラインで作成されたイメージおよび成果物の 署名を検証 します。
prod-change-request このデプロイメントに関連付けられている 変更依頼 の作成、承認、および実装状態への切り替え
prod-deployment インベントリー・デルタをターゲット環境にデプロイします。
prod-acceptance-tests ターゲット環境にデプロイされたビルド成果物に対して、受け入れテストと統合テストを実行する
prod-finish すべてのエビデンスをエビデンス・ロッカーに収集し、変更要求をクローズします。

継続的コンプライアンス (CC) パイプラインのステージ

CC パイプラインは、デプロイされた成果物とそのソース・リポジトリーに対して定期的なスキャンを実行します。 インベントリー内の最新のデプロイ済み状態をスキャンし、インシデント・リポジトリー内でインシデントの問題を作成、更新、または自動クローズします。

詳しくは、 継続的コンプライアンス(CC)パイプライン の資料を参照してください。

継続的コンプライアンス(CC)パイプラインのステージ
CC パイプライン・ステージ 説明
cc-start リポジトリーを複製し、タグに基づいてインベントリーを処理し、リポジトリーと成果物を登録します
cc-setup 後の段階でスキャン用に CC パイプライン環境をセットアップします。 これには、ビルド依存関係のインストールや Maven ビルドの実行が含まれる場合があります。
cc-detect-secrets アプリケーション・コードでシークレット検出スキャンを実行します
cc-static-scan アプリケーション・コードに対して静的スキャンを実行します (デフォルトは SonarQube ですが、他のツールを使用できます)。
cc-dynamic-scan ターゲット環境にデプロイされたアプリケーションに対して OWASP-Zap API および UI 動的スキャン を実行します。
cc-compliance-checks コード・リスク・アナライザー(CRA) スキャンを実行し、オープンソースの依存関係の脆弱性を検出する
cc-scan-artifact Vulnerability Advisor を使用したコンテナー・イメージのスキャン
cc-finish ログ・ファイル、成果物、エビデンスを収集、作成し、エビデンス・ロッカーにアップロードします。 以前に CC パイプラインで実行された準拠性検査のいずれかが失敗した場合、このステージは失敗します。

パイプラインの準拠性検査

以下のスキャンおよび検査は、PR、CI、および CC パイプライン内の code-compliance-check タスク中に実行されます。

パイプラインのコンプライアンス・チェック
ツール スキャンまたは検査
シークレットの検出 表示される秘密の識別
コード・リスク・アナライザー (CRA) パッケージ依存関係、コンテナー基本イメージ、および OS パッケージの脆弱性を検出します
コード・リスク・アナライザー CIS Kubernetes デプロイメント・マニフェストの構成を確認します。
コード・リスク・アナライザー 部品表(BOM) パッケージおよびイメージに含まれるすべての依存関係をリストします
Mend 一元化エージェント (UA) オープン・ソース・コンポーネントの脆弱性をスキャンします
リポジトリー・コンプライアンス ブランチ保護ルールの設定を検査します

ステージの説明

  • setup: パイプライン実行コンテキストの外部で実行されるセットアップ・タスクを完了するためのスクリプトを実行します。 これらのタスクは、パイプライン実行全体で保持されます。 例えば、外部環境のセットアップ、ブランチ保護ルールのセットアップ、ヘルス・チェックの実行、環境の検査、外部サービスの初期化などです。
  • test: 単体テストを実行します。これには、コードベースに対して実行されるすべてのテストとデプロイ前の時間が含まれます。
  • static-scan: 静的コード・アナライザー・ツールを実行します。
  • peer-review: スクリプトを実行して、プル要求がレビューされているかどうか、および必要な最小数の承認があるかどうかを確認します。
  • dynamic-scan: アプリケーションで動的スキャンを実行します。
  • containerize: Docker イメージ、RPM、Java アーカイブ(JARS)ファイルなど、アプリに必要な成果物を作成します。
  • scan-artifact: Docker イメージのための Container Registry 脆弱性アドバイザーなどを使用して、成果物をスキャンします。
  • sign-artifact: 成果物に署名します。
  • release: 成果物をデプロイ可能とマークしてインベントリーに追加します。
  • deploy: test と dev、または staging と prod などの環境に成果物をデプロイします。
  • acceptance-test: デプロイされた成果物に対してテストを実行します。 また、デプロイメント後のテストもこのステージで行うことができます。
  • verify-artifact: スクリプトを実行して、CI パイプラインで署名された成果物に有効なシグニチャーがあるかどうかを確認します。
  • finish: このステージはカスタマイズ可能なステージであり、パイプラインの状況に関係なく常に実行されます。