DevSecOpsにおけるコモンズスクリプトの理解
DevSecOps,では、config YAMLファイルで指定されていない場合、デフォルトのスクリプトを実行するステージがある。 これらのデフォルトスクリプトは、コモンズスクリプトライブラリの一部であり、パイプライン設定のカスタマイズの出発点として使用できる再利用可能なスクリプトのセットを提供します。
コモンズ・スクリプト・ライブラリー
- commonsスクリプト・ライブラリは、DevSecOpsパイプラインで使用できる再利用可能なスクリプトのコレクションである。
- このコモンズ・スクリプト・ライブラリにあるスクリプトと関数は、特定のパイプライン要件を満たすために、パイプライン設定をカスタマイズするために使用できます。
コモンズ・スクリプト・ライブラリーとその使い方については、「コモンズ・スクリプト・ライブラリのドキュメント」を参照されたい。
デフォルトスクリプトの表示
ステージで実行されているデフォルトのスクリプトを表示するには、そのステージのログを調べます。 例えば、『 scan-artifact 段階:
=== Executing custom script for stage 'scan-artifact' ===
The custom script can be viewed using the following link: '<SCRIPT URL>'
You can customize this stage in your pipeline config. For more information, see [Custom scripts](/docs/devsecops?topic=devsecops-cd-devsecops-pipelines-custom-customize).
The script(s) used in this stage can be found at the following location(s):
- path: scan-artifact
repo: <REPO URL>
sha: b0fff29d715e0f9a33b3c84e649777cfb9d40738
- path: icr-va
repo: <REPO URL>
sha: de693814ba2bd992941b432fc71111efb54e2b27
Using the following defaults for stage "scan-artifact":
scan-artifact:
image: icr.io/continuous-delivery/pipeline/pipeline-base-image:2.12@sha256:ff4053b0bca784d6d105fee1d008cfb20db206011453071e86b69ca3fde706a4
dind: false
abort_on_failure: false
image_pull_policy: IfNotPresent
script: |
#!/bin/sh
"/opt/commons/scan-artifact/scan.sh"
このメッセージには3つのパートがある:
-
最初の行は、現在実行中の正確なスクリプト URL をコミットレベルで示しています。
-
2番目の部分は、ビルド中にパイプラインのベースイメージにインポートされるパス、レポ、コミットハッシュのリストです。 実行時にこれらのレポからプルされることはない。 この情報によって、パイプラインに何が含まれているのかのトレーサビリティが向上する。
-
3番目の部分はデフォルトのコンフィギュレーションで、config YAMLとして使われます。 このYAMLスニペットをDevSecOpsの設定YAMLファイルに含めることができる。 このアクションはデフォルトのコンフィグをあなたのコンフィグで上書きしますが、ベースイメージのデフォルトスクリプトはそのまま使用します。 この方法は、デフォルトのチェックの前に他のチェックを行いたい場合に役立つ。
この情報は、採用者がデフォルトでステージで実行されている コモンズ・スクリプト・ライブラリ からのスクリプトと関数を識別しやすくするために表示される。 最終的には、スクリプトを検査し、その内容を理解し、スクリプトを自分のスクリプトコレクションにコピーし、使用ケースに合わせてスクリプトを更新することができる。
コモンズスクリプトライブラリを使ったカスタマイズ
コモンズ・ライブラリは、コードをコピーして特定のエッジケース用にカスタマイズするソースとしても使える。 ライブラリを出発点として、さまざまな要件に応じたカスタムスクリプトを作成してください。
パイプラインのカスタマイズについては、こちら をご参照ください
ベスト・プラクティス
- パイプラインの仕組みについては、コモンズ・ライブラリを参考にしてください。
- 特定のエッジケースに対応するようにデフォルトのスクリプトをカスタマイズする。
- カスタムスクリプトで証拠を収集するには、「
collect-evidenceスクリプトを使用する。