0% ont trouvé ce document utile (0 vote)
20 vues364 pages

Ppts Git

git

Transféré par

ibrahim ibn isshaq
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
20 vues364 pages

Ppts Git

git

Transféré par

ibrahim ibn isshaq
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

GitHub Actions : Concepts Avancés

et Sécurité avec GitHub Actions

Anas IDI
Ingénieur DevOps
Formateur

Anas IDI
- Ingénieur SRE et Expert DevOps
- 7 années d'expérience en IT
- Dans différentes multinationales
- En France et Au Maroc
Rappel cursus GitHub Actions
Plan de la formation
§ Introduction
1. Concepts Avancés dans Github Actions
2. Actions Personnalisées, Jobs Parallèles et
Automatisation
3. Intégration et Meilleures Pratiques
4. Sécurité des Workflows dans GitHub Actions
5. Pratiques de Sécurité Avancées et Recommandées
6. Sécurité des Runners et Bonnes Pratiques
§ Conclusion
Public concerné
- Développeurs familiarisés avec
GitHub Actions souhaitant aller plus
loin
- Ingénieurs DevOps voulant
maîtriser la sécurité des workflows
- Toute personne gérant des
pipelines CI/CD dans des
environnements complexes
Connaissances requises
Présentation du projet

Anas IDI
Ingénieur DevOps
Plan

§ Objectif du Lab
§ Technologies et Outils Utilisés
§ Démonstration de l'Espace de
Travail
§ Conseils Pratiques
Objectif du Lab
- Pratiquer les concepts avancés de GitHub Actions : runners,
jobs parallèles, actions personnalisées, workflows réutilisables
- Appliquer les bonnes pratiques pour la sécurisation des
workflows avec GitHub Actions
- Maîtriser la gestion des secrets, l'intégration avec des outils
externes et la surveillance des workflows
- Utiliser des outils de surveillance et d'audit pour assurer la
sécurité des pipelines CI/CD
Présentation des outils

- VS Code : comme IDE principal, avec le plugin Git


intégré
- PowerShell ou Ubuntu (Terminal) : pour l'exécution
des commandes
- YAML : pour la définition des workflows
- GitHub Actions : pour l'automatisation et la
sécurisation des pipelines
Démonstration de l'Espace de
Travail

- Présentation de l'IDE VS Code


- Aperçu de l'intégration Git et du terminal
- Présentation de GitHub Actions et des workflows en
YAML
Créer et Gérer les Runners dans
GitHub Actions

Anas IDI
Expert DevOps et Ingénieur SRE
Plan
§ Introduction aux Runners GitHub Actions
§ Runners Hébergés dans les Workflows
§ Personnalisation des Runners Hébergés
§ Ressources Matérielles des Runners Hébergés
§ Runners Hébergés pour les Répo Privés
§ Limitations des Runners macOS arm64
§ Configuration des Runners Auto-hébergés
Introduction aux Runners
GitHub Actions
Runners GitHub Actions

- Qu'est-ce qu'un runner dans GitHub Actions ?


- Types de runners : hébergés et auto-hébergés
- Rôle des runners dans l'exécution des workflows
Runners Hébergés par GitHub
Utilisation des Runners Hébergés par
GitHub dans les Workflows

Exemple de spécification de runner dans le fichier de workflow


Personnalisation des Runners
Hébergés
- Options de personnalisation pour les runners hébergés
- Possibilité d’utiliser des conteneurs Docker pour personnaliser
l'environnement
Ressources Matérielles des Runners
Hébergés

- Configuration matérielle des runners hébergés


- Runner standard : jusqu’à 2 cœurs de CPU, 7 Go de RAM et
14 Go de stockage SSD
- Adapter les workflows aux capacités des runners
Runners Hébergés pour les
Répertoires Privés

- Avantages en termes de sécurité et de confidentialité


- Configuration des workflows pour les répertoires privés
Limitations des Runners macOS arm64

- Spécificités des runners macOS arm64


- Limitations en termes de disponibilité et d'intégration logicielle
- Considérations pour les workflows utilisant ces runners
Runners Auto Hébérgés
Configuration des Runners Auto-
Hébergés

- Avantage des runners auto-hébergés : contrôle total


sur l'environnement d'exécution
- Considérations de sécurité pour les runners auto-hébergés
Créer un Self Hosted Runner

Anas IDI
Expert DevOps et Ingénieur SRE
Plan

§ Ajout d’un exécuteur auto-


hébergé dans un dépôt
§ Ajout d’un exécuteur auto-
hébergé dans une organisation
Démonstration

Ajout d’un exécuteur


auto-hébergé dans
un dépôt
Démonstration

Ajout d’un exécuteur


auto-hébergé dans
une organisation
Utiliser différents types de runners
dans un workflow

Anas IDI
Expert DevOps et Ingénieur SRE
Plan

§ Ajout d’un exécuteur auto-


hébergé dans un dépôt
§ Ajout d’un exécuteur auto-
hébergé dans une organisation
Démonstration

Ajout d’un exécuteur


auto-hébergé dans
un dépôt
Démonstration

Ajout d’un exécuteur


auto-hébergé dans
une organisation
Gérer les Artifacts et les Logs dans
GitHub Actions

Anass IDI
Expert DevOps et Ingénieur SRE
Plan
§ Les Artifacts dans GitHub Actions
• Création et Conservation des Artifacts
§ Gestion des Logs
• Stratégies de Conservation et d'Analyse
des Logs
Les Artifacts dans GitHub
Actions
Les Artifacts dans GitHub Actions

- Définition des artifacts dans le contexte des workflows


- Exemples de types d'artifacts : binaires, rapports, captures
d'écran
- Importance des artifacts pour les audits et les déploiements
Création et Conservation des Artifacts

- Création d'artifacts via des commandes et des scripts


- Utilisation de actions/upload-artifact pour stocker des artifacts
- Utilisation de actions/download-artifact pour récupérer
des artifacts
- Gestion de la durée de vie et accessibilité des artifacts
Utilisation et Exemple d'Artifact

- Exemple de workflow pour


compiler et archiver une
application
- Interaction entre les jobs de
build et les jobs de
test/déploiement
Gestion des Logs
Gestion des Logs

- Importance de capturer des logs pour le diagnostic et la


résolution des problèmes
- Détail des étapes exécutées et des résultats dans les logs
- Rôles des logs dans la maintenance et l'amélioration des
workflows
Stratégies de Conservation et
d'Analyse des Logs

- Conservation des logs pour répondre aux exigences


de conformité
- Utilisation des outils d'analyse de logs pour optimiser
les performances
- Automatisation de l'extraction des insights à partir des logs
Meilleures Pratiques pour la Gestion
des Artifacts et des Logs

- Établir des politiques claires de rétention des artifacts


et des logs
- Protéger l'accès aux artifacts et logs pour sécuriser
les données sensibles
- Intégration de la gestion des logs dans les systèmes
de surveillance globaux
Partager des artifacts entre
les workflows

Anas IDI
Expert DevOps et Ingénieur SRE
Conclusion
Explorer les environnements dans
github & github actions

Anass IDI
Expert DevOps et Ingénieur SRE
Plan
§ Introduction aux Environnements
§ Création d'un Environnement dans GitHub
§ Utilisation des Environnements dans les
Workflows
§ Variables et Secrets liés aux Environnements
§ Protection des Environnements
§ Exemples Pratiques
Introduction aux
Environnements
- Séparer les phases de déploiement (dev, staging,
production)
- Renforcer la sécurité des déploiements
- Gérer les accès et les permissions
Création d'un Environnement
dans GitHub

- Accéder aux paramètres du dépôt


- Ajouter et nommer un environnement
- Configurer des secrets et variables spécifiques
Utilisation et Exemple d'Artifact

- Associer un job à un
environnement
- Conditionner les déploiements
à un environnement spécifique
- Sécuriser les déploiements
avec des environnements
Variables et Secrets liés aux
Environnements

- Sécuriser les secrets par environnement


- Variables spécifiques pour chaque environnement
- Protection des données sensibles
Protection des Environnements

- Définir des approbations manuelles


- Restreindre les accès à des branches ou utilisateurs
spécifiques
- Contrôler les déploiements critiques
Exemples Pratiques d'Utilisation
des Environnements
- Séparer les déploiements entre dev, staging, prod
- Déployer de manière contrôlée et sécurisée
- Valider les modifications avant la production
Créer des environnements dans
github

Anas IDI
Expert DevOps et Ingénieur SRE
Conclusion
Créer et exécuter un workflow sur
plusieurs environnements

Anas IDI
Expert DevOps et Ingénieur SRE
Conclusion
GitHub Actions : Concepts Avancés
et Sécurité avec GitHub Actions

Anas IDI
Ingénieur DevOps
Formateur

Anas IDI
- Ingénieur SRE et Expert DevOps
- 7 années d'expérience en IT
- Dans différentes multinationales
- En France et Au Maroc
Rappel cursus GitHub Actions
Plan de la formation
§ Introduction
1. Concepts Avancés dans Github Actions
2. Actions Personnalisées, Jobs Parallèles et
Automatisation
3. Intégration et Meilleures Pratiques
4. Sécurité des Workflows dans GitHub Actions
5. Pratiques de Sécurité Avancées et Recommandées
6. Sécurité des Runners et Bonnes Pratiques
§ Conclusion
Public concerné
- Développeurs familiarisés avec
GitHub Actions souhaitant aller plus
loin
- Ingénieurs DevOps voulant
maîtriser la sécurité des workflows
- Toute personne gérant des
pipelines CI/CD dans des
environnements complexes
Connaissances requises
Présentation du projet

Anas IDI
Ingénieur DevOps
Plan

§ Objectif du Lab
§ Technologies et Outils Utilisés
§ Démonstration de l'Espace de
Travail
§ Conseils Pratiques
Objectif du Lab
- Pratiquer les concepts avancés de GitHub Actions : runners,
jobs parallèles, actions personnalisées, workflows réutilisables
- Appliquer les bonnes pratiques pour la sécurisation des
workflows avec GitHub Actions
- Maîtriser la gestion des secrets, l'intégration avec des outils
externes et la surveillance des workflows
- Utiliser des outils de surveillance et d'audit pour assurer la
sécurité des pipelines CI/CD
Présentation des outils

- VS Code : comme IDE principal, avec le plugin Git


intégré
- PowerShell ou Ubuntu (Terminal) : pour l'exécution
des commandes
- YAML : pour la définition des workflows
- GitHub Actions : pour l'automatisation et la
sécurisation des pipelines
Démonstration de l'Espace de
Travail

- Présentation de l'IDE VS Code


- Aperçu de l'intégration Git et du terminal
- Présentation de GitHub Actions et des workflows en
YAML
Créer et Gérer les Runners dans
GitHub Actions

Anas IDI
Expert DevOps et Ingénieur SRE
Plan
§ Introduction aux Runners GitHub Actions
§ Runners Hébergés dans les Workflows
§ Personnalisation des Runners Hébergés
§ Ressources Matérielles des Runners Hébergés
§ Runners Hébergés pour les Répo Privés
§ Limitations des Runners macOS arm64
§ Configuration des Runners Auto-hébergés
Introduction aux Runners
GitHub Actions
Runners GitHub Actions

- Qu'est-ce qu'un runner dans GitHub Actions ?


- Types de runners : hébergés et auto-hébergés
- Rôle des runners dans l'exécution des workflows
Runners Hébergés par GitHub
Utilisation des Runners Hébergés par
GitHub dans les Workflows

Exemple de spécification de runner dans le fichier de workflow


Personnalisation des Runners
Hébergés
- Options de personnalisation pour les runners hébergés
- Possibilité d’utiliser des conteneurs Docker pour personnaliser
l'environnement
Ressources Matérielles des Runners
Hébergés

- Configuration matérielle des runners hébergés


- Runner standard : jusqu’à 2 cœurs de CPU, 7 Go de RAM et
14 Go de stockage SSD
- Adapter les workflows aux capacités des runners
Runners Hébergés pour les
Répertoires Privés

- Avantages en termes de sécurité et de confidentialité


- Configuration des workflows pour les répertoires privés
Limitations des Runners macOS arm64

- Spécificités des runners macOS arm64


- Limitations en termes de disponibilité et d'intégration logicielle
- Considérations pour les workflows utilisant ces runners
Runners Auto Hébérgés
Configuration des Runners Auto-
Hébergés

- Avantage des runners auto-hébergés : contrôle total


sur l'environnement d'exécution
- Considérations de sécurité pour les runners auto-hébergés
Créer un Self Hosted Runner

Anas IDI
Expert DevOps et Ingénieur SRE
Plan

§ Ajout d’un exécuteur auto-


hébergé dans un dépôt
§ Ajout d’un exécuteur auto-
hébergé dans une organisation
Démonstration

Ajout d’un exécuteur


auto-hébergé dans
un dépôt
Démonstration

Ajout d’un exécuteur


auto-hébergé dans
une organisation
Utiliser différents types de runners
dans un workflow

Anas IDI
Expert DevOps et Ingénieur SRE
Plan

§ Ajout d’un exécuteur auto-


hébergé dans un dépôt
§ Ajout d’un exécuteur auto-
hébergé dans une organisation
Démonstration

Ajout d’un exécuteur


auto-hébergé dans
un dépôt
Démonstration

Ajout d’un exécuteur


auto-hébergé dans
une organisation
Gérer les Artifacts et les Logs dans
GitHub Actions

Anass IDI
Expert DevOps et Ingénieur SRE
Plan
§ Les Artifacts dans GitHub Actions
• Création et Conservation des Artifacts
§ Gestion des Logs
• Stratégies de Conservation et d'Analyse
des Logs
Les Artifacts dans GitHub
Actions
Les Artifacts dans GitHub Actions

- Définition des artifacts dans le contexte des workflows


- Exemples de types d'artifacts : binaires, rapports, captures
d'écran
- Importance des artifacts pour les audits et les déploiements
Création et Conservation des Artifacts

- Création d'artifacts via des commandes et des scripts


- Utilisation de actions/upload-artifact pour stocker des artifacts
- Utilisation de actions/download-artifact pour récupérer
des artifacts
- Gestion de la durée de vie et accessibilité des artifacts
Utilisation et Exemple d'Artifact

- Exemple de workflow pour


compiler et archiver une
application
- Interaction entre les jobs de
build et les jobs de
test/déploiement
Gestion des Logs
Gestion des Logs

- Importance de capturer des logs pour le diagnostic et la


résolution des problèmes
- Détail des étapes exécutées et des résultats dans les logs
- Rôles des logs dans la maintenance et l'amélioration des
workflows
Stratégies de Conservation et
d'Analyse des Logs

- Conservation des logs pour répondre aux exigences


de conformité
- Utilisation des outils d'analyse de logs pour optimiser
les performances
- Automatisation de l'extraction des insights à partir des logs
Meilleures Pratiques pour la Gestion
des Artifacts et des Logs

- Établir des politiques claires de rétention des artifacts


et des logs
- Protéger l'accès aux artifacts et logs pour sécuriser
les données sensibles
- Intégration de la gestion des logs dans les systèmes
de surveillance globaux
Partager des artifacts entre
les workflows

Anas IDI
Expert DevOps et Ingénieur SRE
Conclusion
Explorer les environnements dans
github & github actions

Anass IDI
Expert DevOps et Ingénieur SRE
Plan
§ Introduction aux Environnements
§ Création d'un Environnement dans GitHub
§ Utilisation des Environnements dans les
Workflows
§ Variables et Secrets liés aux Environnements
§ Protection des Environnements
§ Exemples Pratiques
Introduction aux
Environnements
- Séparer les phases de déploiement (dev, staging,
production)
- Renforcer la sécurité des déploiements
- Gérer les accès et les permissions
Création d'un Environnement
dans GitHub

- Accéder aux paramètres du dépôt


- Ajouter et nommer un environnement
- Configurer des secrets et variables spécifiques
Utilisation et Exemple d'Artifact

- Associer un job à un
environnement
- Conditionner les déploiements
à un environnement spécifique
- Sécuriser les déploiements
avec des environnements
Variables et Secrets liés aux
Environnements

- Sécuriser les secrets par environnement


- Variables spécifiques pour chaque environnement
- Protection des données sensibles
Protection des Environnements

- Définir des approbations manuelles


- Restreindre les accès à des branches ou utilisateurs
spécifiques
- Contrôler les déploiements critiques
Exemples Pratiques d'Utilisation
des Environnements
- Séparer les déploiements entre dev, staging, prod
- Déployer de manière contrôlée et sécurisée
- Valider les modifications avant la production
Créer des environnements dans
github

Anas IDI
Expert DevOps et Ingénieur SRE
Conclusion
Créer et exécuter un workflow sur
plusieurs environnements

Anas IDI
Expert DevOps et Ingénieur SRE
Conclusion
Mettre en Place des Scripts
pour l'Automatisation

Anas IDI
Expert DevOps et Ingénieur SRE
Conclusion
Scripter pour Automatiser
des Tâches dans GitHub Actions

Anas IDI
Expert DevOps et Ingénieur SRE
Plan
§ Introduction
§ Avantages des Workflows Réutilisables
§ Création d'un Workflow Réutilisable
§ Appel d'un Workflow Réutilisable depuis
un Dépôt
§ Exemples Pratiques de Workflows Bonnes
Pratiques pour les Workflows Réutilisables
Introduction

- Ensemble de jobs et de steps


- Standardisation et simplification
- Utilisation dans plusieurs dépôts
Avantages des Workflows
Réutilisables
- Gain de temps et d'effort
- Maintenance facilitée
- Cohérence à travers les projets
Création d'un Workflow
Réutilisable
- Créer un fichier YAML dans le répertoire .github/workflows
- Utiliser la directive workflow_call
- Définir les inputs et secrets
Appel d'un Workflow
Réutilisable depuis un
Dépôt
- Utiliser uses pour appeler un workflow
- Spécifier le dépôt, le chemin et la version
- Passer les inputs et secrets requis
Exemples Pratiques de
Workflows Réutilisables
Exemples Pratiques

- Workflows de CI/CD standardisés


- Processus de déploiement communs
- Automatisation des vérifications de
sécurité
Bonnes Pratiques pour
les Workflows Réutilisables
- Documenter les workflows et leurs paramètres
- Gérer les versions des workflows réutilisables
- Tester régulièrement les workflows
Mettre en Œuvre des Workflows
Réutilisables

Anas IDI
Expert DevOps et Ingénieur SRE
Conclusion
Expliquer l'utilisation des docker
containers dans les jobs

Anas IDI
Expert DevOps et Ingénieur SRE
Plan
§ Introduction
§ Avantages de l'Utilisation des Docker
Containers dans les Jobs
§ Configuration d'un Job avec un Docker
Container
§ Exécution de Jobs dans des Containers
Personnalisés
§ Exemples Pratiques
§ Bonnes Pratiques
Introduction

- Docker pour des environnements isolés


- Standardisation des builds et tests
- Reproductibilité accrue
Avantages de l'Utilisation
des Docker Containers
dans les Jobs
- Environnements cohérents et standardisés
- Gestion simplifiée des dépendances
- Sécurité et isolation des processus
Configuration d'un Job
avec un Docker Container
- Utiliser container dans le fichier YAML
- Spécifier l'image Docker à utiliser
- Définir les options de container
Exécution de Jobs dans
des Containers Personnalisés
- Créer une image Docker personnalisée
- Utiliser l'image Docker dans les jobs
- Partager des images Docker via des registres
Exemples Pratiques d'Utilisation
des Docker Containers
Exemples Pratiques
- Build et tests multi-environnements
- Déploiements containerisés
- Pipelines CI/CD complexes
Bonnes Pratiques pour
l'Utilisation des Docker
Containers
- Optimiser les images Docker pour CI/CD
- Utiliser des versions d'images fixes
- Scanner les images pour les vulnérabilités
Mettre en œuvre un docker
containers dans les jobs

Anas IDI
Expert DevOps et Ingénieur SRE
Conclusion
Intégrer Github Actions avec
des outils externes

Anas IDI
Expert DevOps et Ingénieur SRE
Plan
§ Exemples d'Outils Externes pour
l'Intégration
§ Configuration de Base pour
l'Intégration
§ Intégration avec Slack
§ Intégration avec JIRA
§ Intégration avec Azure
Avantages de l'Utilisation
des Docker Containers
dans les Jobs
- Systèmes de gestion d'incidents : JIRA,
ServiceNow
- Outils d'analyse de code : SonarQube,
CodeClimate
- Plateformes de monitoring : Datadog,
New Relic
- Solutions de déploiement cloud : AWS,
Azure, Google Cloud
Configuration de Base
pour l'Intégration
Étapes clés pour configurer des intégrations
- Utilisation de secrets pour sécuriser les clés API
- Définition de webhooks et d'actions personnalisées
- Utilisation de conditions et de filtres pour des
déclencheurs spécifiques
Intégration avec Slack
- Création d'une application Slack et obtention d'un
Webhook URL"
- Configurer le secret dans GitHub Actions
- Envoyer des notifications depuis un workflow
Intégration avec JIRA
- Utilisation des API JIRA pour créer et mettre à jour des tickets
- Stocker les informations d'authentification comme secrets
- Exemple d'utilisation pour créer des tickets basés sur des
événements de push
Intégration avec Azure
- Configurer les secrets Azure dans GitHub
- Utiliser l'action Azure pour déployer des applications
- Exemple de workflow pour déployer une application web
Réagir aux Événements
Externes
- Déclencher des workflows en réponse à des événements
externes via l’API
• repositoy_dispatch
• workflow_dispatch
Démontrer l'Intégration avec
des Outils Externes

Anas IDI
Expert DevOps et Ingénieur SRE
Conclusion
Mettre en œuvre un docker
containers dans les jobs

Anas IDI
Expert DevOps et Ingénieur SRE
Plan
§ Introduction
§ Structurer les Workflows pour la Lisibilité
et la Maintenance
§ Optimiser les Exécutions de Workflows
§ Sécuriser les Workflows et Gérer les
Secrets
§ Exemples de Meilleures Pratiques
Introduction

- Importance de la standardisation
- Optimisation des ressources CI/CD
- Réduction des erreurs et des vulnérabilités
Structurer les Workflows
pour la Lisibilité
et la Maintenance
- Utiliser des noms de jobs et steps clairs
- Modulariser avec des workflows réutilisables
- Documenter les workflows avec des commentaires
Optimiser les Exécutions
de Workflows
- Utiliser la mise en cache pour accélérer les builds
- Éviter les exécutions inutiles avec des conditions (if)
- Tirer parti des jobs parallèles
Sécuriser les Workflows
et Gérer les Secrets
- Utiliser GitHub Secrets pour stocker des informations sensibles
- Restreindre les permissions des tokens GitHub
- Surveiller les actions de tiers pour des vulnérabilités
Exemples de Meilleures
Pratiques
- Utiliser des versions spécifiques d'actions
- Limiter la durée d'exécution des jobs (timeout-minutes)
- Utiliser des runners auto-hébergés pour des besoins spécifiques
Identifier le rôle des variables et des
secrets dans GitHub Actions

Anas IDI
Expert DevOps et Ingénieur SRE
Plan
§ Introduction
§ Les Niveaux des Variables dans GitHub
Actions
§ Utiliser les Variables dans GitHub Actions
§ Sécuriser l'Utilisation des Secrets dans les
Workflows
§ Renforcer la Sécurité des Secrets
§ Exemple Pratique
Introduction

- Variables : stocker et réutiliser des données dans un workflow.


- Secrets : protéger les informations sensibles.
- Variables et secrets définis au niveau de l'organisation, du
dépôt, et de l'environnement.
Les Niveaux des Variables
dans GitHub Actions
- Organisation : disponible pour tous les dépôts.
- Dépôt : accessible à tous les workflows du dépôt.
- Environnement : spécifique à un environnement (production,
staging).
Utiliser les Variables
dans GitHub Actions
- Variables définies globalement accessibles via
${{ vars.<variable_name> }}
- Variables d'environnement définies localement via
${{ env.<variable_name> }}
- Exemples d'utilisation des deux types de variables.
Sécuriser l'Utilisation des
Secrets dans les
Workflows
- Secrets toujours masqués dans les logs.
- Ne jamais exposer les secrets dans des commandes shell.
- Restreindre l'accès aux secrets selon les branches ou
environnements.
Renforcer la Sécurité
des Secrets
- Secrets spécifiques aux environnements (e.g., production,
staging).
- Utiliser des approbations manuelles pour des environnements
critiques.
- Sécuriser les runners auto-hébergés.
Exemple Pratique
- Utilisation d'une variable pour configurer un environnement.
- Exemple de secret pour un appel API sécurisé.
- Variables et secrets spécifiques à l'environnement.
Configurer et Gérer les Secrets dans
GitHub Actions

Anas IDI
Expert DevOps et Ingénieur SRE
Explorer l'authentification par jeton
automatique

Anas IDI
Expert DevOps et Ingénieur SRE
Plan
§ Introduction
§ Fonctionnement de GITHUB_TOKEN
§ Permissions par Défaut de GITHUB_TOKEN
§ Exemple d'Utilisation de GITHUB_TOKEN
§ Contrôler les Permissions du GITHUB_TOKEN
§ Exemple d'Appel à l'API GitHub
§ Meilleures Pratiques
Introduction

- GitHub Actions génère un jeton automatiquement.


GITHUB_TOKEN
- Utilisation pour authentifier les actions sans configuration
supplémentaire.
- Utilisé pour les opérations GitHub sécurisées.
Fonctionnement
de GITHUB_TOKEN
- Généré automatiquement pour chaque workflow.
- Masqué dans les logs et sécurisé.
- Utilisé pour authentifier les actions GitHub.
Permissions par Défaut
de GITHUB_TOKEN
- Permissions par défaut : lecture et écriture dans le dépôt.
- Peut être limité ou étendu.
- Utilisé pour : commits, pull requests, commentaires, etc.
Exemple d'Utilisation
de GITHUB_TOKEN
Contrôler les Permissions
du GITHUB_TOKEN
- Personnalisation des permissions du jeton.
- Utilisation de permissions pour spécifier les
autorisations.
- Limiter ou étendre les actions possibles.
Exemple d'Appel à l'API GitHub
avec GITHUB_TOKEN
- Appel API GitHub authentifié avec GITHUB_TOKEN.
- Exemple d'utilisation pour récupérer des informations sur un
dépôt.
Meilleures Pratiques pour
Utiliser le GITHUB_TOKEN
- Limiter les permissions autant que possible.
- Utiliser le jeton uniquement pour des opérations nécessaires.
- Ne jamais exposer le jeton dans les logs.
Utiliser GITHUB_TOKEN pour
l'Authentification

Anas IDI
Expert DevOps et Ingénieur SRE
Affecter des autorisations aux
travaux

Anas IDI
Expert DevOps et Ingénieur SRE
Plan
§ Introduction
§ Contrôler les Autorisations avec permissions
§ Exemple de Permissions dans un Workflow
§ Affecter des Permissions Différentes à Chaque
Job
§ Permissions Granulaires dans GitHub Actions
§ Exiger des Approbations Manuelles pour les
Permissions Sensibles
Introduction

- GITHUB_TOKEN : par défaut, permissions larges.


- Importance d'ajuster les autorisations pour chaque job.
- Personnalisation pour plus de sécurité.
Contrôler les Autorisations
avec permissions
- Utilisation de permissions dans les workflows.
- Limiter les autorisations pour chaque workflow ou job.
- Options : read, write, ou none.
Exemple de Permissions
dans un Workflow
- Permissions spécifiques pour un job.
- Restriction des accès en lecture seule.
- Autorisation en écriture uniquement pour les pull requests.
Affecter des Permissions
Différentes à Chaque Job
- Attribuer des autorisations spécifiques pour chaque job.
- Différentes autorisations pour chaque étape du pipeline.
- Flexibilité selon les besoins.
Permissions Granulaires
dans GitHub Actions
- Contrôler les accès à différents aspects : issues, packages,
workflows, etc.
- Limiter les accès aux ressources spécifiques.
- Exemple : restrictions sur les packages.
Exemple d'Appel à l'API GitHub
avec GITHUB_TOKEN
- Appel API GitHub authentifié avec GITHUB_TOKEN.
- Exemple d'utilisation pour récupérer des informations sur un
dépôt.
Exiger des Approbations
Manuelles
pour les Permissions Sensibles
- Utiliser des approbations manuelles pour les workflows
critiques.
- Valider manuellement avant d'autoriser des actions
sensibles.
- Recommandé pour les environnements de production.
Configurer les Permissions pour les
Jobs

Anas IDI
Expert DevOps et Ingénieur SRE
Superviser les modifications des
workflows GitHub Actions

Anas IDI
Expert DevOps et Ingénieur SRE
Plan
§ Introduction
§ GitHub Actions Audit Log
§ Suivi des Changements dans les Fichiers
Workflows
§ Auditer les Modifications des Secrets et des
Permissions
§ Réagir aux Modifications Suspectes
Introduction

- Importance de surveiller les changements dans les workflows.


- Prévenir les modifications non autorisées.
- Protéger les secrets et les permissions sensibles.
GitHub Actions Audit Log
- Le GitHub Audit Log enregistre toutes les modifications
administratives.
- Historique des actions sur les workflows, secrets et permissions.
- Surveillance proactive des changements critiques.
Suivi des Changements dans
les Fichiers Workflows
- Suivre l'historique des modifications dans les fichiers de workflow.
- Détecter les changements non autorisés dans les actions et
permissions.
- Importance des révisions et des revues de code.
Auditer les Modifications
des Secrets et des
Permissions
- Changements des secrets et permissions dans les workflows.
- Suivi des ajouts, suppressions, ou modifications.
- Audit des accès aux secrets sensibles.
Réagir aux Modifications
Suspectes
- Alertes en cas de modification suspecte.
- Mise en place de mécanismes d'approbation des changements.
- Révocation des accès et des jetons compromis.
Mettre en Place la Surveillance et
l'Audit des Workflows

Anas IDI
Expert DevOps et Ingénieur SRE
Examiner le risque d'injections
de scripts

Anas IDI
Expert DevOps et Ingénieur SRE
Plan
§ Introduction
§ Exemple de Risque d'Injection de Script
§ Utilisation d'une Action au Lieu d'un Script Inline
§ Utilisation d'une Variable d'Environnement Intermédiaire
§ Utilisation des Modèles de Workflow pour l'Analyse de
Code
§ Restriction des Autorisations pour les Jetons
§ Gestion des Autorisations pour les Paramètres GitHub
Actions
Introduction

- Risques d'injections de scripts dans GitHub Actions.


- Importance de sécuriser les workflows.
- Prévention des attaques par injection.
Exemple de Risque d'Injection
de Script
- Exemple : injection via des variables d'entrée.
- Utilisation non sécurisée des commandes shell.
- Commande comme $(rm -rf /)
Utilisation d'une Action
au Lieu d'un Script Inline
- Utiliser des actions JavaScript au lieu des scripts inline.
- Les actions JavaScript ne génèrent pas de commandes
shell vulnérables.
- Transmettre des valeurs en tant qu'arguments sécurisés.
Utilisation d'une Variable
d'Environnement
Intermédiaire
- Définir des valeurs dans des variables d'environnement
intermédiaires.
- Éviter l'injection directe dans les scripts shell.
- Meilleure gestion des entrées non approuvées.
Utilisation des Modèles
de Workflow pour l'Analyse
de Code
- Utilisation des workflows d'analyse de code pour détecter les
vulnérabilités.
- GitHub propose des modèles de workflows pour la sécurité.
- CodeQL pour l'analyse statique de sécurité.
Restriction des Autorisations
pour les Jetons
- Limiter les permissions du GITHUB_TOKEN.
- Principe du privilège minimum pour limiter les risques.
- Utiliser des permissions granulaires.
Gestion des Autorisations pour
les Paramètres GitHub Actions
- Gérer les autorisations d'organisation pour GitHub Actions.
- Accorder uniquement les droits nécessaires.
- Rôles personnalisés pour limiter les privilèges.
Appliquer des Techniques
de Mitigation pour les Injections
de Scripts
Anas IDI
Expert DevOps et Ingénieur SRE
Identifier le role d'OpenID Connect
dans la sécurité

Anas IDI
Expert DevOps et Ingénieur SRE
Plan
§ Introduction
§ Pourquoi Utiliser OpenID Connect ?
§ Fonctionnement d'OpenID Connect dans GitHub
Actions
§ Comparaison entre Secrets Statiques et OpenID
Connect
§ Configuration d'OpenID Connect pour AWS
§ Cas d'Utilisation avec Azure et Google Cloud
Introduction

- OpenID Connect pour l'authentification dans GitHub Actions.


- Authentification sécurisée sans secrets statiques.
- Interaction entre GitHub Actions et les fournisseurs de cloud.
Pourquoi Utiliser OpenID
Connect ?
- Remplacer les secrets statiques.
- Jetons à durée limitée et jetons non persistants.
- Réduction des risques de fuite de secrets.

- Sécurité accrue avec des jetons d'accès temporaires.


- Simplification de la gestion des secrets.
- Réduction des risques liés à la fuite de secrets.
Fonctionnement d'OpenID
Connect dans GitHub Actions
- Utilisation d'OIDC pour générer des jetons d'accès.
- Émission et validation des jetons OIDC par les fournisseurs
de cloud.
- Processus d'authentification sécurisé.
Comparaison entre
Secrets Statiques et
OpenID Connect
- Secrets statiques : risque de fuite et persistance.
- OIDC : jetons temporaires et moins de risque de
compromission.
- Avantages en termes de sécurité.
Configuration d'OpenID
Connect pour AWS
- Étapes pour configurer OpenID Connect avec AWS.
- Exemple de configuration dans un workflow GitHub Actions.
- Créer une stratégie d'approbation pour AWS.
Cas d'Utilisation avec Azure
et Google Cloud
- Support d'OIDC avec Azure et Google Cloud.
- Authentification basée sur OIDC pour des services cloud
multiples.
- Réduction des frais de gestion des secrets.
Utiliser OpenID Connect pour
Renforcer la sécurité

Anas IDI
Expert DevOps et Ingénieur SRE
Atténuer le risque de l'utilisation des
actions et workflows tierces

Anas IDI
Expert DevOps et Ingénieur SRE
Plan
§ Introduction
§ Impact d'une Compromission d'Action Tierce
§ Épingler des Actions à un SHA de Commit
§ Auditer le Code Source des Actions Tierces
§ Épingler des Actions à une Balise avec Précaution
§ Recommandations pour Sécuriser l'Utilisation des
Actions et Workflows Tierces
Introduction

- Risques liés à l'utilisation d'actions tierces.


- Compromission potentielle de secrets et de GITHUB_TOKEN.
- Importance de la gestion sécurisée des actions externes.
Impact d'une Compromission
d'Action Tierce
- Compromission d'une action peut affecter l'ensemble du
workflow.
- Accès aux secrets et à GITHUB_TOKEN.
- Risques de manipulation des fichiers partagés ou des
conteneurs.
Épingler des Actions
à un SHA de Commit
- Épinglage à un SHA de commit pour la sécurité.
- SHA : méthode immuable pour garantir l'intégrité.
- Vérifier l'origine du SHA dans le dépôt de l'action.
Auditer le Code Source
des Actions Tierces
- Importance d'auditer le code source des actions.
- Vérification de la gestion des secrets et des données sensibles.
- Prévenir l'envoi de secrets à des hôtes involontaires.
Épingler des Actions à une
Balise avec Précaution
- Épinglage à une balise pour plus de flexibilité.
- Faire confiance aux créateurs des actions.
- Risques associés à l'épinglage à une balise.
Réutilisation des Workflows
Tiers
- Même principes que pour les actions tierces.
- Atténuer les risques en suivant les bonnes pratiques.
- Auditer les workflows tiers avant utilisation.
Recommandations pour
Sécuriser l'Utilisation des
Actions et Workflows Tierces
- Épingler à des SHAs de commit.
- Auditer les actions et workflows avant utilisation.
- Privilégier les actions des créateurs vérifiés.
- Limiter l'utilisation de secrets et de GITHUB_TOKEN.
Mettre en Œuvre les Meilleures
Pratiques pour Utiliser des Actions
Tierces
Anas IDI
Expert DevOps et Ingénieur SRE
Maintenir les actions à jour

Anas IDI
Expert DevOps et Ingénieur SRE
Plan
§ Introduction
§ Avantages de l’utilisation de Dependabot pour
la Mise à Jour des Actions
§ Configurer Dependabot pour les Actions GitHub
§ Exemple de PR Automatique par Dependabot
§ Mises à Jour de Sécurité avec Dependabot
§ Superviser et Valider les Mises à Jour
Introduction

- Importance des mises à jour régulières des actions.


- Atténuation des risques de sécurité.
- Optimisation des performances et des fonctionnalités.
Avantages de l’utilisation de
Dependabot pour la Mise
à Jour des Actions
- Dependabot : outil automatique de mise à jour.
- Vérification des versions obsolètes des actions.
- Création de pull requests automatiques pour les mises à
jour.

- Maintien automatique des actions à jour.


- Réduction des risques liés aux vulnérabilités.
- Moins d'efforts manuels pour la gestion des dépendances.
Configurer Dependabot
pour les Actions GitHub
- Fichier de configuration .github/[Link]
- Configuration des paramètres de mise à jour automatique des
actions.
- Création de PR automatiques.
Exemple de PR
Automatique par
Dependabot
- Exemple de PR automatique générée par Dependabot.
- Mise à jour des actions avec la dernière version.
- Processus de validation et de merge.
Mises à Jour de Sécurité
avec Dependabot
- Mises à jour de sécurité prioritaires.
- Détection des vulnérabilités dans les actions.
- Corrections automatiques via des PRs.
Superviser et Valider
les Mises à Jour
- Validation automatique des PRs.
- Exécution des workflows de test.
- Merge des PRs après validation.
Mettre à Jour et Sécuriser les Actions

Anas IDI
Expert DevOps et Ingénieur SRE
Utiliser OpenSSF Scorecards pour
sécuriser les workflows

Anas IDI
Expert DevOps et Ingénieur SRE
Plan
§ Introduction
§ Fonctionnement et avantages de l'Action
Scorecards
§ Intégration de Scorecards dans un Workflow
GitHub Actions
§ Vérifications de Sécurité Réalisées par
Scorecards
§ Résultats des Analyses et Actions Correctives
Introduction à OpenSSF
Scorecards
- Outil de sécurité automatisé pour la chaîne
d'approvisionnement.
- Évaluation des pratiques de sécurité dans vos workflows.
- Alerte sur les risques potentiels.
Fonctionnement et avantages
de l'Action Scorecards
- Analyse des workflows lors des modifications du dépôt.
- Suivi des pratiques de sécurité via l'expérience de code
scanning.
- Exécution automatique et alertes sur les pratiques risquées.

- Surveillance proactive des failles de sécurité.


- Intégration automatique avec GitHub Actions.
- Amélioration continue des pratiques de sécurité.
Intégration de Scorecards
dans un Workflow
GitHub Actions
- Intégration facile avec GitHub Actions.
- Exemple de configuration d'un workflow avec Scorecards.
- Surveillance continue de la sécurité des workflows.
Vérifications de Sécurité
Réalisées par Scorecards
- Injection de script.
- Jetons et autorisations de sécurité.
- Épinglage des actions à des SHAs.
Résultats des Analyses
et Actions Correctives
- Résultats sous forme de rapport SARIF.
- Alerte sur les pratiques de sécurité risquées.
- Propositions d'actions correctives.
Appliquer OpenSSF Scorecards
pour la Sécurité des Workflows

Anas IDI
Expert DevOps et Ingénieur SRE
Activer la Surveillance et le Reporting

Anas IDI
Expert DevOps et Ingénieur SRE
Plan
§ Introduction
§ Utiliser les Logs GitHub Actions pour Suivre
les Jobs
§ Notifications et Rapports Automatiques
§ Intégration avec GitHub Security Dashboard
§ Reporting et Audit des Logs de Sécurité
Introduction

- Importance de la surveillance continue dans GitHub Actions.


- Réduction des risques d'erreurs et d'incidents de sécurité.
- Suivi et correction des vulnérabilités.
Les Logs GitHub Actions
pour Suivre les Jobs
- Les logs capturent les détails de chaque job.
- Surveillance des échecs et des anomalies dans les jobs.
- Analyse des logs pour diagnostiquer les problèmes.
Notifications et Rapports
Automatiques
- Configurer des notifications pour les erreurs et les incidents.
- Recevoir des rapports réguliers de sécurité et de
performance.
- Utilisation d'intégrations externes (Slack, Teams, Email).
Reporting et Audit des
Logs de Sécurité
- Utilisation des logs d'exécution pour suivre les événements
de sécurité.
- Audits réguliers des journaux d'exécution et des workflows.
- Historique des événements pour analyser les incidents
passés.
Résultats des Analyses
et Actions Correctives
- Résultats sous forme de rapport SARIF.
- Alerte sur les pratiques de sécurité risquées.
- Propositions d'actions correctives.
Configurer des Notifications et
Générer des Rapports d'Exécution

Anas IDI
Expert DevOps et Ingénieur SRE
Évaluer l'Impact potentiel d'un
exécuteur compromis

Anas IDI
Expert DevOps et Ingénieur SRE
Plan
§ Introduction
§ Accès aux Secrets via un Exécuteur
Compromis
§ Exfiltration des Données depuis un Exécuteur
§ Vol du GITHUB_TOKEN et Exploitation
§ Modification du Contenu d'un Dépôt
Introduction

- Exécuteur ou Runner : Machine où les workflows s’écutent


- Risques potentiels liés à un exécuteur compromis.
- Importance de protéger les secrets et les jetons.
Accès aux Secrets via
un Exécuteur Compromis
- Secrets dans les workflows : GITHUB_TOKEN et secrets
utilisateur.
- Accès à l'environnement via printenv.
- Utilisation des secrets dans des expressions.
Exfiltration des Données
depuis un Exécuteur
- Exfiltration des secrets via les logs ou des requêtes HTTP.
- Obfuscation des secrets dans les logs.
- Envoi de données sensibles à des serveurs externes.
Vol du GITHUB_TOKEN et
Exploitation
- Le GITHUB_TOKEN est généré automatiquement pour
chaque workflow.
- Expiration automatique du jeton après utilisation.
- Attaque automatisée pour voler et utiliser le
GITHUB_TOKEN avant son expiration.
Modification du Contenu
d'un Dépôt
- Utilisation de l'API GitHub pour modifier des fichiers.
- Publier des versions malveillantes.
- Impact sur la sécurité et la stabilité des projets.
Analyser les Risques et
Conséquences d'un Exécuteur
Compromis
Anas IDI
Expert DevOps et Ingénieur SRE
Renforcer la sécurité des runners

Anas IDI
Expert DevOps et Ingénieur SRE
Plan
§ Introduction
§ Sécurisation pour les Exécuteurs Hébergés
GitHub
§ Sécurisation des Exécuteurs Auto-hébergés
§ Utilisation des Exécuteurs Éphémères Juste-à-
Temps (JIT)
§ Meilleures Pratiques pour les Exécuteurs Auto-
hébergés
Introduction

- Importance de la sécurité des runners.


- Risques liés à un runner compromis.
- Différences entre exécuteurs auto-hébergés et hébergés par
GitHub.
Sécurisation pour les
Exécuteurs Hébergés GitHub
- Utilisation d'images gérées par GitHub.
- Accès à la nomenclature logicielle (SBOM).
- Refus d'accès aux hôtes malveillants.
Sécurisation des Exécuteurs
Auto-hébergés
- Risques de compromission permanente.
- Limitation de l'accès aux secrets et permissions.
- Regrouper les exécuteurs pour limiter l'impact d'une
compromission.
Utilisation des Exécuteurs
Éphémères Juste-à-Temps
(JIT)
- Exécuteurs JIT (Just-in-time).
- Éviter les risques de compromission persistante.
- Utilisation de l'API REST pour créer des exécuteurs
éphémères.
Meilleures Pratiques pour
les Exécuteurs Auto-hébergés
- Limiter l'accès réseau et aux services sensibles.
- Supprimer les exécuteurs après chaque travail.
- Vérifier les environnements pour garantir qu'ils sont
propres.
Implémenter des Meilleures Pratiques
pour Sécuriser les Runners
Self-Hosted

Anas IDI
Expert DevOps et Ingénieur SRE
Découvrir d'autres Bonnes pratiques
de sécurité

Anas IDI
Expert DevOps et Ingénieur SRE
Plan
§ Introduction
§ Utilisation de CODEOWNERS pour Superviser
les Modifications
§ Gestion des Autorisations dans GitHub Actions
§ Autorisation de l’Accès aux Dépôts Privés
§ Empêcher les Workflows de Créer ou
d’Approuver des Pull Requests
§ Prise en Compte de l’Accès entre Dépôts
Introduction

- Importance du durcissement de la sécurité dans GitHub Actions.


- Protéger les workflows et les secrets.
- Utilisation des meilleures pratiques pour minimiser les risques.
Utilisation de CODEOWNERS
pour Superviser les
Modifications
- CODEOWNERS pour contrôler les modifications des
workflows.
- Exiger des approbations avant de fusionner des modifications.
- Protéger les fichiers de workflow sensibles.
Gestion des Autorisations
dans GitHub Actions
- Principe du privilège minimum pour les rôles.
- Autorisations spécifiques pour gérer les actions et les secrets.
- Contrôle d’accès pour les exécuteurs auto-hébergés.
Autorisation de l’Accès
aux Dépôts Privés
- Risques liés à l’accès indirect aux dépôts privés.
- Jeton d’installation délimité pour les workflows.
- Contrôle des journaux de workflow.
Empêcher les Workflows de
Créer ou d’Approuver des
Pull Requests
- Risque d’automatisation non supervisée pour les pull
requests.
- Paramètres pour empêcher les workflows
d'approuver des PRs.
- Réduire le risque de fusions non sécurisées.
Prise en Compte de l’Accès
entre Dépôts
- GITHUB_TOKEN et accès restreint aux dépôts.
- Utilisation sécurisée des clés de déploiement et des jetons
GitHub Apps.
- Éviter les tokens d'accès personnel (classic).
Mettre en Œuvre des Bonnes
Pratiques de Sécurité Globales pour
les Workflows

Anas IDI
Expert DevOps et Ingénieur SRE
Conclusion

Anas IDI
Ingénieur DevOps
Bilan

- Concepts avancés de GitHub Actions


- Automatisation, intégration et sécurité
- Bonnes pratiques pour des workflows
robustes
Points clés
Concepts Avancés et
Intégration
- Gestion des runners auto-hébergés et hébergés
- Exécution de jobs sur différents environnements et runners
- Partage d'artifacts et logs entre workflows
- Intégration d'outils externes (Slack, Jira, etc.)
Automatisation et Sécurisation

- Création et utilisation d'actions personnalisées


- Configuration des jobs parallèles et du matrix strategy
- Gestion des secrets et permissions dans les workflows
- Implémentation des meilleures pratiques de sécurité (injection
de scripts, authentification par OpenID Connect)
Sécurisation des Runners et
Meilleures Pratiques
- Renforcement de la sécurité des runners auto-hébergés
- Meilleures pratiques pour utiliser des actions tierces
- Configuration des notifications et audits
- Mise à jour et surveillance des actions avec Dependabot
Prochaine formation

Vous aimerez peut-être aussi