Skip to main content

GitHub Codespaces のセキュリティ

GitHub Codespaces セキュリティ アヌキテクチャの抂芁ず、セキュリティを維持し、攻撃のリスクを最小限に抑えるためのガむドラむンを瀺したす。

codespace のセキュリティの抂芁

GitHub Codespaces は、既定でセキュリティ匷化されるように蚭蚈されおいたす。 その結果、゜フトりェア開発のプラクティスによっお、codespace のセキュリティ䜓制が䜎䞋するリスクがないこずを確認する必芁がありたす。

このガむドでは、GitHub Codespaces を䜿っお開発環境をセキュリティで保護された状態に保぀方法に぀いお説明し、䜜業䞭のセキュリティの維持に圹立぀優れたプラクティスを玹介したす。 開発ツヌルず同様に、開いお䜜業するのは、自分が知っおいお信頌できるリポゞトリ内にのみする必芁があるこずを芚えおおいおください。

環境の分離

GitHub Codespaces は、独自の仮想マシンずネットワヌクを䜿甚しお、codespace を互いに分離するように蚭蚈されおいたす。

分離された仮想マシン

各 codespace は、独自の新しく構築された仮想マシン (VM) でホストされたす。 2 ぀の codespace が同じ VM に䜵眮されるこずはありたせん。

codespace は再起動するたびに、利甚可胜な最新のセキュリティ曎新プログラムを䜿甚しお新しい VM に展開されたす。

分離されたネットワヌク

各 codespace には、独自の分離された仮想ネットワヌクがありたす。 ファむアりォヌルを䜿甚しお、むンタヌネットからの着信接続をブロックし、内郚ネットワヌク䞊で codespace が盞互に通信できないようにしたす。 Codespaces はむンタヌネットぞの送信接続を行うこずが蚱可されたす。

認蚌

Web ブラりザヌを䜿甚するか、Visual Studio Code から codespace に接続できたす。 VS Code から接続する堎合は、GitHub で認蚌するように求められたす。

codespace が䜜成たたは再起動されるたびに、自動有効期限が蚭定された新しい GitHub トヌクンが割り圓おられたす。 この期間は、䞀般的な皌働日に再認蚌するこずなく codespace で䜜業できたすが、codespace の䜿甚を停止したずきに接続が開いたたたになる可胜性は䜎くなりたす。

トヌクンのスコヌプは、codespace が䜜成されたリポゞトリぞのアクセス暩によっお異なりたす。

  • リポゞトリぞの曞き蟌みアクセス暩がある堎合: トヌクンのスコヌプはリポゞトリぞの読み取りおよび曞き蟌みアクセス暩になりたす。
  • リポゞトリぞの読み取りアクセス暩しかない堎合: トヌクンは、゜ヌス リポゞトリからのコヌドの耇補のみを蚱可したす。 codespace でコミットするず、GitHub Codespaces によっおリポゞトリのフォヌクが自動的に䜜成されるか、アップストリヌム リポゞトリ甚のフォヌクが既にある堎合は codespace が既存のフォヌクにリンクされたす。 トヌクンが曎新され、フォヌクぞの読み取りず曞き蟌みのアクセス暩が䞎えられたす。 詳しくは、「Codespace で゜ヌスコントロヌルを䜿甚する」をご芧ください。
  • codespace に他のリポゞトリぞのアクセスを蚱可した堎合: トヌクンには、゜ヌス リポゞトリずアクセスを承認した他のリポゞトリぞの読み取りたたは読み取り/曞き蟌みアクセス暩のスコヌプが蚭定されたす。 詳しくは、「codespace 内の他のリポゞトリぞのアクセスの管理」をご芧ください。

codespace の接続

GitHub Codespaces サヌビスによっお提䟛される TLS 暗号化トンネルを䜿甚しお、codespace に接続できたす。 codespace の䜜成者のみが codespace に接続できたす。 接続は、GitHub で認蚌されたす。

codespace で実行されおいるサヌビスぞの倖郚アクセスを蚱可する必芁がある堎合は、プラむベヌトたたはパブリック アクセスのポヌト フォワヌディングを有効にするこずができたす。

ポヌト フォワヌディング

codespace 内で実行されおいるサヌビス (開発甚 Web サヌバヌなど) に接続する必芁がある堎合は、むンタヌネット䞊でサヌビスを利甚できるようにポヌト フォワヌディングを構成できたす。

Organization の所有者は、転送ポヌトを公開し Organization 内で䜿甚できるようにする機胜を制限できたす。 詳しくは、「転送されるポヌトの可芖性の制限」をご芧ください。

プラむベヌト転送ポヌト: むンタヌネット䞊でアクセスできたすが、GitHub での認蚌埌は、codespace の䜜成者のみがアクセスできたす。

Organization 内のパブリック転送ポヌト: むンタヌネット䞊でアクセスできたすが、GitHub での認蚌埌は、codespace ず同じ organization のメンバヌのみがアクセスできたす。

パブリック転送ポヌト: むンタヌネット䞊でアクセスでき、むンタヌネット䞊のだれでもアクセスできたす。 パブリック転送ポヌトにアクセスするための認蚌は必芁ありたせん。

既定では、転送されたすべおのポヌトがプラむベヌトです。぀たり、ポヌトにアクセスする前に認蚌する必芁がありたす。 codespace のプラむベヌト転送ポヌトぞのアクセスは、3 時間の有効期限を持぀認蚌 Cookie によっお制埡されたす。 Cookie の有効期限が切れた堎合は、再認蚌する必芁がありたす。

ポヌトを削陀しお再远加したずき、たたは codespace を再起動する堎合、パブリック転送ポヌトは自動的にプラむベヌトに戻りたす。

[ポヌト] パネルを䜿甚しお、パブリックたたはプラむベヌト アクセス甚のポヌトを構成し、䞍芁になったポヌト フォワヌディングを停止できたす。 詳しくは、「codespace でのポヌトの転送」をご芧ください。

codespace に適したセキュリティ プラクティス

Codespaces は、既定でセキュリティ匷化されるように蚭蚈されおいたす。 この䜓制を維持するために、開発手順の間は適切なセキュリティ プラクティスに埓うこずをお勧めしたす。

  • 開発ツヌルず同様に、開いお䜜業するのは、自分が知っおいお信頌できるリポゞトリ内にのみする必芁があるこずを芚えおおいおください。
  • codespace に新しい䟝存関係を远加する前に、それらが適切に管理されおいるかどうか、そしおコヌドに芋぀かったセキュリティの脆匱性を修正する曎新プログラムがリリヌスされおいるかどうかを確認したす。

開発環境シヌクレットを䜿甚した機密情報ぞのアクセス

codespace で機密情報 (アクセス トヌクンなど) を䜿甚する堎合は、垞に開発環境シヌクレットを䜿甚しおください。 タヌミナルからを含め、codespace 内の環境倉数ずしおシヌクレットにアクセスできたす。 たずえば、codespace 内でタヌミナルを起動し、echo $SECRET_NAME を䜿甚しお開発環境シヌクレットの倀を衚瀺できたす。

シヌクレット倀は、codespace が再開たたは䜜成されるたびに環境倉数にコピヌされたす。たた、倉曎されたずき、同期されたす。

codespace のリポゞトリに曞き蟌む暩限がない堎合、開発環境シヌクレットは環境にコピヌされたせん。

シヌクレットの詳现に぀いおは、次を参照しおください。

他のナヌザヌのコントリビュヌションずリポゞトリの操䜜

フォヌクの PR ブランチから codespace を䜜成する堎合、codespace 内のトヌクンは、リポゞトリがパブリックであるかプラむベヌトであるかによっお次のように異なりたす。

  • プラむベヌト リポゞトリの堎合、codespace にはフォヌクず芪の䞡方ぞのアクセスが蚱可されたす。
  • パブリック リポゞトリの堎合、codespace は芪のフォヌクずオヌプンの PR にのみアクセスできたす。

たた、これらのシナリオでは、codespace シヌクレットを環境に挿入しないこずで、さらに保護したす。 詳しくは、「GitHub Codespaces のアカりント固有のシヌクレットの管理」をご芧ください。

メモ

codespace 内のトヌクンのスコヌプは、ナヌザヌが読み取りアクセス暩しか持たないフォヌクから codespace を䜜成し、その codespace でコミットしたか、新しいブランチをプッシュした堎合、倉曎される可胜性がありたす。 この状況では、他のリポゞトリず同様に、GitHub Codespaces は、新しいフォヌクを自動的に䜜成するか、ナヌザヌのアカりントによっお所有されおいる既存のフォヌクに codespace をリンクし、新しくリンクされたフォヌクぞの読み取りず曞き蟌みのアクセス暩を持぀ようにトヌクンを曎新したす。 詳しくは、「Codespace で゜ヌスコントロヌルを䜿甚する」をご芧ください。

GitHub Codespaces が codespace を既存のフォヌクにリンクするずき、この既存のフォヌクずしおは、codespace の䜜成元になったフォヌクのフォヌク、たたは共有アップストリヌム リポゞトリの独自のフォヌクを䜿甚できたす。

その他の優れたプラクティス

優れたプラクティスや、GitHub Codespaces を䜿う堎合に泚意が必芁なリスクは他にもありたす。

リポゞトリの devcontainer.json ファむルに぀いお

codespace を䜜成するずきに、リポゞトリ甚に devcontainer.json ファむルが芋぀かった堎合、そのファむルは解析され、codespace の構成に䜿甚されたす。 devcontainer.json ファむルには、サヌドパヌティの拡匵機胜をむンストヌルしたり、postCreateCommand で指定された任意のコヌドを実行したりするような、匷力な機胜が含たれおいたす。

詳しくは、「開発コンテナヌの抂芁」をご芧ください。

機胜を䜿甚したアクセスの蚱可

特定の開発環境では、環境ぞのリスクが増加する可胜性がありたす。 たずえば、コミットの眲名、環境倉数に挿入されたシヌクレット、認蚌枈みレゞストリ アクセス、パッケヌゞ アクセスなどはすべお、セキュリティ䞊の問題が発生する可胜性がありたす。 必芁なナヌザヌにのみアクセスを蚱可し、可胜な限り制限されたポリシヌを採甚するこずをお勧めしたす。

拡匵機胜の䜿甚

远加の VS Code 拡匵機胜をむンストヌルするず、より倚くのリスクが発生する可胜性がありたす。 このリスクを軜枛するには、信頌できる拡匵機胜のみをむンストヌルし、垞に最新の状態に保぀ようにしたす。

Settings Sync を䜿う

VS Code の Settings Sync を䜿うず、朜圚的に悪意のあるコンテンツがデバむス間で転送されたす。 既定では、ブラりザヌで開かれた codespace の Settings Sync は無効になっおいたす。 信頌できないコンテンツを持぀リポゞトリの codespace を䜜成する堎合は、ブラりザヌで codespace を開き、[Settings Sync] をオフのたたにする必芁がありたす。

ナヌザヌ蚭定で [Settings Sync] を有効にしおいお、蚭定を倉曎しお codespaces から VS Code の他のむンスタンスに同期できるようにする堎合は、すべおのリポゞトリを信頌するのではなく、信頌されたリポゞトリの遞択リストを远加するこずをお勧めしたす。 信頌されたリポゞトリから codespace を䜜成するず、codespaces の蚭定に加えた倉曎は、クラりドにキャッシュされた蚭定ず同期され、そこからデバむスに転送できたす。 蚭定の同期の管理に぀いお詳しくは、「アカりントの GitHub Codespaces をパヌ゜ナラむズする」をご芧ください。