パイプラインの各段階を理解する
以下のリストでは、プル・リクエスト (PR)、継続的統合 (CI)、継続的デプロイメント (CD)、および継続的コンプライアンス (CC) パイプラインの各ステージについて説明します。
Pull Request (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 パイプライン・ステージ | 説明 |
|---|---|
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 パイプライン・ステージ | 説明 |
|---|---|
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-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: このステージはカスタマイズ可能なステージであり、パイプラインの状況に関係なく常に実行されます。