Skip to main content

Systemübersicht

Hier erfährst du mehr über die internen Systemabläufe, Funktionen und die Sicherheit von GitHub Enterprise Server.

Informationen zu GitHub Enterprise Server

GitHub Enterprise Server ist eine selbst gehostete Version der Plattform GitHub. GitHub verteilt GitHub Enterprise Server als eine eigenständige virtuelle Appliance. Nachdem du einen virtuellen Computer bereitgestellt und die Appliance installiert hast, wird auf der Instanz ein Linux-Betriebssystem mit einem benutzerdefinierten Anwendungsstapel ausgeführt. Weitere Informationen findest du unter Informationen zu GitHub Enterprise Server.

Speicherarchitektur

GitHub Enterprise Server erfordert zwei Speichervolumes: eines für den Pfad des Stammdateisystems (/) und eines für den Pfad des Benutzerdateisystems (/data/user). Diese Architektur vereinfacht die Upgrade-, Rollback und Wiederherstellungsprozeduren, indem die in Ausführung befindliche Softwareumgebung von den persistenten Anwendungsdaten getrennt wird.

Das Root-Dateisystem ist im verteilten Maschinen-Image enthalten. Es enthält das Basisbetriebssystem und die GitHub Enterprise Server-Anwendungsumgebung. Das Root-Dateisystem sollte als flüchtig behandelt werden. Daten auf dem Stammdateisystem werden beim Upgrade auf künftige GitHub Enterprise Server-Releases ersetzt.

Das Stammspeichervolume wird in zwei gleich große Partitionen unterteilt. Eine der Partitionen wird als Stammdateisystem (/) bereitgestellt. Die andere Partition wird nur während Upgrades und Rollbacks von Upgrades als /mnt/upgrade bereitgestellt, um bei Bedarf einfachere Rollbacks zu ermöglichen. Wenn z. B. ein 200 GB Stammvolume zugewiesen wird, werden 100 GB für das Stammdateisystem zugewiesen und 100 GB für Upgrades und Rollbacks reserviert.

Das Stammdateisystem enthält Dateien, die die folgenden Informationen speichern. Diese Liste ist nicht vollständig.

  • Benutzerdefinierte Zertifizierungsstellenzertifikate (ZS) (in /usr/local/share/ca-certificates*)
  • benutzerdefinierte Netzwerkkonfigurationen
  • benutzerdefinierte Firewallkonfigurationen
  • den Replikationszustand

Das Benutzerdateisystem enthält Dateien, die die folgenden Konfigurationen und Daten speichern. Diese Liste ist nicht vollständig.

  • Git-Repositorys
  • Datenbanken
  • Suchindizes
  • auf GitHub Pages-Websites veröffentlichte Inhalte,
  • große Dateien von Git Large File Storage,
  • Pre-Receive-Hook-Umgebungen.

Bereitstellungstopologien

Standardmäßig wird GitHub Enterprise Server als eigenständige Instanz ausgeführt. Du kannst die Zuverlässigkeit und Leistung von GitHub Enterprise Server erhöhen, indem du für deine Bereitstellung eine andere Topologie nutzt.

  • Um die Auswirkungen von System- oder Netzwerkausfällen abzufedern, kannst du eine passive Replikatinstanz bereitstellen. Wenn deine primäre Instanz von einem Ausfall betroffen ist, kannst du manuell ein Failover auf die Replikatinstanz durchführen. Weitere Informationen findest du unter Informationen zur Hochverfügbarkeitskonfiguration.
  • Du kannst mehrere aktive Replikate konfigurieren, um die Leistung für Entwickler zu verbessern, die geografisch weit von deiner primären Instanz entfernt sind. Weitere Informationen findest du unter Informationen zur Geo-Replikation.
  • Einige Unternehmen mit Zehntausenden von Entwicklern können von einer Clusterkonfiguration mit horizontaler statt vertikaler Skalierung profitieren. Weitere Informationen findest du unter Informationen zu Clustering.

Datenaufbewahrung und Rechenzentrumsredundanz

Warnung: Bevor du GitHub Enterprise Server in einer Produktionsumgebung verwendest, wird dringend empfohlen, Sicherungen und einen Notfallwiederherstellungsplan einzurichten.

GitHub Enterprise Server enthält Unterstützung für Onlinesicherungen und inkrementelle Sicherungen mit GitHub Enterprise Server Backup Utilities. Du kannst inkrementelle Snapshots über eine sichere Netzwerkverbindung (den SSH-Verwaltungsport) über weite Entfernungen für den externen oder geografisch verteilten Storage erstellen. Im Falle eines Notfalls im primären Rechenzentrum kannst du Momentaufnahmen über das Netzwerk in einer neu bereitgestellten Instanz wiederherstellen.

Zusätzlich zu Netzwerksicherungen werden AWS- (EBS) und VMware-Datenträger-Momentaufnahmen der Benutzerspeichervolumes unterstützt, während die Instanz offline ist oder sich im Wartungsmodus befindet. Regelmäßige Volumemomentaufnahmen können als kostengünstige, unkomplizierte Alternative zu Netzwerksicherungen mit GitHub Enterprise Server Backup Utilities verwendet werden, wenn deine Dienstebenenanforderungen eine regelmäßige Offlinewartung ermöglichen.

Weitere Informationen findest du unter Konfigurieren von Sicherungen auf einer Instanz.

Sicherheit

GitHub Enterprise Server wird auf deiner Infrastruktur ausgeführt und von Zugriffs- und Sicherheitskontrollen geregelt, die von dir definiert werden, z. B. Firewalls, Netzwerkrichtlinien, IAM, Überwachung und VPNs. GitHub Enterprise Server ist für Unternehmen geeignet, die gesetzliche Bestimmungen einhalten müssen, um Probleme zu vermeiden, die sich aus Softwareentwicklungsplattformen in der öffentlichen Cloud ergeben.

GitHub Enterprise Server umfasst auch zusätzliche Sicherheitsfeatures.

Betriebssystem, Software und Patches

GitHub Enterprise Server führt ein benutzerdefiniertes Linux-Betriebssystem mit den nötigsten Anwendungen und Diensten aus. GitHub verteilt Patches für das Kernbetriebssystem der Instanz als Teil des Standardproduktreleasezyklus. Die Patches richten sich an Funktions-, Stabilitäts- und nicht kritische Sicherheitsprobleme bei GitHub Enterprise Server. Bei Bedarf stellt GitHub außerdem kritische Sicherheitspatches außerhalb des normalen Releasezyklus bereit.

GitHub Enterprise Server wird als Appliance bereitgestellt, und viele der Betriebssystempakete werden im Vergleich zur üblichen Ubuntu-Distribution geändert. Aus diesem Grund unterstützen wir keine Änderung des zugrunde liegenden Betriebssystems (einschließlich Betriebssystemupgrades) entsprechend der Lizenz- und Supportvereinbarung von GitHub Enterprise Server unter dem Abschnitt 11.3 „Ausschluss“.

Derzeit ist Ubuntu 20 (Focal Fossa).

Regelmäßige Patchupdates werden auf GitHub Enterprise Server-Releaseseite veröffentlicht, und auf der Seite Versionshinweise erhältst du weitere Informationen. Diese Patches enthalten normalerweise Upstreamanbieter- und Projektsicherheitspatches, nachdem sie von unserem Engineeringteam getestet und qualitativ genehmigt wurden. Es kann eine leichte Zeitverzögerung zwischen der Veröffentlichung des Upstreamupdates und dem Zeitpunkt geben, an dem es getestet und in einen kommenden GitHub Enterprise Server-Patchrelease gebündelt wird.

Netzwerksicherheit

Die interne Firewall von GitHub Enterprise Server schränkt den Netzwerkzugriff auf die Dienste der Instanz ein. Über das Netzwerk sind ausschließlich Dienste verfügbar, die für die Funktionsfähigkeit der Appliance erforderlich sind. Weitere Informationen findest du unter Netzwerkports.

Anwendungssicherheit

Das Anwendungssicherheitsteam von GitHub konzentriert sich auf die Sicherheitsbewertung, Penetrationstests und Code Reviews für GitHub-Produkte (einschließlich GitHub Enterprise Server). GitHub hat zusätzlich externe Sicherheitsfirmen mit zeitabhängigen Sicherheitsbeurteilungen der GitHub-Produkte beauftragt.

Externe Dienste und Supportzugang

GitHub Enterprise Server kann ohne jeglichen ausgehenden Zugriff von deinem Netzwerk auf externe Dienste genutzt werden. Optional kannst du die Integration in externe Dienste zur E-Mail-Zustellung, zur externen Überwachung und zur Protokollweiterleitung aktivieren. Weitere Informationen findest du unter E-Mail für Benachrichtigungen konfigurieren, Externe Überwachung festlegen und Protokollweiterleitung.

Du kannst manuell Fehlerbehebungsdaten sammeln und an den GitHub-Support senden. Weitere Informationen findest du unter Providing data to GitHub Support (Bereitstellen von Daten für GitHub Support).

Verschlüsselte Kommunikation

GitHub konzipiert GitHub Enterprise Server für die Ausführung hinter deiner Unternehmensfirewall. Zum Schutz der drahtgebundenen Kommunikation solltest du TLS (Transport Layer Security) aktivieren. GitHub Enterprise Server unterstützt handelsübliche TLS-Zertifikate mit 2048 Bit und mehr für den HTTPS-Datenverkehr. Weitere Informationen findest du unter TLS konfigurieren.

Standardmäßig bietet die Instanz auch den SSH-Zugriff (Secure Shell) für den Repositoryzugriff über Git und für Verwaltungszwecke. Weitere Informationen findest du unter Informationen zur SSH und unter Auf die Verwaltungsshell (SSH) zugreifen.

Wenn du die SAML-Authentifizierung für Ihre GitHub Enterprise Server-Instance konfigurierst, kannst du verschlüsselte Assertionen zwischen der Instanz und deinem SAML-IdP aktivieren. Weitere Informationen findest du unter Verwenden von SAML for Enterprise IAM.

Benutzer und Zugriffsberechtigungen

GitHub Enterprise Server bietet drei Arten von Konten.

  • Das Linux-Benutzerkonto admin hat den Zugriff auf das zugrundeliegende Betriebssystem festgelegt, einschließlich des direkten Dateisystems und des Datenbankzugriffs. Eine kleine Gruppe vertrauenswürdiger Administratoren sollte den Zugriff auf dieses Konto erhalten, auf das sie über SSH zugreifen können. Weitere Informationen findest du unter Auf die Verwaltungsshell (SSH) zugreifen.
  • Benutzerkonten in der Webanwendung der Instanz haben uneingeschränkten Zugriff auf die jeweils eigenen Daten sowie auf alle Daten, für die andere Benutzer*innen oder Organisationen den Zugriff ausdrücklich gewähren.
  • Websiteadministrator*innen in der Webanwendung der Instanz sind Benutzerkonten, die die allgemeinen Webanwendungs- und Instanzeinstellungen, die Einstellungen für Benutzer- und Organisationskonten sowie die Repositorydaten verwalten können.

Weitere Informationen zu GitHub Enterprise Server-Benutzerberechtigungen findest du unter Zugriffsberechtigungen auf GitHub.

Authentifizierung

GitHub Enterprise Server umfasst vier Authentifizierungsmethoden.

  • Die Authentifizierung mit einem öffentlichen SSH-Schlüssel eröffnet sowohl den Repository-Zugriff mit Git als auch den Zugriff auf die Verwaltungsshell. Weitere Informationen findest du unter Informationen zur SSH und unter Auf die Verwaltungsshell (SSH) zugreifen.
  • Die Authentifizierung per Benutzername und Passwort mit HTTP-Cookies eröffnet den Zugriff auf die Webanwendung und auf die Sitzungsverwaltung mit optionaler Zwei-Faktor-Authentifizierung (2FA). Weitere Informationen findest du unter Integrierte Authentifizierung konfigurieren.
  • Die externe LDAP-, SAML- oder CAS-Authentifizierung mit einem LDAP-Service, einem SAML Identity Provider (IdP) oder anderen kompatiblen Diensten eröffnet den Zugriff auf die Webanwendung. Weitere Informationen findest du unter Verwenden von SAML for Enterprise IAM.
  • OAuth-Token und personal access token ermöglichen den Zugriff auf Git-Repositorydaten und APIs für externe Clients und Dienste. Weitere Informationen findest du unter Verwalten deiner persönlichen Zugriffstoken.

Audit- und Zugriffsprotokollierung

GitHub Enterprise Server speichert sowohl herkömmliche Betriebssystemprotokolle als auch Anwendungsprotokolle. Die Anwendung führt außerdem detaillierte Überwachungs- und Sicherheitsprotokolle, die GitHub Enterprise Server dauerhaft speichert. Du kannst beide Protokolltypen über das syslog-ng-Protokoll in Echtzeit an mehrere Ziele weiterleiten. Weitere Informationen findest du unter Informationen zum Überwachungsprotokoll für dein Unternehmen und unter Protokollweiterleitung.

Zugriffs- und Auditprotokolle enthalten beispielsweise die folgenden Informationen.

Zugriffsprotokolle

  • Vollständige Webserverprotokolle über den Browser- und API-Zugriff
  • Vollständige Protokolle über den Zugriff auf Repository-Daten über Git, HTTPS und SSH-Protokolle
  • Verwaltungszugriffsprotokolle über HTTPS und SSH

Überwachungsprotokolle

  • Benutzeranmeldungen, Passwortzurücksetzungen, 2FA-Anfragen, Änderungen der E-Mail-Einstellungen und Änderungen an autorisierten Anwendungen und APIs
  • Aktionen von Websiteadministratoren wie das Entsperren von Benutzerkonten und Repositorys
  • Repository-Push-Events, Zugriffsgewährungen, Übertragungen und Umbenennungen
  • Änderungen an der Organisationsmitgliedschaft, u. a. Teamerstellung und -vernichtung

Open-Source-Abhängigkeiten für GitHub Enterprise Server

Eine vollständige Liste der Abhängigkeiten in der Version deiner GitHub Enterprise Server-Instanz sowie die Lizenz jedes Projekts findest du unter http(s)://HOSTNAME/site/credits.

Tarballs mit einer vollständigen Liste der Abhängigkeiten und verknüpften Metadaten sind in deiner Instanz verfügbar.

  • Für Abhängigkeiten, die für alle Plattformen gelten, unter /usr/local/share/enterprise/dependencies-<GHE version>-base.tar.gz
  • Für Abhängigkeiten, die für eine Plattform spezifisch gelten, unter /usr/local/share/enterprise/dependencies-<GHE version>-<platform>.tar.gz

Tarballs sind auch mit einer vollständigen Liste der Abhängigkeiten und Metadaten unter https://enterprise.github.com/releases/<version>/download.html verfügbar.

Weitere Informationsquellen