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 1 : Aligner sur votre stratégie de déploiement et vos objectifs ».
Préparation de l’activation de l’code scanning
Code scanning es une fonctionnalité que vous utilisez pour analyser le code dans un dépôt GitHub afin de détecter d’éventuelles vulnérabilités de sécurité et erreurs de codage. Tous les problèmes identifiés par l’analyse sont énumérés dans votre référentiel. Pour plus d’informations, consultez « À propos de l’analyse du code ».
Le déploiement de l’code scanning sur des centaines de dépôts peut être difficile, en particulier lorsque le déploiement est effectué de manière inefficace. Le suivi de ces étapes garantit que votre déploiement est efficace et réussi. Dans le cadre de votre préparation, vous allez travailler avec vos équipes, utiliser l’automatisation pour collecter des données sur vos référentiels et activer code scanning.
Préparation des équipes pour l’code scanning
Tout d’abord, préparez vos équipes à utiliser l’code scanning. Plus le nombre d’équipes utilisant l’code scanning sera élevé, plus vous aurez de données pour générer des plans de correction et superviser la progression de votre déploiement. Au cours de cette phase, vous devez vous concentrer sur l’utilisation des API et l’exécution d’événements d’activation interne.
Votre objectif principal doit être de préparer le plus d’équipes à utiliser l’code scanning qu’il est possible. Vous pouvez également encourager les équipes à apporter des corrections appropriées, mais nous vous recommandons de privilégier l’activation et l’utilisation de l’code scanning par rapport à la résolution des problèmes au cours de cette phase.
Collecte d’informations sur vos dépôts
Vous pouvez collecter par programmation des informations sur les différents langages de programmation utilisés dans vos dépôts, et utiliser ces données pour activer l’code scanning sur tous les dépôts qui utilisent le même langage, à l’aide de l’API GraphQL de GitHub Enterprise Server.
Remarque : Pour collecter ces données sans exécuter manuellement les requêtes GraphQL décrites dans cet article, vous pouvez utiliser notre outil disponible publiquement. Pour plus d’informations, consultez le dépôt sur l’outil ghas-enablement.
Si vous souhaitez collecter des informations à partir de dépôts appartenant à plusieurs organisations de votre entreprise, vous pouvez utiliser la requête ci-dessous pour obtenir les noms de vos organisations, puis les alimenter dans la requête de dépôt. Remplacez OCTO-ENTERPRISE par le nom de votre entreprise.
query {
enterprise(slug: "OCTO-ENTERPRISE") {
organizations(first: 100) {
totalCount
nodes {
name
}
pageInfo {
endCursor
hasNextPage
}
}
}
}
Vous pouvez identifier quels dépôts utilisent quels langages en regroupant les dépôts par langage au niveau de l’organisation. Vous pouvez modifier l’exemple de requête GraphQL ci-dessous, en remplaçant OCTO-ORG par le nom de l’organisation.
query {
organization(login: "OCTO-ORG") {
repositories(first: 100) {
totalCount
nodes {
nameWithOwner
languages(first: 100) {
totalCount
nodes {
name
}
}
}
pageInfo {
endCursor
hasNextPage
}
}
}
}
Pour plus d’informations sur l’exécution de requêtes GraphQL, consultez « Formation d’appels avec GraphQL ».
Ensuite, convertissez les données de la requête GraphQL en un format lisible, tel qu’une table.
Langage | Nombre de dépôts | Noms des dépôts |
---|---|---|
JavaScript (TypeScript) | 4212 | org/repo org/repo |
Python | 2012 | org/repo org/repo |
Go | 983 | org/repo org/repo |
Java | 412 | org/repo org/repo |
Swift | 111 | org/repo org/repo |
Kotlin | 82 | org/repo org/repo |
C | 12 | org/repo org/repo |
Vous pouvez filtrer les langages qui ne sont actuellement pas pris en charge par GitHub Advanced Security afin de les exclure de ce tableau.
Si vous avez des dépôts avec plusieurs langages, vous pouvez mettre en forme les résultats GraphQL comme indiqué dans le tableau ci-dessous. Filtrez les langages qui ne sont pas pris en charge, mais conservez tous les dépôts avec au moins un langage pris en charge. Vous pouvez activer l’code scanning sur ces dépôts, et tous les langages pris en charge seront analysés.
Langue(s) | Nombre de dépôts | Noms des dépôts |
---|---|---|
JavaScript/Python/Go | 16 | org/repo org/repo |
Rust/TypeScript/Python | 12 | org/repo org/repo |
Savoir quels dépôts utilisent quels langages vous aidera à identifier les dépôts candidats pour les programmes pilotes lors de la phase 3, et vous préparera à activer l’code scanning dans tous les dépôts, un langage à la fois, lors de la phase 5.
Activation de l’code scanning pour votre appliance
Avant de pouvoir poursuivre les programmes pilotes et déployer l’code scanning dans votre entreprise, vous devez d’abord activer l’code scanning pour votre appliance. Pour plus d’informations, consultez « Configuration de l’analyse de code pour votre appliance ».
Préparation de l’activation de l’secret scanning
Remarque : lorsqu’un secret est détecté dans un référentiel qui a activé secret scanning, GitHub alerte tous les utilisateurs ayant accès aux alertes de sécurité pour le référentiel.
Si un projet communique avec un service externe, il se peut qu’il utilise un jeton ou une clé privée pour l’authentification. Si vous archivez un secret dans un dépôt, toute personne disposant d’un accès en lecture au dépôt peut l’utiliser pour accéder au service externe avec vos privilèges. L’Secret scanning analysera l’intégralité de votre historique Git sur toutes les branches présentes dans vos dépôts GitHub pour les secrets, et vous avertira ou bloquera la poussée contenant le secret. Pour plus d’informations, consultez « À propos de l’analyse des secrets ».
Considérations lors de l’activation de l’secret scanning
La fonctionnalité d’secret scanning de GitHub Enterprise Server est légèrement différente de l’code scanning car elle ne nécessite aucune configuration spécifique par langage de programmation ou par référentiel, et moins de configuration globale pour commencer. Cela signifie que l’activation de l’ secret scanning au niveau de l’organisation peut être simple, mais le fait de cliquer sur Activer tout au niveau de l’organisation et de cocher l’option Activer automatiquement l’secret scanning pour chaque nouveau référentiel a des effets en aval que vous devez connaître :
Consommation de licence
L’activation de secret scanning pour tous les référentiels optimise votre utilisation des licences GitHub Advanced Security. C’est une bonne chose si vous avez suffisamment de licences pour les committers actuels de tous ces référentiels. Si le nombre de développeurs actifs est susceptible d’augmenter au cours des prochains mois, vous risquez de dépasser votre limite de licence et de ne pas pouvoir utiliser GitHub Advanced Security sur les dépôts nouvellement créés.
Volume initial élevé de secrets détectés
Si vous activez l’secret scanning sur une grande organisation, préparez-vous à voir un grand nombre de secrets trouvés. Parfois, cela provoque un choc pour les organisations et l’alarme est déclenchée. Si vous souhaitez activer l’secret scanning sur tous les dépôts à la fois, planifiez la façon dont vous répondrez aux alertes multiples au sein de l’organisation.
L’Secret scanning peut être activée pour des dépôts individuels. Pour plus d’informations, consultez « Activation de l’analyse des secrets pour votre référentiel ». L’Secret scanning peut également être activée pour tous les dépôts de votre organisation, comme décrit ci-dessus. Pour plus d’informations sur l’activation pour tous les dépôts, consultez « Gestion des paramètres de sécurité et d'analyse pour votre organisation ».
Modèles personnalisés pour l’secret scanning
L’Secret scanning détecte un grand nombre de modèles par défaut, mais peut également être configurée pour détecter des modèles personnalisés, tels que les formats de secrets propres à votre infrastructure ou utilisés par les intégrateurs, que l’secret scanning de GitHub Enterprise Server ne détecte pas actuellement. Pour plus d’informations sur les secrets pris en charge pour les modèles de partenaire, consultez « Modèles d’analyse de secrets pris en charge ».
Lorsque vous auditez vos dépôts et discutez avec les équipes de sécurité et de développement, créez une liste des types de secrets que vous utiliserez ultérieurement pour configurer des modèles personnalisés pour l’secret scanning. Pour plus d’informations, consultez « Définition de modèles personnalisés pour l’analyse des secrets ».
Protection push pour secret scanning
La protection push pour les organisations et les référentiels indique à secret scanning de vérifier les envois (push) pour les secrets pris en charge avant que les secrets ne soient validés dans le codebase. Pour plus d’informations sur les secrets pris en charge, consultez « Modèles d’analyse de secrets pris en charge ».
Si un secret est détecté dans un envoi (push), cet envoi (push) est bloqué. Secret scanning liste les secrets qu’elle détecte afin que l’auteur puisse passer en revue les secrets et les supprimer ou, si nécessaire, autoriser ces secrets à être poussés. Secret scanning peut également vérifier les notifications Push pour les modèles personnalisés.
Les développeurs ont la possibilité de contourner la protection push en signalant qu’un secret est un faux positif, qu’il est utilisé dans les tests ou qu’il sera résolu ultérieurement.
Si un contributeur contourne un bloc de protection de poussée pour un secret, GitHub :
- Crée une alerte sous l’onglet Sécurité du dépôt.
- Ajoute l’événement de contournement au journal d’audit.
- Envoie une alerte par e-mail aux propriétaires de l’organisation ou de compte personnel, aux responsables de la sécurité et aux administrateurs de référentiels, qui regardent le référentiel, avec un lien vers le secret associé et la raison pour laquelle il a été autorisé.
Avant d’activer la protection push, déterminez si vous devez créer des conseils pour les équipes de développement sur les conditions acceptables pour contourner la protection push. Vous pouvez configurer un lien vers cette ressource dans le message qui s’affiche lorsqu’un développeur tente d’envoyer (push) un secret bloqué.
Ensuite, familiarisez-vous avec les différentes options de gestion et de surveillance des alertes résultant du contournement de la protection push par un contributeur.
Pour plus d’informations, consultez « À propos de la protection push ».
Pour l’article suivant de cette série, consultez « Phase 3 : Programmes pilotes ».