Cet article fait partie d’une série sur l’adoption de GitHub Advanced Security à grande échelle. Pour l’article précédent de cette série, consultez « Phase 4 : Créer une documentation interne ».
Activation de l’analyse du code
À l’aide des données compilées lors de la Phase 2, vous pouvez commencer à activer GHAS, puis l’code scanning sur vos dépôts, un langage à la fois. Le processus pas à pas pour activer GHAS doit ressembler à ceci :
- Activez GHAS sur le dépôt. Pour plus d’informations, consultez « Gestion des paramètres de sécurité et d’analyse pour votre dépôt ».
- Créez une demande de tirage sur la branche par défaut du référentiel avec un fichier
codeql-analysis.yml
contenant un exemple d’exécution CodeQL pour ce langage. Pour plus d’informations, consultez « Création d’une demande de tirage ». - Créez un problème dans le dépôt pour expliquer pourquoi une demande de tirage a été déclenchée. Le problème que vous créez peut contenir un lien vers la communication précédente envoyée à tous les utilisateurs, mais peut également expliquer les modifications introduites par la demande de tirage, les étapes suivantes que l’équipe doit effectuer, les responsabilités de l’équipe et la façon dont l’équipe doit utiliser l’code scanning. Pour plus d’informations, consultez « Création d’un problème ».
Il existe un outil disponible publiquement, nommé outil ghas-enablement, qui effectue les deux premières étapes. Vous pouvez réexécuter l’outil ghas-enablement dans des lots par langage là où il est logique de le faire. Par exemple, JavaScript, TypeScript, Python et Go ont probablement un processus de build similaire et pourraient donc utiliser un fichier d’analyse CodeQL similaire. L’outil ghas-enablement peut également être utilisé pour des langages tels que Java, C et C++, mais en raison de la nature variée dont ces langages créent et compilent, vous devrez peut-être créer des fichiers d’analyse CodeQL plus ciblés.
Remarque : Si vous envisagez d’utiliser GitHub Actions pour contrôler les données d’code scanning et que vous n’utilisez pas l’outil ghas-enablement, gardez à l’esprit qu’il n’existe aucun accès API au répertoire .github/workflow
. Cela signifie que vous ne pouvez pas créer de script sans client Git sous-jacent à l’automatisation. La solution de contournement consiste à tirer parti d’un script bash sur un ordinateur ou un conteneur qui a un client Git. Le client Git peut pousser et extraire des fichiers dans le répertoire .github/workflows
où se trouve le fichier codeql-analysis.yml
.
Il est important de ne pas simplement pousser le fichier codeql-analysis.yml
vers la branche par défaut du dépôt. L’utilisation d’une demande de tirage implique qu’il est de la responsabilité de l’équipe de développement de passer en revue et de fusionner, ce qui permet à l’équipe de développement d’en apprendre davantage sur l’code scanning et d’impliquer l’équipe dans le processus.
Vous devez capturer les URL des demandes de tirage créées par automatisation, vérifier l’activité chaque semaine et voir celles qui sont fermées. Après quelques semaines, il peut être utile de créer un autre problème ou d’envoyer des e-mails internes si la demande de tirage reste non fusionnée.
Création d’une expertise en matière
Vous pouvez ensuite passer à l’étape suivante de l’activation, qui consiste à créer des experts internes en la matière (ou SME) et à organiser des réunions d’entreprise. L’ouverture de demandes de tirage et de problèmes dans les dépôts permettra probablement de traiter un large pourcentage de votre adoption, mais pas les cas d’usage ponctuels où un processus de génération, un framework ou une bibliothèque spécifique a besoin de l’activation d’indicateurs de fonctionnalités spécifiques. Une approche plus personnalisée et pratique est nécessaire pour encourager une adoption élevée, en particulier pour Java, C et C++.
Il est judicieux de tenir des réunions régulières sur des sujets spécifiques, afin d’éduquer et de discuter du déploiement avec un groupe plus important. Cela est beaucoup plus efficace du point de vue de la gestion du temps pour une entreprise ayant des milliers de dépôts, par rapport à la collaboration avec une équipe à la fois. Les équipes peuvent venir aux sessions qui les concernent. Voici quelques exemples de sessions possibles :
- Code scanning dans un conteneur
- Code scanning et Java Struts
- Code scanning et JSP
Vous pouvez utiliser les données que vous avez collectées sur la distribution des différents langages parmi les dépôts pour créer des réunions ciblées.
Pour l’article suivant de cette série, consultez « Phase 6 : Déployer et mettre à l’échelle l’analyse des secrets ».