Validation des informations collectées
Dans le DevSecOps architecture, avant de déployer les actifs, tous les éléments de preuve collectés dans le pipeline CI doivent être validés afin que les actifs répondent aux exigences de conformité.
La collecte de preuves est un aspect essentiel de la DevSecOps architecture de référence. Le pipeline d'EC collecte les éléments d'informations collectées pour toutes les analyses ou étapes des actifs effectuées par le pipeline d'EC. Le pipeline de déploiement continu (CD) déploie les actifs qui sont produits par le pipeline d'EC et le pipeline de conformité continue (CC) analyse l'actif déployé par le pipeline CD.
Vous pouvez valider les preuves de l'une des manières suivantes :
- Utilisation du profil Security and Compliance Center (SCC).
- Utilisation d'un fichier de configuration.
Utilisation du profil SCC
Utilisez le CCN pour intégrer des contrôles de sécurité dans vos flux de travail quotidiens afin de surveiller la sécurité et la conformité. En surveillant les risques, vous pouvez identifier les vulnérabilités en matière de sécurité, vous efforcer
d'en atténuer l'impact et résoudre les problèmes. L'intégration de la contrainte de contexte de sécurité doit être activée pour la chaîne d'outils et Use profile with attachment
doit être activé, en fonction du profil et de la
version de la contrainte de contexte de sécurité. Tous les contrôles sont validés en fonction des informations collectées pour toutes les ressources de la pièce jointe. La chaîne d'outils prend en charge les IBM Cloud® meilleures pratiques
de sécurité avec la version 1.0.0
ou supérieure ou le profil IBM Cloud® for Financial Services avec la version 1.2.0
ou supérieure. Si vous souhaitez un sous-ensemble de contrôles spécifiés, créez un profil personnalisé
à l'aide de ces profils et sélectionnez un sous-ensemble de contrôles. La chaîne d'outils est validée par rapport à ce profil. Pour plus d'informations, voir Security and Compliance Center.
Utilisation d'un fichier de configuration
La validation des informations collectées à l'aide d'un fichier de configuration fonctionne comme suit:
- Les vérifications préalables au déploiement valident les informations collectées produites par le pipeline d'EC et effectuent les jalons du déploiement en fonction de ces vérifications. Si toutes les vérifications sont validées avec succès,
la demande de changement est approuvée automatiquement. Si l'une des vérifications échoue, la demande de changement n'est pas approuvée automatiquement et le déploiement est bloqué. Dans le cas d'une demande de changement
emergency
, le déploiement n'est pas bloqué. Le fichier de configuration fait partie de la demande de changement. - Les vérifications post-déploiement valident les informations collectées produites par le pipeline CD et évaluent le pipeline en fonction de ces vérifications.
- L'étape de fin valide les vérifications des informations collectées post-déploiement et évalue le pipeline CD. Les vérifications sont stockées dans le casier d'informations collectées à côté du fichier
summary.json
.
Pour chaque type d'actif, il peut être nécessaire de collecter des types d'informations collectées différents. Ainsi, dans les vérifications, vous pouvez définir le type d'actif et, en fonction de cet actif, les informations collectées collectées pour un outil sont les suivantes:
Activer la validation et l'évaluation des informations collectées à l'aide du fichier de configuration
Pour activer le validation of evidence
dans votre chaîne d'outils, définissez la variable d'environnement opt-in-evidence-checks
sur 1
dans la chaîne d'outils CD et CC.
Configurer le fichier de configuration
Pour définir le chemin d'accès au fichier de configuration, définissez evidence-checks-config-path
sur le chemin d'accès au fichier présent dans pipeline-config-repo
, sinon le fichier de configuration par défaut est
utilisé. Différents environnements de déploiement peuvent avoir des fichiers de configuration différents. Par exemple, stage
peut avoir des vérifications d'informations collectées qui diffèrent des vérifications d'informations
collectées de production. Si evidence-checks-config-path
n'est pas défini, le fichier de configuration recherche le fichier dont le nom est <region>.<target>.validation.json
, <target>.validation.JSON
ou validation.json
dans pipeline-config-repo
.
Il existe deux versions de ce fichier de configuration :
Fichier de configuration version 2
Au cours de l'exécution du pipeline CI/CD/CC, nous collectons diverses preuves contre divers outils et divers environnements de service. En termes simples, l'environnement de service peut être de développement, de production et de pré-prod (ou étape) récemment pris en charge. Les résultats de ces preuves sont regroupés pour déterminer la conformité globale au niveau de l'application pour un environnement de service particulier. L'utilisateur peut configurer des règles pour déterminer la manière dont l'agrégation des résultats est effectuée. Utiliser un fichier de configuration version2, ajustement utilisateur sur la façon d'évaluer toute preuve particulière en fonction de l'environnement de service. Les preuves peuvent être déclarées comme suit :
- recommandé (par défaut)
- obligatoire
Le diagramme ci-dessous montre comment fonctionne l'agrégation des preuves :
Évaluation des preuves et contrôle
Lorsque le niveau de conformité des applications requis n'est pas atteint, nous organisons le déploiement dans l'exécution du pipeline CD. Preuves prises en charge pour le gate :
pre-deployment[evidences list]
post-deployment[evidences list]
Différentes topologies de déploiement :
1. Promotion à partir de master
à prod
: caption="Cas d'utilisation 1. Promotion à partir de
master
à prod
" côté légende="bas"}
{ : caption="Propriétés pour '
Manual Promotion Trigger
et 'Manual CD Trigger
"}
2. Promotion à partir de master
à stage
et puis à prod
: caption="Cas d'utilisation 2. Promotion à partir de
master
à stage
à prod
" côté légende="bas"}
{ : caption="Propriétés pour '
Manual Promotion Trigger
et 'Manual CD Trigger
environnement
'stage
"}
{ : caption="Propriétés pour '
Manual Promotion Trigger
et 'Manual CD Trigger
environnement
'prod
"}
3. Promotion à partir de master
à stage(us-east)
à stage(us-south)
et puis à prod(us-south)
: caption="Cas d'utilisation 3. Promotion à partir de
master
à stage(us-east)
à stage(us-south)
et puis à prod(us-south)
" côté légende="bas"}
{ : caption="Propriétés pour '
Manual Promotion Trigger
et 'Manual CD Trigger
environnement
'stage(us-east)
"}
{ : caption="Propriétés pour '
Manual Promotion Trigger
et 'Manual CD Trigger
environnement
'stage(us-south)
"}
{ : caption="Propriétés pour '
Manual Promotion Trigger
et 'Manual CD Trigger
environnement
'prod(us-south)
"}
4. Promotion à partir de master
à stage(us-east)
à stage(us-south)
et puis à prod(us-south)
: caption="Cas d'utilisation 4. Promotion à partir de
master
à stage(us-east)
à stage(us-south)
et puis à prod(us-south)
" côté légende="bas"}
{ : caption="Propriétés pour '
Manual Promotion Trigger
et 'Manual CD Trigger
environnement
'stage(us-east)
"}
{ : caption="Propriétés pour '
Manual Promotion Trigger
et 'Manual CD Trigger
environnement
'stage(us-east)
"}
{ : caption="Propriétés pour '
Manual Promotion Trigger
et 'Manual CD Trigger
environnement
'stage(us-south)
"}
{ : caption="Propriétés pour '
Manual Promotion Trigger
et 'Manual CD Trigger
environnement 'prod(us-south)
"}
Tableau des résultats pour version2cocoa locker evidence check
:
{ : caption="Propriétés pour
Manual Promotion Trigger
et Manual CD Trigger
environnement prod(us-south)
"}
Pré-déploiement (vérifications effectuées avant que la demande de changement ne soit approuvée automatiquement)
- Type d'actif (par exemple,
image
,commit
,*
ou tout actif)- Preuve
- ID de type d'informations collectées (par exemple,
com.ibm.static-scan
)- Obligatoire (les informations collectées sont présentées à l'état
success
)- Outil (type d'outil pour lequel des informations collectées sont collectées. Par exemple,
SonarQube
,owasp-zap
,*
ou tout autre outil)
- Outil (type d'outil pour lequel des informations collectées sont collectées. Par exemple,
- Recommandé (si les informations collectées sont manquantes / pendant/en échec, le pipeline consigne les messages d'avertissement)
- Outil (type d'outil pour lequel des informations collectées sont collectées. Par exemple,
SonarQube
,owasp-zap
,*
ou tout autre outil)
- Outil (type d'outil pour lequel des informations collectées sont collectées. Par exemple,
- Obligatoire (les informations collectées sont présentées à l'état
- ID de type d'informations collectées (par exemple,
- Preuve
Post-déploiement (vérifications qui évaluent le pipeline CD)
- Type d'actif (par exemple,
image
,commit
,*
ou tout actif)- Preuve
- ID de type d'informations collectées (par exemple,
com.ibm.acceptance_tests
)- Obligatoire (les informations collectées doivent être présentes à l'état
success
)- Outil (type d'outil, par exemple
jest
,*
ou tout autre outil)
- Outil (type d'outil, par exemple
- Recommandé (si les informations collectées sont manquantes / pendant/en échec, le pipeline consigne les messages d'avertissement)
- Outil (type d'outil pour lequel des informations collectées sont collectées. Par exemple,
SonarQube
,owasp-zap
,*
ou tout autre outil)
- Outil (type d'outil pour lequel des informations collectées sont collectées. Par exemple,
- Obligatoire (les informations collectées doivent être présentes à l'état
- ID de type d'informations collectées (par exemple,
- Preuve
L'évaluation du pipeline se produit également lorsque la vérification est activée dans le CD et le CC, à l'aide du fichier de configuration.
Les preuves provenant du pipeline CI doivent avoir l'origine ci-pipeline
dans le fichier de configuration.
Exemple de fichier de configuration version 2
{
"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": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
},
{
"asset_type": "*",
"source_environments": [
{
"name": "stage"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
}
]
},
{
"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": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
},
{
"asset_type": "image",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
},
{
"asset_type": "*",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
}
]
},
{
"evidence_type_id": "com.ibm.branch_protection",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
}
]
},
{
"evidence_type_id": "com.ibm.cloud.slsa",
"rules": [
{
"asset_type": "image",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
}
]
},
{
"evidence_type_id": "com.ibm.dynamic_scan",
"rules": [
{
"asset_type": "image",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
},
{
"asset_type": "*",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
}
]
},
{
"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": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
},
{
"asset_type": "*",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
}
]
},
{
"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": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
},
{
"asset_type": "*",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
}
]
},
{
"evidence_type_id": "com.ibm.peer_review",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
},
{
"asset_type": "*",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
}
]
},
{
"evidence_type_id": "com.ibm.unit_tests",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
},
{
"asset_type": "*",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
}
]
},
{
"evidence_type_id": "com.ibm.static_scan",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
},
{
"asset_type": "*",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
}
]
},
{
"evidence_type_id": "com.ibm.detect_secrets",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
},
{
"asset_type": "*",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
}
]
},
{
"evidence_type_id": "com.ibm.code_vulnerability_scan",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
},
{
"asset_type": "*",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
}
]
},
{
"evidence_type_id": "com.ibm.code_cis_check",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
},
{
"asset_type": "*",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
}
]
},
{
"evidence_type_id": "com.ibm.code_bom_check",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
},
{
"asset_type": "*",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
}
]
},
{
"evidence_type_id": "com.ibm.network_compliance",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
},
{
"asset_type": "*",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
}
]
},
{
"evidence_type_id": "com.ibm.pipeline_run_data",
"rules": [
{
"asset_type": "generic",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
}
]
},
{
"evidence_type_id": "com.ibm.pipeline_logs",
"rules": [
{
"asset_type": "generic",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
}
]
},
{
"evidence_type_id": "com.ibm.code-branch-protection",
"rules": [
{
"asset_type": "*",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
}
]
},
{
"evidence_type_id": "com.ibm.cloud.image_signing",
"rules": [
{
"asset_type": "*",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
}
]
}
],
"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": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
},
{
"asset_type": "*",
"source_environments": [
{
"name": "stage"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
}
]
},
{
"evidence_type_id": "com.ibm.acceptance_tests",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
},
{
"asset_type": "image",
"source_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
},
{
"asset_type": "*",
"source_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
}
]
},
{
"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": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
}
]
},
{
"evidence_type_id": "com.ibm.pipeline_logs",
"rules": [
{
"asset_type": "generic",
"source_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "The tool that collected the evidence"
}
]
}
]
}
]
}
Fichier de configuration version 1
Pré-déploiement (vérifications effectuées avant que la demande de changement ne soit approuvée automatiquement)
- Type d'actif (par exemple,
image
,commit
,*
ou tout actif)- Preuve
- ID de type d'informations collectées (par exemple,
com.ibm.static-scan
)- Obligatoire (les informations collectées sont présentées à l'état
success
)- Outil (type d'outil pour lequel des informations collectées sont collectées. Par exemple,
SonarQube
,owasp-zap
,*
ou tout autre outil)
- Outil (type d'outil pour lequel des informations collectées sont collectées. Par exemple,
- Facultatif (si les informations collectées sont présentes, elles doivent être à l'état
success
)- Outil (type d'outil pour lequel des informations collectées sont collectées. Par exemple,
SonarQube
,owasp-zap
,*
ou tout autre outil)
- Outil (type d'outil pour lequel des informations collectées sont collectées. Par exemple,
- Ignorer (les informations collectées ne sont pas validées)
- Obligatoire (les informations collectées sont présentées à l'état
- ID de type d'informations collectées (par exemple,
- Preuve
Post-déploiement (vérifications qui évaluent le pipeline CD)
- Type d'actif (par exemple,
image
,commit
,*
ou tout actif)- Preuve
- ID de type d'informations collectées (par exemple,
com.ibm.acceptance_tests
)- Obligatoire (les informations collectées doivent être présentes à l'état
success
)- Outil (type d'outil, par exemple
jest
,*
ou tout autre outil)
- Outil (type d'outil, par exemple
- Facultatif (si les informations collectées sont présentes, elles doivent être à l'état
success
)- Outil (type d'outil, par exemple
servicenow-v3
,*
ou tout autre outil)
- Outil (type d'outil, par exemple
- Ignorer (les informations collectées ne sont pas validées)
- Obligatoire (les informations collectées doivent être présentes à l'état
- ID de type d'informations collectées (par exemple,
- Preuve
L'évaluation du pipeline se produit également lorsque la vérification est activée dans le CD et le CC, à l'aide du fichier de configuration.
Exemple de fichier de configuration version 1
{
"pre-deployment": [
{
"asset_type": "commit",
"evidences": [
{
"evidence_type_id": "com.ibm.branch_protection",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.peer_review",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.unit_tests",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.static_scan",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.detect_secrets",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.code_vulnerability_scan",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.code_cis_check",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.code_bom_check",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.acceptance_tests",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
}
]
},
{
"asset_type": "image",
"evidences": [
{
"evidence_type_id": "com.ibm.cloud.slsa",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.cloud.image_signing",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.cloud.image_vulnerability_scan",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.dynamic_scan",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.cloud.verify_signature",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
}
]
},
{
"asset_type": "generic",
"evidences": [
{
"evidence_type_id": "com.ibm.pipeline_run_data",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.pipeline_logs",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
}
]
},
{
"asset_type": "*",
"evidences": [
{
"evidence_type_id": "com.ibm.code-branch-protection",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.peer_review",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.unit_tests",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.static_scan",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.detect_secrets",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.code_vulnerability_scan",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.code_cis_check",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.code_bom_check",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.cloud.image_signing",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.acceptance_tests",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.cloud.image_vulnerability_scan",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.dynamic_scan",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.cloud.verify_signature",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
}
]
}
],
"post-deployment": [
{
"asset_type": "image",
"evidences": [
{
"evidence_type_id": "com.ibm.prod_change_request",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.acceptance_tests",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
}
]
},
{
"asset_type": "generic",
"evidences": [
{
"evidence_type_id": "com.ibm.pipeline_run_data",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.pipeline_logs",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
}
]
},
{
"asset_type": "commit",
"evidences": [
{
"evidence_type_id": "com.ibm.acceptance_tests",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
}
]
},
{
"asset_type": "*",
"evidences": [
{
"evidence_type_id": "com.ibm.prod_change_request",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
},
{
"evidence_type_id": "com.ibm.acceptance_tests",
"rules": {
"required": [],
"optional": [
{
"tool": "*"
}
],
"ignore": []
}
}
]
}
]
}
Valeur d'outil par défaut pour les différentes étapes du DevSecOps
ID de type d'informations collectées | Outil pris en charge par défaut |
---|---|
com.ibm.branch_protection |
cocoa-branch-protection |
com.ibm.unit_tests |
jest |
com.ibm.detect_secrets |
detect-secrets |
com.ibm.code_vulnerability_scan |
Pour les applications: cra-tf , cra , mend Pour l'infrastructure sous forme de code: tfsec , checkov |
com.ibm.code_bom_check |
cra-bom , sbom-utility |
com.ibm.code_cis_check |
cra-cis |
com.ibm.peer_review |
peer-review |
com.ibm.static_scan |
Pour les applications: sonarqube , gosec Pour l'infrastructure sous forme de code: 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
|
Questions fréquemment posées : Contrôles de conformité dans les pipelines de CD
Que signifie l'expression "tous les contrôles sont réglés sur recommandé"?
Cela signifie que si le pipeline recommande de passer tous les contrôles de conformité, il n'échoue pas automatiquement si ce n'est pas le cas. En tant qu'utilisateur, il vous incombe de veiller à ce que tous les contrôles de conformité manquants ou défaillants soient traités et corrigés au cours de votre processus d'évaluation des risques. Le pipeline signale ces problèmes afin que vous les examiniez et les résolviez.
Comment vérifier si tous les contrôles de conformité ont été effectués?
- Naviguez jusqu'au pipeline de CD : Accédez au pipeline de CD spécifique associé à votre modification.
- Localisez la tâche "Pre-Change-Request" : Dans le pipeline, recherchez la tâche intitulée "pré-demande de changement", puis sélectionnez l'étape "demande de changement".
- Recherchez les tableaux relatifs à l'emploi préalable : Recherchez une section de tableau avec le mot-clé PRE-DEPLOIEMENT :. Vous verrez deux tableaux dans cette section.
Comprendre les tableaux
-
Tableau des actifs
a. La table Asset contient l'ID qui est la clé primaire de cette table et la clé étrangère AssetId de la table de vérification des preuves
b. L'Uri contient votre actif réel contre lequel toutes les preuves sont collectées ou supposées être collectées
-
Tableau de contrôle des preuves
a. EvidenceTypeId spécifie le type de preuve qu'il recherche.
b. Origine de la preuve spécifie l'origine de la preuve. S'il est indiqué ci-pipeline, il s'attend à ce que les preuves soient collectées pour ce site evidenceTypeId pour ce site AssetId.
Que faire lorsque des entrées du tableau de contrôle des éléments de preuve sont manquantes ou ont échoué?
Pour chaque entrée du tableau de vérification des preuves, posez-vous les questions suivantes : Ai-je déjà recueilli ce type de preuves pour cet actif dans le cadre de mon processus d'enquête?
-
Si NON : S'agit-il d'une exigence de conformité valable pour mon service?
a. OUI : Vous devez mettre en œuvre les étapes nécessaires dans votre pipeline de CI pour collecter et fournir ces preuves. Cela peut impliquer l'ajout de nouveaux outils, scripts ou configurations. Guide d'aide
b. NON : Contactez votre coordinateur de sécurité pour lui expliquer pourquoi vous pensez que ce contrôle n'est pas pertinent ou valable pour votre service. Fournissez une justification claire et supprimez cette vérification du fichier de configuration.
-
Si OUI : (Vous avez déjà recueilli cette preuve auparavant)
Pourquoi est-il toujours indiqué comme manquant dans le tableau de vérification des preuves? Il peut y avoir un problème dans la façon dont les preuves sont rapportées, traitées ou liées au bien.