Validation des informations collectées
Dans l'architecture DevSecOps, avant de déployer les actifs, tous les éléments d'informations collectées qui ont été collectés dans le pipeline d'EC doivent être validés afin que les actifs soient conformes aux exigences de conformité.
La collecte de preuves est un aspect essentiel de l'architecture de référence des opérations DevSec. 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 informations collectées 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 SCC pour intégrer des contrôles de sécurité dans vos flux de travaux quotidiens afin de surveiller la sécurité et la conformité. En surveillant les risques, vous pouvez identifier les vulnérabilités de sécurité, 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:
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
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.
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.
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
.
Exemple de fichier de configuration
{
"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 étapes de vérification dans les opérations DevSec
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
|