Skip to main content

Sécurité dans GitHub Codespaces

Vue d’ensemble de l’architecture de sĂ©curitĂ© de GitHub Codespaces, avec des instructions pour vous aider Ă  assurer la sĂ©curitĂ© et Ă  minimiser le risque d’attaque.

Vue d’ensemble de la sĂ©curitĂ© des espaces de code

GitHub Codespaces est conçu avec une sécurité renforcée par défaut. Par conséquent, vous devez vous assurer que vos pratiques de développement de logiciels ne risquent pas de réduire la posture de sécurité de votre espace de code.

Ce guide dĂ©crit la façon dont GitHub Codespaces sĂ©curise votre environnement de dĂ©veloppement. Il fournit certaines des bonnes pratiques qui vous aideront Ă  garantir la sĂ©curitĂ© tout au long de votre travail. Comme avec tout outil de dĂ©veloppement, n’oubliez pas que vous devez ouvrir et travailler uniquement dans des dĂ©pĂŽts que vous connaissez et approuvez.

Isolation de l’environnement

GitHub Codespaces est conçu pour maintenir vos espaces de code séparés les uns des autres, chacun utilisant sa propre machine virtuelle et son propre réseau.

Machines virtuelles isolées

Chaque espace de code est hĂ©bergĂ© sur sa propre machine virtuelle nouvellement créée. Deux espaces de code ne sont jamais colocalisĂ©s sur la mĂȘme machine virtuelle.

Chaque fois que vous redémarrez un espace de code, il est déployé sur une nouvelle machine virtuelle avec les derniÚres mises à jour de sécurité disponibles.

Mise en réseau isolée

Chaque espace de code possĂšde son propre rĂ©seau virtuel isolĂ©. Nous utilisons des pare-feu pour bloquer les connexions entrantes Ă  partir d’Internet et empĂȘcher les espaces de code de communiquer entre eux sur des rĂ©seaux internes. Les espaces de code sont autorisĂ©s Ă  Ă©tablir des connexions sortantes vers Internet.

Authentification

Vous pouvez vous connecter Ă  un espace de code Ă  l’aide d’un navigateur web ou Ă  partir de Visual Studio Code. Si vous vous connectez Ă  partir de VS Code, vous ĂȘtes invitĂ© Ă  vous authentifier avec GitHub.

Chaque fois qu’un espace de code est créé ou redĂ©marrĂ©, il reçoit un nouveau jeton GitHub avec une pĂ©riode d’expiration automatique. Cette pĂ©riode vous permet de travailler dans l’espace de code sans avoir Ă  vous rĂ©authentifier au cours d’une journĂ©e de travail classique, mais elle rĂ©duit le risque de laisser une connexion ouverte quand vous cessez d’utiliser l’espace de code.

L’étendue du jeton varie en fonction de l’accĂšs dont vous disposez au dĂ©pĂŽt oĂč l’espace de code a Ă©tĂ© créé :

  • Si vous disposez d’un accĂšs en Ă©criture au dĂ©pĂŽt : le jeton est limitĂ© pour l’accĂšs en lecture/Ă©criture au dĂ©pĂŽt.
  • Si vous disposez uniquement d’un accĂšs en lecture au dĂ©pĂŽt: le jeton autorise uniquement le clonage du code Ă  partir du dĂ©pĂŽt source. Si vous effectuez un commit dans le codespace, ou pousser une nouvelle branche, GitHub Codespaces crĂ©e automatiquement une duplication du dĂ©pĂŽt ou lie le codespace Ă  une duplication existante si vous en avez dĂ©jĂ  une pour le dĂ©pĂŽt en amont. Le jeton est mis Ă  jour pour avoir un accĂšs en lecture et en Ă©criture Ă  la duplication. Pour plus d’informations, consultez « Utilisation du contrĂŽle de code source dans votre espace de code Â».
  • Si vous avez autorisĂ© votre codespace Ă  accĂ©der Ă  d’autres dĂ©pĂŽts : l’étendue du jeton est dĂ©limitĂ©e pour disposer d’un accĂšs en lecture ou en lecture/Ă©criture au dĂ©pĂŽt source ainsi qu’aux autres dĂ©pĂŽts pour lesquels vous avez autorisĂ© l’accĂšs. Pour plus d’informations, consultez « Gestion de l’accĂšs Ă  d’autres dĂ©pĂŽts dans votre codespace Â».

Connexions aux espaces de code

Vous pouvez vous connecter Ă  votre espace de code Ă  l’aide du tunnel chiffrĂ© TLS fourni par le service GitHub Codespaces. Seul le crĂ©ateur d’un espace de code peut se connecter Ă  un espace de code. Les connexions sont authentifiĂ©es avec GitHub.

Si vous devez autoriser un accĂšs externe aux services s’exĂ©cutant sur un espace de code, vous pouvez activer le rĂ©acheminement de port pour un accĂšs privĂ© ou public.

Réacheminement de port

Si vous devez vous connecter Ă  un service (tel qu’un serveur web de dĂ©veloppement) s’exĂ©cutant dans votre espace de code, vous pouvez configurer le rĂ©acheminement de port pour rendre le service disponible sur Internet.

Les propriĂ©taires d’organisation peuvent restreindre la possibilitĂ© de rendre les ports de rĂ©acheminement disponibles publiquement ou au sein de l’organisation. Pour plus d’informations, consultez « Restriction de la visibilitĂ© des ports transfĂ©rĂ©s Â».

Ports transfĂ©rĂ©s de maniĂšre privĂ©e : Sont accessibles sur l'internet, mais seul le crĂ©ateur de l'espace de code peut y accĂ©der, aprĂšs s'ĂȘtre authentifiĂ© auprĂšs de GitHub.

Ports transfĂ©rĂ©s publiquement au sein de votre organisation : Sont accessibles sur Internet, mais uniquement aux membres de la mĂȘme organisation que l'espace de code, aprĂšs authentification auprĂšs de GitHub.

Ports transfĂ©rĂ©s publiquement : sont accessibles sur Internet, et n’importe qui sur Internet peut y accĂ©der. Aucune authentification n’est nĂ©cessaire pour accĂ©der aux ports transfĂ©rĂ©s publics.

Tous les ports transfĂ©rĂ©s sont privĂ©s par dĂ©faut, ce qui signifie que vous devez vous authentifier avant de pouvoir y accĂ©der. L’accĂšs aux ports transfĂ©rĂ©s privĂ©s d’un espace de code est contrĂŽlĂ© par les cookies d’authentification avec une pĂ©riode d’expiration de 3 heures. Quand le cookie expire, vous devez vous rĂ©authentifier.

Un port transfĂ©rĂ© public redevient automatiquement privĂ© quand vous supprimez et rajoutez le port, ou si vous redĂ©marrez l’espace de code.

Vous pouvez utiliser le panneau « Ports Â» pour configurer un port pour un accĂšs public ou privĂ©, et vous pouvez arrĂȘter le transfert de port lorsqu’il n’est plus nĂ©cessaire. Pour plus d’informations, consultez « Transfert de ports dans votre espace de code Â».

Bonnes pratiques de sécurité pour vos espaces de code

Les espaces de code sont conçus de maniĂšre Ă  ce que leur sĂ©curitĂ© soit renforcĂ©e par dĂ©faut. Pour vous aider Ă  maintenir cette posture, nous vous recommandons de suivre les bonnes pratiques de sĂ©curitĂ© pendant vos procĂ©dures de dĂ©veloppement :

  • Comme avec tout outil de dĂ©veloppement, n’oubliez pas que vous devez ouvrir et travailler uniquement dans des dĂ©pĂŽts que vous connaissez et approuvez.
  • Avant d’ajouter de nouvelles dĂ©pendances Ă  l’espace de code, vĂ©rifiez si elles sont bien gĂ©rĂ©es et si elles publient des mises Ă  jour pour corriger les vulnĂ©rabilitĂ©s de sĂ©curitĂ© trouvĂ©es dans leur code.

Utilisation de secrets d’environnement de dĂ©veloppement pour accĂ©der aux informations sensibles

Utilisez toujours des secrets d’environnement de dĂ©veloppement quand vous souhaitez vous servir d’informations sensibles (telles que des jetons d’accĂšs) dans un codespace. Vous pouvez accĂ©der Ă  vos secrets en tant que variables d’environnement dans l’espace de code, y compris Ă  partir du terminal. Par exemple, vous pouvez lancer un terminal dans votre codespace et utiliser echo $SECRET_NAME pour afficher la valeur d’un secret d’environnement de dĂ©veloppement.

Les valeurs secrĂštes sont copiĂ©es dans des variables d’environnement chaque fois que l’espace de code est repris ou créé, et sont Ă©galement synchronisĂ©es lorsqu’elles sont modifiĂ©es.

Les secrets d’environnements de dĂ©veloppement ne sont pas copiĂ©s dans l’environnement si vous n’avez pas accĂšs en Ă©criture au rĂ©fĂ©rentiel du codespace.

Pour plus d’informations sur les secrets, consultez :

Utilisation des contributions et dĂ©pĂŽts d’autres personnes

Lorsque vous crĂ©ez un espace de code Ă  partir d’une branche de demande de tirage Ă  partir d’une duplication, le jeton figurant dans l’espace de code varie selon que le dĂ©pĂŽt est public ou privĂ© :

  • Pour un dĂ©pĂŽt privĂ©, l’espace de code se voit accorder un accĂšs Ă  la fois Ă  la duplication et au parent.
  • Pour un dĂ©pĂŽt public, l’espace de code n’a accĂšs qu’à la duplication et aux demandes de tirage d’ouverture sur le parent.

Nous vous protĂ©geons Ă©galement davantage dans ces scĂ©narios en n’injectant aucun de vos secrets d’espace de code dans l’environnement. Pour plus d’informations, consultez « Gestion des secrets spĂ©cifiques Ă  votre compte pour GitHub Codespaces Â».

Remarque

L’étendue du jeton dans le codespace peut changer si vous crĂ©ez un codespace Ă  partir d’une duplication Ă  laquelle vous disposez uniquement d’un accĂšs en lecture, puis effectuez un commit ou poussez une nouvelle branche dans le codespace. Dans ce cas, comme avec tout autre dĂ©pĂŽt, GitHub Codespaces crĂ©e automatiquement une duplication fork ou lie votre codespace Ă  une duplication existante appartenant Ă  votre compte, et met Ă  jour le jeton pour avoir un accĂšs en lecture et en Ă©criture Ă  la duplication nouvellement liĂ©e. Pour plus d’informations, consultez « Utilisation du contrĂŽle de code source dans votre espace de code Â».

Lorsque GitHub Codespaces lie votre codespace Ă  une duplication existante, cette duplication existante peut ĂȘtre une duplication de la duplication Ă  partir de laquelle vous avez créé un codespace ou votre propre duplication du dĂ©pĂŽt en amont partagĂ©.

Bonnes pratiques supplémentaires

Il existe certaines bonnes pratiques et certains risques supplémentaires à connaßtre quand vous utilisez GitHub Codespaces.

PrĂ©sentation du fichier devcontainer.json d’un dĂ©pĂŽt

Quand vous crĂ©ez un espace de code, si un fichier devcontainer.json est trouvĂ© pour votre dĂ©pĂŽt, il est analysĂ© et utilisĂ© pour configurer votre espace de code. Le fichier devcontainer.json peut contenir des fonctionnalitĂ©s puissantes, telles que l’installation d’extensions tierces et l’exĂ©cution de code arbitraire fourni dans une postCreateCommand.

Pour plus d’informations, consultez « PrĂ©sentation des conteneurs de dĂ©veloppement Â».

Octroi de l’accĂšs via des fonctionnalitĂ©s

Certaines fonctionnalitĂ©s de dĂ©veloppement peuvent potentiellement ajouter des risques Ă  votre environnement. Par exemple, la signature de validation, les secrets injectĂ©s dans des variables d’environnement, l’accĂšs au registre authentifiĂ© et l’accĂšs aux packages peuvent tous prĂ©senter des problĂšmes de sĂ©curitĂ© potentiels. Nous vous recommandons d’accorder uniquement l’accĂšs Ă  ceux qui en ont besoin et d’adopter une stratĂ©gie visant Ă  ĂȘtre aussi restrictif que possible.

Utilisation d’extensions

Toute autre extension VS Code que vous avez installée peut éventuellement entraßner des risques supplémentaires. Pour atténuer ces risques, veillez à installer uniquement des extensions approuvées et à toujours les maintenir à jour.

Utilisation de la synchronisation des paramĂštres

La synchronisation des paramÚtres de VS Code peut permettre le transfert de contenu potentiellement malveillant entre les appareils. Par défaut, la synchronisation des paramÚtres est désactivée pour les espaces de code ouverts dans le navigateur. Si vous créez un codespace pour un dépÎt dont le contenu ne vous inspire pas confiance, ouvrez ce codespace dans le navigateur et laissez la synchronisation des paramÚtres désactivée.

Si vous avez activĂ© la synchronisation des paramĂštres dans vos prĂ©fĂ©rences utilisateur et que vous souhaitez autoriser les modifications apportĂ©es Ă  vos paramĂštres Ă  se synchroniser de vos codespaces vers d’autres instances de VS Code, nous vous recommandons d’ajouter une liste sĂ©lectionnĂ©e de rĂ©fĂ©rentiels approuvĂ©s, plutĂŽt que d’approuver tous les rĂ©fĂ©rentiels. Lorsque vous crĂ©ez des codespaces Ă  partir de rĂ©fĂ©rentiels approuvĂ©s, les modifications que vous apportez Ă  vos paramĂštres dans les codespaces sont synchronisĂ©es avec vos paramĂštres mis en cache dans le cloud, Ă  partir desquels ils peuvent ĂȘtre transfĂ©rĂ©s vers vos appareils. Pour plus d’informations sur la gestion de la synchronisation des paramĂštres, consultez Personnalisation de GitHub Codespaces pour votre compte.