証拠の検証
DevSecOps アーキテクチャでは、CIパイプラインで収集されたエビデンスは、アセットがコンプライアンス要件を満たしていることを保証するために、デプロイ前に検証されなければならない。 この検証プロセスは、品質ゲートとして機能し、非準拠の資産がステージや本番環境に配備されるのを防ぐ。
エビデンスの収集は、 DevSecOps 参照アーキテクチャの不可欠な側面である:
- CIパイプラインは、資産に対して実行されたすべてのスキャンまたはステップのエビデンスを収集する
- CDパイプラインは、CIパイプラインによって生成されたアセットをデプロイする
- CCパイプラインは、CDパイプラインによって展開された資産をスキャンする
エビデンスの検証は、2つの動作モードをサポートしている:
- デフォルト・ゲーティング・モードの使用
- 構成ファイルの使用
デフォルト・ゲーティング・モード
デフォルトでは、エビデンスが以下のいずれかの状態にある場合、デプロイはブロックされる:
- 保留- 証拠収集中
- 失敗- 証拠収集に失敗した、またはコンプライアンス検査に合格しなかった
このモードは、配備を進める前に、収集されたすべての証拠が成功状態にあることを確実にするために、厳格なゲーティングを提供する。
設定ファイルモード
設定ファイル・モードは、専用の設定ファイルを通じて、証拠検証のための柔軟でカスタマイズ可能なフレームワークを提供します。 このモードでは、以下の操作が可能です:
- 環境(開発、ステージ、プロッド)ごとに特定のエビデンス要件を定義する
- エビデンス宣言レベルを設定し、配備の動作を制御する:
recommendedrequiredrequired_if_present
- アセットタイプ(イメージ、コミット、成果物など)ごとに異なる検証ルールを設定する
- 昇格時に複数の環境からのエビデンスがどのように評価されるかをコントロールする
これで、設定ファイルモードでも OPA(Open Policy Agent)ポリシーを用いた評価がサポートされるようになりました。 詳細については、「 OPA を使用したデプロイメント・ゲーティング 」を参照してください。
エビデンス宣言レベルの理解
1.推奨モード:
コンプライアンス・チェックが「推奨」とマークされている場合、それはブロッカーではなく、警告の役割を果たす。 これは、次のことを意味します:
- チェックに失敗してもパイプラインの実行は継続される
- パイプラインはコンプライアンス状況を可視化するが、自動的な失敗を強制することはない
- フラグが付けられたすべての問題を調査し、解決する責任があります
- すべてのコンプライアンス・チェックの不合格または欠落は、CIプロセス中に対処し、修正されなければならない
このアプローチでは、 責任共有モデルを重視している。パイプラインはコンプライアンスの可視化と推奨を提供するが、チームはCIプロセスで必要なエビデンスが生成されることを積極的に確認し、本番導入前にギャップに対処しなければならない。
2.必須モード:
証拠は success。 証拠がない、保留中、または失敗した場合、配備はブロックされる。
3.モードがある場合は必須:
証拠が存在する場合は、 success。 このモードだ:
- エビデンスステータスが
failure - 証拠が
success、pending、またはmissing - 実行時にパスしなければならないオプションのスキャンに便利です
エビデンスの集約
エビデンスの集約とは、複数のサービス環境(開発、ステージ、プロダクション)にまたがるコンプライアンスエビデンスを収集、評価し、アプリケーションレベルのコンプライアンスを総合的に判断するプロセスである。 CI/CDパイプラインの実行中、さまざまなコンプライアンスツールが、さまざまなアセットタイプ(イメージ、コミット、成果物)のエビデンスを収集する。 証拠はサービス環境ごとに別々に追跡され、システムは設定ファイルで定義されたルールに基づいて結果を集計します。 全体的な遵守状況は、収集されたすべての証拠を設定された要件に照らして評価することによって決定される。
主なメリットは次のとおりです。
- 環境固有のバリデーション :異なる環境は、異なるエビデンス要件を持ちうる(例えば、ステージはプロッドよりも少ないチェックを必要とするかもしれない)
- 柔軟な構成 :環境ごとに、どのエビデンスタイプが必須、推奨、条件付きで必要かをカスタマイズできる
- プロモーション・ゲーティング :以前の環境で必要な証拠がない、または失敗した場合、本番環境へのデプロイメントをブロックします
- 監査証跡 :コンプライアンスレポートのために、すべての環境で完全な証拠履歴を維持します
次の図は、エビデンスがどのように環境を通じて流れ、どのように集約されるかが配備の即応性を決定することを示している:
設定ファイル セクション
配備前のチェック
- CIパイプラインによって生成されたエビデンスを検証する
- これらのチェックに基づくゲート展開
- すべてのチェックに合格した場合、変更要求を自動承認する
- チェックに失敗した場合、デプロイメントをブロックする(
emergencyの変更要求を除く) - 変更要求の一部としてコンフィグファイルを追加する
配備後のチェック:
- CDパイプラインで作成されたエビデンスを検証する
- これらのチェックに基づいてパイプラインを評価する
設定ファイルのルール構造
設定ファイルは、以下のJSON構造を使って検証ルールを定義する。 各エビデンスタイプは、アセットタイプと環境に基づく複数のルールを持つことができる:
構造:
- 証拠タイプID- 例
com.ibm.static-scan- ルール
- 資産タイプ- 例:
imagecommit、artifact - source_environments- 証拠の出所
- name- 環境名(例:
ci-pipeline、stage、prod) - 地域- 地理的地域(任意)
- name- 環境名(例:
- target_environments- エビデンスが検証される場所
- name- 環境名(例:
stage、prod) - 地域- 地理的地域(任意)
- name- 環境名(例:
- required- エビデンスが
successの状態で存在すること。不足、保留、失敗した場合はデプロイをブロックする- ツール- 証拠収集のためのツールタイプ(例:
SonarQube、owasp-zap、*)
- ツール- 証拠収集のためのツールタイプ(例:
- required_if_present- エビデンスが存在する場合、
successの状態でなければならない。failureの状態でのみ失敗する。success、pending、またはmissing- ツール- 証拠収集のためのツールタイプ(例:
SonarQube、owasp-zap、*)
- ツール- 証拠収集のためのツールタイプ(例:
- 推奨- エビデンスが見つからない/保留中/失敗した場合、パイプラインは警告をログに記録する
- ツール- 証拠収集のためのツールタイプ(例:
SonarQube、owasp-zap、*)
- ツール- 証拠収集のためのツールタイプ(例:
CIパイプラインで収集された証拠は、設定ファイルでそのオリジンフィールドを ci-pipeline。
エビデンス宣言レベル(required、required_if_present、recommended)の詳細説明については、 設定ファイルモードの セクションを参照のこと。
設定ファイルによる証拠検証
ツールチェインにコンフィギュレーション・ファイル・モードを実装するには、以下の設定ステップに従ってください:
ステップ1:エビデンスの検証を有効にする
CDおよびCCパイプライン環境のプロパティで以下の変数を設定し、デプロイメント・パイプラインでエビデンス検証機能を有効にします:
opt-in-evidence-checks=1
ステップ2:検証ファイルパスの設定
pipeline-config-repo に設定ファイルへのパスを設定する:
evidence-checks-config-path=validation.json
evidence-checks-config-path が定義されていない場合、システムは自動的に <region>.<target>.validation.json、 <target>.validation.json、または validation.json という名前のファイルを pipeline-config-repo の中から探す。
ステップ 3: 設定の確認
パイプラインが実行されたら、以下の手順に従って、設定ファイルに基づくエビデンス検証が有効になっていることを確認する:
- アクセスパイプライン- 変更に関連する特定のCDパイプラインの実行に移動します
- Locate Task-
prod-change-requestというラベルのタスクを見つけ、change-requestのステップを選択する - 表を見直す- これらのキーワードで検索して、2つの重要な表を見つける:
- 資産スコープ表 :
Current pipeline scopeを検索(最初のテーブル) - エビデンスチェック表
PRE-DEPLOYMENTを検索する(第2表)
- 資産スコープ表 :
これらの表が表示されていれば、設定ファイルに基づく証拠検証が有効になっていることが確認できる。
注: CDパイプラインとCCパイプラインの両方でチェックが有効になっている場合も、設定ファイルを利用してパイプライン評価が行われる。
さまざまな展開トポロジー
以下の例は、さまざまな配備トポロジーでエビデンスの検証がどのように機能するかを示している。 それぞれのトポロジーは、ある環境で収集された証拠が、後続の環境に昇格する際にどのように検証されるかを示している。
サービス環境:
masterまたはdev- 開発stage- プリプロダクション(最近サポートされた)prod- 製造
master から prod
{: caption="使用例1。 昇進 master に prod" キャプションサイド="下"}
** Manual Promotion Trigger および Manual CD Trigger**
| 名前 | 値 |
|---|---|
source-environment |
master |
target-environment |
prod |
target-environment-purpose |
production |
設定ルールのサンプル:
{
"evidence_type_id": "com.ibm.acceptance_tests",
"rules": [
{
"asset_type": "image",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Acceptance tests must pass if they are run"
}
],
"recommended": []
}
]
}
master から stage に昇格し、さらに以下のようになった。 prod
: caption="使用例 2. 昇進 master に stage に prod" キャプションサイド="下"}
** Manual Promotion Trigger および 環境の特性 Manual CD Trigger stage**
| 名前 | 値 |
|---|---|
source-environment |
master |
target-environment |
stage |
target-environment-purpose |
pre_prod |
** Manual Promotion Trigger および 環境の特性 Manual CD Trigger prod**
| 名前 | 値 |
|---|---|
source-environment |
stage |
target-environment |
prod |
target-environment-purpose |
production |
設定ルールのサンプル:
{
"evidence_type_id": "com.ibm.acceptance_tests",
"rules": [
{
"asset_type": "image",
"source_environments": [
{
"name": "ci-pipeline"
},
{
"name": "stage"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Acceptance tests must pass if they are run"
}
],
"recommended": []
}
]
}
master 、 stage(us-east) 、 stage(us-south)。 prod(us-south)
{: caption="ユースケース3。 昇進 master に stage(us-east) に stage(us-south) そして prod(us-south)"
キャプションサイド="下"}
** Manual Promotion Trigger および 環境の特性 Manual CD Trigger stage(us-east)**
| 名前 | 値 |
|---|---|
source-environment |
master |
target-environment |
stage |
target-environment-purpose |
pre_prod |
region |
us-east |
** Manual Promotion Trigger および 環境の特性 Manual CD Trigger stage(us-south)**
| 名前 | 値 |
|---|---|
source-environment |
master |
target-environment |
stage |
target-environment-purpose |
pre_prod |
region |
us-south |
** Manual Promotion Trigger および 環境の特性 Manual CD Trigger prod(us-south)**
| 名前 | 値 |
|---|---|
source-environment |
master |
target-environment |
stage |
target-environment-purpose |
production |
region |
us-south |
source-regions |
us-south |
設定ルールのサンプル:
{
"evidence_type_id": "com.ibm.acceptance_tests",
"rules": [
{
"asset_type": "image",
"source_environments": [
{
"name": "ci-pipeline"
},
{
"name": "stage",
"region": "us-south"
}
],
"target_environments": [
{
"name": "stage",
"region": "us-south"
},
{
"name": "stage",
"region": "us-east"
},
{
"name": "prod",
"region": "us-south"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Acceptance tests must pass if they are run"
}
],
"recommended": []
}
]
}
DevSecOps ステージのデフォルトツール値
アセットタイプ(コンテナイメージ、ソースコードコミット、デプロイメント成果物など)が異なれば、必要な証拠も異なる。 設定ファイルにより、各資産タイプについて収集しなければならない証拠タイプを指定することができ、システムは、適切な証拠が対応するツールによって収集されたことを検証します。
| エビデンス・タイプ ID | デフォルトでサポートされるツール | 成果物タイプ |
|---|---|---|
com.ibm.branch_protection |
cocoa-branch-protection |
レポ(コミット) |
com.ibm.unit_tests |
jest |
レポ(コミット) |
com.ibm.detect_secrets |
detect-secrets |
レポ(コミット) |
com.ibm.code_vulnerability_scan |
アプリの場合: cra-tf, cra, mendIaC: tfsec、 checkov |
レポ(コミット) |
com.ibm.code_bom_check |
cra-bom, mend-bom |
レポ(コミット) |
com.ibm.code_cis_check |
cra-cis |
レポ(コミット) |
com.ibm.peer_review |
peer-review |
レポ(コミット) |
com.ibm.static_scan |
アプリの場合: sonarqube, gosecIaC: の場合 terraform-fmt, terraform-validate、 tflint |
レポ(コミット) |
com.ibm.cloud.image_signing |
artifact-signing |
アーティファクト(イメージ) |
com.ibm.acceptance_tests |
jest |
人工物(ヘルム、画像、チャート) |
com.ibm.dynamic_scan |
owasp-zap, owasp-zap-ui |
アーティファクト(イメージ) |
com.ibm.cloud.image_vulnerability_scan |
va, sysdig, xray |
成果物 |
com.ibm.prod_change_request |
gitlab |
人工物(ヘルム、画像、チャート) |
com.ibm.close_change_request |
gitlab |
人工物(ヘルム、画像、チャート) |
| com.ibm.cloud.slsa | tekton-chains |人工物(兜、画像、チャート)||||||
よくある質問
配備がブロックされています
配備がブロックされた場合は、次の手順に従って問題を特定してください:
- アクセスパイプライン- 変更に関連する特定のCDパイプラインの実行に移動します
- Locate Task-
prod-change-requestというラベルのタスクを見つけ、change-requestのステップを選択する - 表を見直す- これらのキーワードで検索して、2つの重要な表を見つける:
- 資産スコープ表 :
Current pipeline scopeを検索(最初のテーブル) - エビデンスチェック表
PRE-DEPLOYMENTを検索する(第2表)
- 資産スコープ表 :
エビデンスチェックテーブルは、どのエビデンスアイテムが missing または failed であるかを示し、配備がブロックされる原因となります。
エビデンスチェック表を理解する
エビデンス・チェック表には、各資産のエビデンスの検証状況が表示されます。 その構造を理解することは、コンプライアンス上の問題のトラブルシューティングに役立ちます。
資産テーブルの構造:
- ID列 :各資産を識別する主キー
- Full_id :完全なアセットID。
- type: アセットの種類
- URI列 :検証対象の実際のアセット(画像、アーティファクトなど
- 関係 :アセットIDは、エビデンスチェックテーブルの外部キー(
AssetId)として機能する
エビデンス・チェック・テーブルの構造:
- AssetId 列 :各資産を識別する外部キー
- EvidenceTypeId :どのコンプライアンス証拠が必要かを指定する(脆弱性スキャン、ユニットテスト、ピアレビューなど)
- エビデンスの出所 :エビデンスの出所を示す(通常は
ci-pipeline) - 状態 :各資産について、証拠が存在するか、存在しないか、または存在しないかを表示します
エビデンス総括表の構成:
この表は、全資産のコンプライアンス・エビデンス・サマリーを表示し、いくつのエビデンス項目が欠落、成功、失敗、または保留中であるかを示します。
証拠の紛失や失敗を修正するには?
証拠チェック表から欠落または失敗した証拠を特定したら、このデシジョンツリーを使用して問題を解決する。 特定の証拠タイプ(例: com.ibm.static_scan )と資産タイプ(例: image、 commit )に注意。
質問 [「アセットタイプの] [エビデンスタイプを]収集するようにCIパイプラインを設定しましたか?
NOの場合(回収していない):
- 質問してください:「これは私のサービスにとって有効なコンプライアンス要件ですか?
- はい、有効です :CIパイプラインにエビデンス収集を導入する
- 必要なスキャンツールやスクリプトを追加する
- 適切な証拠報告メカニズムを設定する
- 証拠が正しい資産にリンクされていることを確認する
- 実施の詳細については、 「資産証拠収集ガイド」を 参照のこと
- いいえ、該当しません :正当な理由を文書化し、エスカレーションする
- セキュリティ担当者に連絡する
- あなたのサービスにこのチェックが適用されない理由を説明してください
- 明確な正当性を示す
- 承認後、設定ファイルからチェックを削除する
YESの場合(以前にこの証拠を収集したことがある):
- エビデンス・チェック表で欠番と表示されている理由を調査する
- チェックすべき潜在的な問題
- CIパイプラインでエビデンスが正しく生成されているか?
- 正しい場所に報告されているか?
- 資産IDは証拠に適切にリンクされているか?
- CIパイプラインとCDパイプラインの間にタイミングや同期の問題はあるか?
- エビデンス形式はバリデーション要件に適合しているか?
- 証拠収集または報告に関連するエラーメッセージがないかパイプラインログをチェックする
リファレンス
サンプル設定ファイル
{
"version": "2.0",
"pre-deployment": [
{
"evidence_type_id": "com.ibm.prod_change_request",
"rules": [
{
"asset_type": "image",
"source_environments": [
{
"name": "stage"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Change request must be successful if present"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.acceptance_tests",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
},
{
"name": "stage"
},
{
"name": "prod"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Acceptance tests must pass if they are run"
}
],
"recommended": []
},
{
"asset_type": "image",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Acceptance tests must pass if they are run"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.branch_protection",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Branch protection must be successful if present"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.cloud.slsa",
"rules": [
{
"asset_type": "image",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "SLSA attestation must be successful if present"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.dynamic_scan",
"rules": [
{
"asset_type": "image",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"owasp-zap"
],
"description": "Dynamic scan must pass if OWASP ZAP is run"
}
],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "Other dynamic scan tools are recommended"
}
]
}
]
},
{
"evidence_type_id": "com.ibm.cloud.verify_signature",
"rules": [
{
"asset_type": "image",
"source_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Signature verification must pass if present"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.cloud.image_vulnerability_scan",
"rules": [
{
"asset_type": "image",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Image vulnerability scan must pass if run"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.peer_review",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Peer review must be successful if present"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.unit_tests",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Unit tests must pass if they are run"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.static_scan",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Static scan must pass if run"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.detect_secrets",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Detect secrets scan must pass if run"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.code_vulnerability_scan",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Code vulnerability scan must pass if run"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.code_cis_check",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "CIS check must pass if run"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.code_bom_check",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "BOM check must pass if run"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.network_compliance",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Network compliance check must pass if run"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.pipeline_run_data",
"rules": [
{
"asset_type": "generic",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Pipeline run data must be successful if present"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.pipeline_logs",
"rules": [
{
"asset_type": "generic",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Pipeline logs must be successful if present"
}
],
"recommended": []
}
]
}
],
"post-deployment": [
{
"evidence_type_id": "com.ibm.prod_change_request",
"rules": [
{
"asset_type": "image",
"source_environments": [
{
"name": "stage"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Change request must be successful if present"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.acceptance_tests",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Acceptance tests must pass if they are run"
}
],
"recommended": []
},
{
"asset_type": "image",
"source_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Acceptance tests must pass if they are run"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.pipeline_run_data",
"rules": [
{
"asset_type": "generic",
"source_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Pipeline run data must be successful if present"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.pipeline_logs",
"rules": [
{
"asset_type": "generic",
"source_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Pipeline logs must be successful if present"
}
],
"recommended": []
}
]
}
]
}