Aperçu
| Durée | 35 minutes |
| Niveau | Intermédiaire |
| Prérequis | Lab 01 |
Objectifs d’apprentissage
À la fin de ce lab, vous serez capable de :
- Configurer PSRule avec
ps-rule.yamlpour l’analyse de Bicep Azure - Exécuter PSRule localement en utilisant
Invoke-PSRuleavec la baseline Azure.GA - Interpréter la sortie SARIF de PSRule pour identifier les violations d’étiquettes et de SKU
- Comprendre les catégories de règles PSRule pour la gouvernance des coûts
Exercices
Exercice 2.1 : Examiner la configuration PSRule
Vous allez examiner le fichier de configuration PSRule qui contrôle la façon dont les templates Bicep sont analysés.
- Ouvrez
src/config/ps-rule.yamldans VS Code. -
Examinez la configuration :
configuration: AZURE_RESOURCE_ALLOWED_LOCATIONS: - canadacentral - eastus - eastus2 # Expand Bicep files for analysis AZURE_BICEP_FILE_EXPANSION: true AZURE_BICEP_FILE_EXPANSION_TIMEOUT: 30 # Use the GA baseline which includes cost-related rules rule: includeLocal: true binding: targetType: - type - resourceType input: pathIgnore: - '*.md' - '.github/**' output: format: Sarif path: reports/psrule-results.sarif - Notez les paramètres clés :
AZURE_BICEP_FILE_EXPANSION: true— PSRule décompile les fichiers Bicep en JSON ARM avant l’analyse, permettant une analyse plus approfondie.AZURE_RESOURCE_ALLOWED_LOCATIONS— restreint les ressources àcanadacentral,eastuseteastus2. Les ressources dans d’autres régions sont signalées.output.format: Sarif— les résultats sont écrits au format SARIF pour l’intégration avec l’onglet Sécurité GitHub.

[!TIP] La baseline
Azure.GA_2024_12inclut des règles pour l’étiquetage des ressources, le nommage, le dimensionnement des SKU et la sécurité. Vous pouvez afficher la liste complète des règles avecGet-PSRule -Module PSRule.Rules.Azure -Baseline Azure.GA_2024_12.
Exercice 2.2 : Analyser l’application 001
Vous allez exécuter PSRule sur l’application sans étiquettes pour générer votre premier ensemble de résultats.
-
Créez un répertoire de rapports :
New-Item -ItemType Directory -Path reports -Force -
Exécutez PSRule sur l’application 001 :
Invoke-PSRule ` -InputPath finops-demo-app-001/infra/ ` -Module PSRule.Rules.Azure ` -Baseline Azure.GA_2024_12 ` -Option src/config/ps-rule.yaml ` -OutputFormat Sarif ` -OutputPath reports/psrule-001.sarif -
Examinez la sortie console. Vous devriez voir plusieurs résultats Fail liés aux étiquettes manquantes.

[!TIP] Pour voir les résultats sous forme de tableau dans la console sans écrire dans un fichier, omettez les paramètres
-OutputFormatet-OutputPath.
Exercice 2.3 : Analyser les résultats
Vous allez ouvrir le fichier SARIF et comprendre la structure des résultats PSRule.
-
Ouvrez
reports/psrule-001.sarifdans VS Code (installez l’extension SARIF Viewer pour une expérience plus riche). - Localisez le tableau
results. Chaque résultat contient :ruleId— la règle PSRule violée (par exemple,Azure.Resource.UseTags)level— sévérité :error,warningounotemessage.text— description lisible de la violationlocations— le nom et le type de la ressource ayant échoué à la règle
-
Identifiez les résultats. Les identifiants de règles courants pour la gouvernance des coûts incluent :
Identifiant de règle Catégorie Description Azure.Resource.UseTagsÉtiquetage Les ressources doivent avoir des étiquettes Azure.Resource.AllowedRegionsLocalisation Ressources dans une région non approuvée - Comptez le nombre total de résultats. L’application 001 a 3 ressources sans étiquettes, vous devriez donc voir au moins 3 résultats liés à l’étiquetage.

Exercice 2.4 : Analyser l’application 002
Vous allez analyser l’application avec des ressources surdimensionnées et comparer les résultats avec l’application 001.
-
Exécutez PSRule sur l’application 002 :
Invoke-PSRule ` -InputPath finops-demo-app-002/infra/ ` -Module PSRule.Rules.Azure ` -Baseline Azure.GA_2024_12 ` -Option src/config/ps-rule.yaml ` -OutputFormat Sarif ` -OutputPath reports/psrule-002.sarif -
Examinez la sortie console. L’application 002 possède les 7 étiquettes requises, donc les règles d’étiquetage devraient passer.
-
Recherchez les résultats liés au dimensionnement des SKU ou à la gouvernance des niveaux. L’App Service Plan P3v3 et le stockage Premium peuvent déclencher des règles selon la baseline.
-
Comparez le nombre de résultats entre les applications 001 et 002 :
Application Résultats étiquettes Résultats SKU Total 001 Multiples 0 Élevé 002 0 Variable Plus bas

[!TIP] PSRule se concentre principalement sur les bonnes pratiques IaC. Pour l’analyse des coûts en temps réel (dépenses réelles, recommandations de dimensionnement), vous utiliserez Cloud Custodian dans le Lab 04 et Infracost dans le Lab 05.
Exercice 2.5 : Corriger et ré-analyser
Vous allez corriger la violation d’étiquetage dans l’application 001 et observer la réduction des résultats.
-
Ouvrez
finops-demo-app-001/infra/main.bicep. -
Ajoutez une variable
commonTagsaprès les déclarations de paramètres :var commonTags = { CostCenter: 'CC-1234' Owner: 'team@contoso.com' Environment: 'dev' Application: 'finops-demo-001' Department: 'Engineering' Project: 'FinOps-Scanner' ManagedBy: 'Bicep' } -
Ajoutez
tags: commonTagsà chaque ressource. Par exemple, le Storage Account devient :resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = { name: storageAccountName location: location kind: 'StorageV2' sku: { name: 'Standard_LRS' } tags: commonTags } -
Répétez pour les ressources
appServicePlanetwebApp. -
Relancez l’analyse PSRule :
Invoke-PSRule ` -InputPath finops-demo-app-001/infra/ ` -Module PSRule.Rules.Azure ` -Baseline Azure.GA_2024_12 ` -Option src/config/ps-rule.yaml ` -OutputFormat Sarif ` -OutputPath reports/psrule-001-fixed.sarif -
Comparez les nouveaux résultats avec l’analyse initiale. Les résultats d’étiquetage devraient être éliminés.

[!CAUTION] Ne validez pas (commit) le fichier Bicep corrigé si vous souhaitez que la violation reste présente pour les labs suivants. Utilisez
git checkout -- finops-demo-app-001/infra/main.biceppour annuler vos modifications.
Point de vérification
Avant de continuer, vérifiez :
- L’analyse PSRule s’est terminée avec succès sur au moins 2 applications de démonstration
- Les fichiers de sortie SARIF ont été générés dans le répertoire
reports/ - Pouvez expliquer ce que
Azure.Resource.UseTagsdétecte - Avez corrigé avec succès au moins 1 résultat en ajoutant des étiquettes au Bicep
Étapes suivantes
Passez au Lab 03 — Checkov : Analyse statique de politiques.