IBM Cloud Docs
Validation des informations collectées

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:

  1. Utilisation du profil Security and Compliance Center (SCC).
  2. 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)
        • 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)
        • Ignorer (les informations collectées ne sont pas validées)

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)
        • 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)
        • Ignorer (les informations collectées ne sont pas validées)

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 |