À propos de l’importance de fournir un accès aux registres privés
Lorsque le code d’un référentiel a des dépendances stockées dans un registre privé, certaines fonctionnalités de sécurité doivent accéder au Registre pour les permettre de fonctionner efficacement. Sans accès à toutes les dépendances d’un référentiel, l’efficacité de code scanning la configuration par défaut et Dependabot sont limitées.
Code scanning accès par configuration par défaut aux registres privés
Si vous ne définissez pas l’accès aux registres privés que votre organisation utilise, il code scanning collecte uniquement les données nécessaires à partir des dépendances disponibles dans les registres publics. La plupart du temps, cela suffit à faire apparaître la plupart des vulnérabilités. Toutefois, dans certains cas, le manque d’accès peut entraîner des résultats faux négatifs. En d’autres termes, code scanning il est impossible de détecter une vulnérabilité dans le code, car elle n’a pas toutes les informations dont elle a besoin pour analyser le code. Par exemple, certains chemins de flux de données peuvent ne pas être détectés, car les étapes sont définies dans les dépendances qui ne sont pas accessibles et code scanning ne savent pas comment les interpréter.
Lorsque vous configurez l’accès aux registres privés utilisés dans votre organisation, code scanning il a accès à toutes les informations dont elle a besoin et est beaucoup moins susceptible de manquer une vulnérabilité.
Code scanning le programme d’installation par défaut prend en charge les types de Registre suivants :
| Language | Types de registre |
|---|---|
| C# | Flux NuGet |
| Go | Serveur GOPROXY, source Git |
| Java | Référentiel Maven |
Conseil
Vous pouvez définir un registre de chaque type pour chaque organisation. Si les bases de code de votre organisation utilisent plusieurs registres d’un type donné, vous devez configurer un point d’accès unifié ou définir l’accès au registre le plus important pour les bases de code de cette organisation.
Définition de l’accès au Registre pour la code scanning configuration par défaut
Vous devez être propriétaire d’une organisation pour configurer l’accès aux registres privés dans l’interface utilisateur. Vous pouvez également utiliser l’API REST avec les autorisations du propriétaire de l'organisation ou {read,write}_org_private_registries.
- Dans l’onglet Paramètres de l’organisation, faites défiler vers le bas jusqu’à la section « Sécurité » et sélectionnez Secrets et variables.
- Dans la liste développée des secrets et variables, sélectionnez Registres privés pour afficher la page « Registres privés ».
- Sélectionnez Nouveau registre privé pour ajouter des détails d’accès pour un registre privé.
- Utilisez les champs URL et Type pour définir l’emplacement et le type du registre :
*
URL est l’emplacement où vous accédez au registre privé. Par exemple, pour utiliser le GitHub Packages Registre pour NuGet :
https://nuget.pkg.github.com/ORGANIZATION/index.json, oùORGANIZATIONest le nom de votre organisation sur GitHub. * Type représente le type de registre. - Sélectionnez Jeton ou Nom d’utilisateur et mot de passe, en fonction de la méthode d’authentification, puis saisissez les données dans les champs appropriés. Certains types de jetons d’authentification, tels qu’un GitHubPersonal Access Token, sont liés à une identité d’utilisateur particulière. Sélectionnez l’option Nom d’utilisateur et mot de passe pour celles-ci , puis entrez le nom d’utilisateur approprié en tant que nom d’utilisateur et le jeton en tant que mot de passe.
- Définissez les dépôts de l’organisation qui peuvent accéder au registre privé en utilisant ces détails : tous les dépôts, dépôts privés et internes, ou dépôts sélectionnés uniquement.
- Une fois que vous avez terminé de définir le registre privé, sélectionnez Ajouter un registre pour enregistrer les informations du registre.
Conseil
Lorsque vous ajoutez un registre privé à une organisation, le jeton ou le mot de passe est stocké sous la forme d’un secret chiffré. Une fois le registre créé, le jeton ou le mot de passe ne peut plus être affiché.
Activation de la code scanning configuration par défaut pour utiliser une définition de Registre
Lorsque vous activez code scanning la configuration par défaut d’un référentiel ou d’un groupe de référentiels, GitHub vérifie si les référentiels ont accès à des registres privés existants. Si des registres privés sont disponibles pour un référentiel, code scanning utilisera les définitions pertinentes lors de l’analyse.
Lors de la configuration des registres privés pour la première fois, vous devez désactiver et réactiver code scanning la configuration par défaut pour tous les référentiels que vous souhaitez utiliser la nouvelle définition. Les configurations nouvelles ou modifiées seront automatiquement appliquées lors des exécutions suivantes.
Pour les langues prenant en charge les registres de packages privés, code scanning la configuration par défaut produit des informations sur le page d’état de l’outil. Cela vous montre quelles configurations de Registre privé étaient disponibles pour une analyse, mais pas si code scanning la configuration par défaut a été en mesure de télécharger les dépendances privées à partir d’elles. Pour plus d’informations sur page d’état de l’outil, consultez Utiliser la page d’état de l’outil pour l’analyse du code.
Vous pouvez également vérifier si les registres privés ont été utilisés avec succès en analysant code scanning, en examinant les journaux d'Actions. Voir Journaux d’analyse du code.
Code scanning accès avancé à la configuration des registres privés
Code scanning l’installation avancée utilise tous les registres privés disponibles pour le flux de travail qui exécute l’analyse à l’aide du `codeql-action`. Elle n’a pas accès aux registres privés au niveau de l’organisation utilisés par la configuration par défaut.
Pour les langages compilés, codeql-action doit observer une phase de compilation du code. Vous pouvez modifier votre workflow de build existant pour qu’il exécute également codeql-action, ou créer un workflow qui génère la version de production du code et exécute également codeql-action.
Tous les registres privés utilisés par la build doivent également être accessibles au workflow qui exécute codeql-action. Pour plus d’informations sur la configuration avancée, consultez Configuration avancée de l’analyse du code.
Dependabot met à jour l’accès aux registres privés
Dependabot peut utiliser l’un des registres privés de niveau organisationnel, ainsi que les registres privés définis dans le fichier `dependabot.yml` dans le dépôt.
Dependabot ne peut pas rechercher de mises à jour de sécurité ou de version pour le code stocké dans un registre privé, sauf s'il peut accéder au registre. Si vous ne configurez pas l’accès au registre privé, Dependabot ne peut pas déclencher de requêtes d'extraction pour mettre à jour les dépendances stockées dans le registre.
Lorsque vous configurez l’accès à un ou plusieurs registres privés, vous pouvez proposer des pull requests pour mettre à niveau une dépendance vulnérable ou pour maintenir une dépendance, consultez Configuration de l’accès aux registres privés pour Dependabot et Aide pour la configuration des registres privés pour Dependabot.