Skip to main content

Sicherheit in GitHub Codespaces

Übersicht über die GitHub Codespaces Sicherheitsarchitektur mit Richtlinien zur Aufrechterhaltung der Sicherheit und Minimierung des Angriffsrisikos.

Übersicht über die Sicherheit in Codespaces

          GitHub Codespaces ist von Haus aus mit erhöhter Sicherheit konzipiert. Daher musst du sicherstellen, dass der Codespace-Sicherheitsstatus durch deine Softwareentwicklungspraktiken nicht gefährdet wird.

In diesem Leitfaden wird beschrieben, wie GitHub Codespaces Ihre Entwicklungsumgebung sicher bleibt und einige der bewährten Methoden bereitgestellt werden, die Ihnen dabei helfen, Ihre Sicherheit während der Arbeit zu gewährleisten. Denke wie bei jedem Entwicklungstool daran, dass du nur Repositorys öffnen und mit diesen arbeiten solltest, die du kennst und denen du vertraust.

Isolierung der Umgebung

          GitHub Codespaces ist so konzipiert, dass Ihre Codespaces voneinander getrennt bleiben, wobei jeweils ein eigener virtueller Computer und ein eigenes Netzwerk verwendet werden.

Isolierte virtuelle Computer

Jeder Codespace wird auf einem eigenen neu erstellten virtuellen Computer (virtual machine, VM) gehostet. Zwei Codespaces befinden sich niemals auf demselben virtuellen Computer.

Jedes Mal, wenn du einen Codespace neu startest, wird er mit den neuesten verfügbaren Sicherheitsupdates auf einem neuen virtuellen Computer bereitgestellt.

Isoliertes Netzwerk

Jeder Codespace verfügt über ein eigenes isoliertes virtuelles Netzwerk. Firewalls werden dazu verwendet, eingehende Verbindungen aus dem Internet zu blockieren und zu verhindern, dass Codespaces in internen Netzwerken miteinander kommunizieren. Codespaces können ausgehende Verbindungen mit dem Internet herstellen.

Authentifizierung

Sie können sich über einen Webbrowser oder von Visual Studio Code mit einem Codespace verbinden. Wenn Sie von VS Code eine Verbindung herstellen, werden Sie aufgefordert, sich bei GitHub zu authentifizieren.

Jedes Mal, wenn ein Codespace erstellt oder neu gestartet wird, wird ihm ein neues GitHub Token mit einem automatischen Ablaufzeitraum zugewiesen. In diesem Zeitraum kannst du im Codespace arbeiten, ohne dich während eines typischen Arbeitstags erneut authentifizieren zu müssen. Gleichzeitig sinkt jedoch das Risiko, dass du eine Verbindung offen lässt, wenn du die Verwendung von Codespace beendest.

Der Bereich des Token variiert je nach Zugriff, den du auf das Repository hast, in dem der Codespace erstellt wurde:

  •         **Wenn du Schreibzugriff auf das Repository hast**: Das Token wird für Lese-/Schreibzugriff auf das Repository festgelegt.
    
  •         **Wenn du nur Lesezugriff auf das Repository hast**: Das Token lässt nur zu, dass der Code aus dem Quellrepository geklont werden kann. Wenn Sie einen Commit im Codespace vornehmen oder einen neuen Branch übertragen, erstellt GitHub Codespaces automatisch einen Fork des Repositorys oder verknüpft den Codespace mit einem vorhandenen Fork, wenn Sie bereits einen für das Upstream-Repository haben. Das Token wird aktualisiert, um Lese- und Schreibzugriff auf den Fork zu erhalten. Weitere Informationen finden Sie unter [AUTOTITLE](/codespaces/developing-in-a-codespace/using-source-control-in-your-codespace#about-automatic-forking).
    
  •         **Wenn du deinen Codespace für den Zugriff auf andere Repositorys autorisiert hast:** Das Token wird für Lese- oder Lese-/Schreibzugriff auf das Quellrepository und auf alle anderen Repositorys festgelegt, für die du den Zugriff autorisiert hast. Weitere Informationen finden Sie unter [AUTOTITLE](/codespaces/managing-your-codespaces/managing-repository-access-for-your-codespaces#authorizing-requested-permissions).
    

Codespace-Verbindungen

Sie können eine Verbindung mit Ihrem Codespace herstellen, indem Sie den vom GitHub Codespaces Dienst bereitgestellten TLS-verschlüsselten Tunnel verwenden. Nur der Ersteller eines Codespaces kann eine Verbindung mit einem Codespace herstellen. Verbindungen werden authentifiziert mit GitHub.

Wenn du externen Zugriff auf Dienste zulassen musst, die in einem Codespace ausgeführt werden, kannst du die Portweiterleitung für privaten oder öffentlichen Zugriff aktivieren.

Portweiterleitung

Wenn du eine Verbindung mit einem Dienst (z. B. einem Entwicklungswebserver) herstellen musst, der in deinem Codespace ausgeführt wird, kannst du die Portweiterleitung konfigurieren, um den Dienst im Internet verfügbar zu machen.

Organisationsbesitzer können die Möglichkeit einschränken, weitergeleitete Ports öffentlich oder innerhalb der Organisation verfügbar zu machen. Weitere Informationen finden Sie unter Einschränken der Sichtbarkeit weitergeleiteter Ports.

          **Privat weitergeleitete Ports:** sind im Internet zugänglich, aber nur der Codespace-Ersteller kann darauf zugreifen, nachdem er sich authentifiziert hat GitHub.

          **Öffentlich weitergeleitete Ports innerhalb Ihrer Organisation:** sind im Internet zugänglich, aber nur für Mitglieder derselben Organisation wie die Codespace-Instanz, nachdem sie sich zu GitHub authentifiziert haben.

          **Öffentlich weitergeleitete Ports**: sind im Internet zugänglich, und jeder im Internet kann darauf zugreifen. Für den Zugriff auf öffentlich weitergeleitete Ports ist keine Authentifizierung erforderlich.

Alle weitergeleiteten Ports sind standardmäßig privat. Das bedeutet, dass du eine Authentifizierung durchführen musst, bevor du auf den Port zugreifen kannst. Der Zugriff auf die privaten weitergeleiteten Ports eines Codespaces wird durch Authentifizierungscookies mit einem Ablaufzeitraum von 3 Stunden gesteuert. Wenn das Cookie abläuft, musst du erneut eine Authentifizierung durchführen.

Wenn du den Port entfernst und erneut hinzufügst oder den Codespace neu startest, wird ein öffentlicher weitergeleiteter Port automatisch wieder in den Status eines privaten Ports zurückgesetzt.

Du kannst das Fenster „Ports“ verwenden, um einen Port für den öffentlichen oder privaten Zugriff zu konfigurieren und die Portweiterleitung zu beenden, wenn sie nicht mehr erforderlich ist. Weitere Informationen finden Sie unter Weiterleitung von Ports in Ihrem Codespace.

Gute Sicherheitspraktiken für deine Codespaces

Codespaces verfügen standardmäßig über eine Sicherheitshärtung. Damit dieser Sicherheitsstatus aufrechterhalten bleibt, empfehlen wir, dass Sie während Ihrer Entwicklungsprozesse gute Sicherheitspraktiken befolgen:

  • Denke wie bei jedem Entwicklungstool daran, dass du nur Repositorys öffnen und mit diesen arbeiten solltest, die du kennst und denen du vertraust.
  • Bevor du dem Codespace neue Abhängigkeiten hinzufügst, überprüfe, ob sie gut gepflegt werden und Updates für sie veröffentlicht werden, damit Sicherheitsrisiken behoben werden können, die im Code gefunden wurden.

Verwenden von Entwicklungsumgebungs-Geheimnissen für den Zugriff auf vertrauliche Informationen

Verwende immer Entwicklungsumgebungs-Geheimnisse, wenn du vertrauliche Informationen (z. B. Zugriffstoken) in einem Codespace verwenden möchtest. Du kannst auf deine Geheimnisse als Umgebungsvariablen im Codespace zugreifen, auch über das Terminal. Du kannst beispielsweise ein Terminal innerhalb des Codespace starten und echo $SECRET_NAME verwenden, um den Wert eines Entwicklungsumgebungs-Geheimnisses anzuzeigen.

Die geheimen Werte werden in Umgebungsvariablen kopiert, wenn der Codespace fortgesetzt oder erstellt wird, und werden auch synchronisiert, wenn sie geändert werden.

Entwicklungsumgebungs-Geheimnisse werden nicht in die Umgebung kopiert, wenn du keinen Schreibzugriff auf das Repository des Codespaces hast.

Weitere Informationen zu Geheimnissen findest du unter: * Verwalten Ihrer kontospezifischen geheimen Schlüssel für GitHub Codespaces * Verwalten von Entwicklungsumgebungs-Geheimnissen für Ihr Repository oder Ihre Organisation

Arbeiten mit Beiträgen und Repositorys anderer Personen

Wenn du einen Codespace aus einem PR-Branch aus einem Fork erstellst, variiert das Token im Codespace je nachdem, ob das Repository öffentlich oder privat ist:

  • Für ein privates Repository wird dem Codespace Zugriff auf den Fork und das übergeordnete Element gewährt.
  • Für ein öffentliches Repository hat der Codespace nur Zugriff auf den Fork und für das Öffnen von PRs im übergeordneten Element.

Wir schützen dich auch weiter in diesen Szenarien, indem keines deiner Codespace-Geheimnisse in die Umgebung eingefügt wird. Weitere Informationen finden Sie unter Verwalten Ihrer kontospezifischen geheimen Schlüssel für GitHub Codespaces.

Hinweis

Der Geltungsbereich des Tokens im Codespace kann sich ändern, wenn du einen Codespace aus einem Fork erstellst, auf den du nur Lesezugriff hast, und dann einen Commit im Codespace ausführst oder einen neuen Branch pushst. In dieser Situation, wie bei jedem anderen Repository, erstellt GitHub Codespaces automatisch eine neue Fork, oder verknüpft Ihren Codespace mit einer bestehenden Fork, die Ihrem Konto gehört, und aktualisiert das Token so, dass es Lese- und Schreibzugriff auf die neu verknüpfte Fork hat. Weitere Informationen finden Sie unter Verwenden der Quellcodeverwaltung in deinem Codespace.

Wenn GitHub Codespaces Ihren Codespace mit einem vorhandenen Fork verknüpft, kann dieser vorhandene Fork entweder ein Fork des Forks sein, aus dem Sie einen Codespace erstellt haben, oder Ihr eigener Fork des geteilten Upstream-Repositorys.

Weitere bewährte Methoden

Es gibt einige zusätzliche bewährte Methoden und Risiken, die Sie bei der Verwendung GitHub Codespacesbeachten sollten.

Grundlegendes zur Datei devcontainer.json eines Repositorys

Wenn du einen Codespace erstellst und eine devcontainer.json-Datei für dein Repository gefunden wird, wird sie geparst und zum Konfigurieren deines Codespace verwendet. Die devcontainer.json-Datei kann leistungsstarke Features enthalten, z. B. die Installation von Erweiterungen von Drittanbietern und das Ausführen von beliebigem Code, der in einem postCreateCommand angegeben ist.

Weitere Informationen finden Sie unter Einführung in Dev-Container.

Gewährung des Zugriffs über Funktionen

Bestimmte Entwicklungsfeatures können der Umgebung potenziell Risiken hinzufügen. Beispielsweise können das Signieren von Commits, in Umgebungsvariablen eingefügte Geheimnisse, authentifizierter Registrierungszugriff und Paketzugriff potenzielle Sicherheitsprobleme darstellen. Es empfiehlt sich, dass du ausschließlich Personen Zugriff gewährst, die ihn benötigen, und dass du dich an der Policy orientierst, so restriktiv wie möglich vorzugehen.

Verwenden von Erweiterungen

Alle zusätzlichen VS Code Erweiterungen, die Sie installiert haben, können potenziell ein größeres Risiko darstellen. Achte zur Verringerung dieses Risikos darauf, nur vertrauenswürdige Erweiterungen zu installieren und dass diese immer auf dem aktuellen Stand gehalten werden.

Verwenden der Einstellungssynchronisierung

          VS CodeDie Synchronisierung von Einstellungen kann potenziell böswilligen Inhalten erlauben, geräteübergreifend zu übertragen. Standardmäßig ist die Einstellungssynchronisierung für Codespaces deaktiviert, die im Browser geöffnet werden. Wenn du einen Codespace für ein Repository erstellst, dessen Inhalt du nicht vertraust, solltest du den Codespace im Browser öffnen und die Einstellungssynchronisierung deaktiviert lassen.

Wenn Sie die Einstellungssynchronisierung in Ihren Benutzereinstellungen aktiviert haben und Änderungen an Ihren Einstellungen zulassen möchten, die von Ihren Codespaces mit anderen Instanzen synchronisiert werden sollen, empfehlen wir, eine ausgewählte Liste vertrauenswürdiger Repositorys hinzuzufügen, anstatt allen Repositorys VS Codezu vertrauen. Wenn du Codespaces aus vertrauenswürdigen Repositorys erstellst, werden Änderungen, die du an deinen Einstellungen in den Codespaces vornimmst, mit deinen zwischengespeicherten Einstellungen in der Cloud synchronisiert, von denen aus sie auf deine Geräte übertragen werden können. Weitere Informationen zum Verwalten der Einstellungssynchronisierung findest du unter Personalisieren GitHub Codespaces für Ihr Konto.