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 :
- Gestion des secrets spécifiques à votre compte pour GitHub Codespaces
- Gestion des secrets dâenvironnement de dĂ©veloppement pour votre rĂ©fĂ©rentiel ou votre organisation
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.