Du chaos à la clarté : naviguer dans Policy Engine pour la conformité

Tous Les Articles

Bienvenue dans la deuxième partie de notre série de blogs, où nous approfondissons les puissantes capacités de Valint. Dans cet article, nous nous concentrerons sur le moteur de politiques de Valint et son rôle central pour garantir la conformité tout au long de votre chaîne d'approvisionnement.
Dans notre précédent article de blog, nous avons fourni un aperçu de Les principes de conception de Valint.

Comment fonctionne le moteur de politiques

Le moteur de politiques de Valint fonctionne sur un ensemble de règles organisées en politiques vérifiées par rapport aux preuves collectées auprès de la chaîne d'approvisionnement. Décomposons ses éléments clés :

Preuve: Objets immuables destinés à être consommés automatiquement par les stratégies. Ces objets contiennent les métadonnées nécessaires pour permettre l'application des politiques et répondre aux exigences de conformité. Le contenu des preuves comprend des métadonnées sur les artefacts, les événements et les paramètres, mais peut également collecter des rapports, des configurations ou des analyses réels. Les preuves peuvent se présenter sous une forme signée ou non. Nous vous suggérons de suivre le Intoto spécification d'attestation en utilisant le signé attestation et les formats non signés, respectivement.

  • Attestations (AKA preuve signée vérifiable) : Preuve vérifiable liée à un contexte environnemental, transmettant la confiance à l'aide d'une certaine forme de signatures PKI.

Autres Conditions Celles-ci définissent les exigences auxquelles votre chaîne d'approvisionnement doit répondre, couvrant divers aspects tels que la validation, les détails de conformité et le verdict final sur les preuves. À titre d'exemple, l'organisation pourrait avoir une « politique d'image de conteneur »

Règles de politique : Les politiques sont constituées de règles, chacune représentant un contrôle de conformité spécifique. Les exemples incluent la vérification des signatures et des identités, la vérification des composants SBOM, la vérification de l’absence de vulnérabilités critiques. À l’instar de l’exemple précédent, la « Politique d’image du conteneur » pourrait être composée des règles suivantes :

  • Appliquer la signature d’image.
  • Avertir sur l'image et non se plaindre avec des étiquettes spécifiques.

Liasses: Ensembles de politiques et de règles pouvant être facilement référencées dans leur ensemble. Les bundles offrent un moyen modulaire et organisé de gérer et d’appliquer des ensembles de politiques sous forme de code. L'ensemble de stratégies par défaut Scribe est publié sous https://github.com/scribe-public/sample-policies, n'hésitez pas à vous y référer.

Utiliser des politiques avec Valint

Valint permet aux utilisateurs d'utiliser des politiques sous forme de code à partir de référentiels publics ou privés, offrant ainsi des options de flexibilité et de personnalisation. Pour commencer, installez simplement Valint et définissez vos politiques en fonction de vos besoins de conformité.

Installation: Commencez par installer Valint à l’aide du script fourni. Exécutez la commande suivante dans votre terminal :

curl -sSfL https://get.scribesecurity.com/install.sh | sh -s — -t valint

Définition de la politique : Ensuite, définissez vos politiques en fonction des exigences de conformité de votre organisation. Créez un fichier YAML, tel que my_policy.yaml, et structurez-le pour encapsuler les règles souhaitées. Voici un exemple de ce à quoi pourrait ressembler votre fichier de stratégie :

nom : my_image_policy valeurs par défaut : preuve : signé : vrai règles : - utilise : images/fresh-image@v1 avec : max_days : 100 - utilise : images/verify-labels-exist@v1 niveau : avertissement avec : étiquettes : # image requise pour être étiqueté (commande Dockerfile LABEL) - responsable # Exiger une étiquette de responsable. - org.opencontainers.image.source # Exiger que les images soient étiquetées avec leurs sources

Dans cet exemple, nous avons défini une stratégie nommée my_image_policy, qui exige que les éléments de preuve doivent être signés et que les images doivent être créées au cours des 100 derniers jours. De plus, il émet un avertissement si les images manquent d'étiquettes spécifiques.

N'hésitez pas à lire autres règles nous soutenons hors de la boîte.

Création de preuves : Avant d’évaluer vos politiques, vous devez générer les preuves nécessaires. Utilisez Valint pour créer des preuves de votre image cible :

valint bom nginx:latest -o attest

Cette commande génère des preuves du nginx:latest image, en veillant à ce qu'elle comprenne des métadonnées telles que l'identité de l'image et l'heure de création. Par défaut, Valint utilise le magasin de signatures service en tant que signataire pour la génération de preuves, qui lient une identité OIDC à un certificat. Cependant, Valint prend également en charge l'utilisation de vos propres x509 Clés PKI et chaînes CA pour la signature.

Connexion à Sigstore

Sélectionnez simplement l’identifiant OIDC de votre choix pour signer.

Enfin, vous pouvez examiner le succès du processus de génération de preuves ainsi que son identité pour garantir son intégrité et sa fiabilité.

[2024-03-26 12:41:55] INFO attestent : [TRUSTED] signe le succès, CA : fulcio-signer, CN : sigstore-intermediate, Emails : [your_identity@gmail.com], URI : [] ... [2024-03-26 12:41:55] Attestation INFO : preuves générées avec succès

Évaluation de la politique : une fois votre politique définie et les preuves générées, il est temps de l'évaluer par rapport aux composants de votre chaîne d'approvisionnement. Utiliser le valint verify commande suivie de l'image cible et de votre fichier de stratégie :

valint verify nginx:latest --policy my_policy.yaml

Résumé de l'évaluation :

Une fois l'évaluation terminée, consultez le tableau récapitulatif fourni par les journaux Valint.

lampe de table

Dans ce cas particulier, l'analyse Valint montre que le nginx:latest L'image répond avec succès aux exigences de fraîcheur mais ne respecte pas les critères d'étiquetage, comme prévu. Le tableau fourni décrit de manière concise l'état d'évaluation de chaque règle, en indiquant si les preuves ont été correctement signées.

Résultats au format SARIF :

De plus, vous pouvez explorer les résultats au format SARIF produits par Valint comme un autre ensemble de preuves pour détailler l'évaluation, les violations, les niveaux et les références aux preuves.

Plateformes de gestion prises en charge :

Ce format standardisé bénéficie de la prise en charge de divers systèmes de gestion de la sécurité tels que GitHub, Azure et Scribe SAAS. Les plates-formes Scribe gèrent non seulement les résultats des politiques, mais facilitent également la gestion des preuves et offrent des fonctionnalités étendues pour la gestion des vulnérabilités, le suivi des métriques, etc.

Aperçu des informations :

Pour donner un aperçu des informations disponibles dans les résultats de la politique :

Capture d'écran

{ "version": "2.1.0", "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", "runs": [ { "tool": { "driver": { "informationUri": "https://scribesecurity.com", "name": "valint", "rules": [ { "id": "fresh -image", "name": "Fresh Image", "shortDescription": { "text": "Une règle pour vérifier que l'image n'est pas plus ancienne qu'un seuil" }, }, { "id": "labels", "name": "Labels", "shortDescription": { "text": "Une règle pour vérifier que l'image possède toutes les étiquettes requises" }, }, "results": [ { "ruleId": "fresh-image" , "ruleIndex": 0, "kind": "pass", }, { "ruleId": "labels", "ruleIndex": 1, "kind": "fail", "level": "warning", "policy .violation": { "type": "Étiquettes manquantes", "details": [ { "label": "not_found" }, { "label": "org.opencontainers.image.source" } }, ... ] }

Offres groupées de politiques

Un bundle dans Valint est une politique en tant que package de code, essentiellement un Dépôt Git hébergeant un ensemble de politiques et de règles. Les utilisateurs peuvent créer leur propre offre groupée en créant l'exemple de référentiel fourni par Valint et en le personnalisant en fonction de leurs besoins.

Fourcher et personnaliser : Commencez par forker Valint's référentiel d'échantillons. Personnalisez les politiques et les règles pour les aligner sur les besoins de votre organisation.

Mise à disposition de Valint : Fournissez votre pack personnalisé à Valint :

valint verify --bundle https://github.com/my_org/my_bundle.git \ --policy my_policy.yaml

Règles personnalisées

Lors de la personnalisation des règles, la responsabilité fondamentale consiste à analyser la charge utile des preuves et à signaler les violations en fonction des critères de conformité définis. Que vous modifiiez des règles existantes ou en créiez de nouvelles.

Définir les critères de conformité : Définissez les critères de conformité en fonction des politiques organisationnelles, des normes de sécurité ou des réglementations.

Définir les critères de preuve : Définir les preuves attendues pour démontrer la conformité.

Évaluation de la conformité et signalement des violations : Utilisez la charge utile des preuves pour évaluer la conformité par rapport aux critères définis. Signalez les violations si le composant ne répond pas aux exigences.
Valint garantit que les exigences en matière de signature et d'origine des preuves sont facilement disponibles pour toute règle personnalisée.

Bien que Valint emploie actuellement OPA Régo pour la formulation de règles, un horizon passionnant nous attend puisque les règles Python devraient être intégrées dans un avenir proche.

Quelle est la prochaine?

L'intégration avec Gatekeeper est désormais accessible ! Référez-vous à notre Documentation pour plus de détails. Restez à l’écoute pour un prochain article de blog dans lequel nous approfondirons ce développement passionnant.

Gardez un œil sur les prochains articles de blog dans lesquels nous explorerons les initiatives politiques, y compris les politiques de haut niveau qui mettront en œuvre des cadres de sécurité tels que SLSA et SSDF.

Une nouvelle passionnante pour les passionnés de Python ! Notre dernière mise à jour inclut une prise en charge étendue de Python, offrant une amélioration significative de la compatibilité. Cela permet aux rédacteurs de politiques de personnaliser les règles à l’aide de Python et d’exploiter sa vaste gamme de bibliothèques.

Conclusion

En résumé, le moteur de politiques de Valint offre une solution robuste pour garantir la conformité au sein de votre chaîne d'approvisionnement. En tirant parti de ses composants tels que les preuves, les politiques et les offres groupées, les organisations peuvent rationaliser les efforts de conformité et atténuer efficacement les risques.

Ce contenu vous est proposé par Scribe Security, l'un des principaux fournisseurs de solutions de sécurité de bout en bout pour la chaîne d'approvisionnement logicielle, offrant une sécurité de pointe aux artefacts de code ainsi qu'aux processus de développement et de livraison de code tout au long des chaînes d'approvisionnement logicielles. En savoir plus.