Wenn Sie Enterprise Managed Users verwenden, können Sie verhindern, dass sich Benutzer in Ihrem Netzwerk mit Konten bei GitHub.com authentifizieren, die nicht zu Ihrem Unternehmen gehören. Dies trägt dazu bei, das Risiko zu verringern, dass die Daten deines Unternehmens öffentlich zugänglich gemacht werden.
Um diese Einschränkung durchzusetzen, konfigurieren Sie Ihren Netzwerk-Proxy oder Ihre Firewall so, dass ein Header in die Web- und API-Anfragen Ihrer Benutzer an GitHub.com eingefügt wird.
Für dieses Feature ist eine externe Firewall oder ein Proxy erforderlich. GitHub-Support Die Einrichtung oder Problembehandlung für externe Tools wie diese kann nicht unterstützt werden. Weitere Informationen zum Umfang der Unterstützung findest du unter Informationen zum GitHub Support.
Aktivieren von Zugriffseinschränkungen
Diese Funktion ist nicht standardmäßig aktiviert. Ein Unternehmensbesitzer kann das Feature für dein Unternehmen aktivieren.
- Navigieren Sie zu Ihrem Unternehmen. Beispielsweise auf der Seite Unternehmen in GitHub.com.
- Klicken Sie oben auf der Seite auf "Einstellungen".
- Klicken Sie unter "Einstellungen" auf "Authentifizierungssicherheit".
- Wähle im Abschnitt „Enterprise access restrictions“ die Option Enable enterprise access restrictions aus.
Voraussetzungen
- Sie müssen einen Unternehmen mit verwalteten Benutzer*innen auf GitHub.com verwenden.
- Sie erkennen, dass Sie ein Unternehmen mit verwalteten Benutzer*innen verwenden, wenn die Benutzernamen all Ihrer Benutzer um den Kurzcode Ihres Unternehmens ergänzt sind.
- Wenn Sie verwenden GitHub Enterprise-Cloud mit Datenresidenz, befindet sich Ihr Unternehmen auf einer dedizierten Unterdomäne von GHE.com, sodass der Header nicht erforderlich ist, um den Datenverkehr zu den Ressourcen Ihres Unternehmens zu unterscheiden.
- Um die Einschränkung zu erzwingen, muss der gesamte Datenverkehr einen Proxy oder eine Firewall durchlaufen. Der Proxy bzw. die Firewall muss Folgendes können:
- In der Lage sein, Datenverkehr abzufangen und zu bearbeiten, häufig als "Break-and-Inspect-Proxy" bezeichnet.
- Unterstützung für beliebige Header-Injektion
- Dein Unternehmensbesitzer hat dieses Feature aktiviert.
Header finden
Um die Einschränkung zu erzwingen, injizierst du einen Header in den gesamten Datenverkehr, der an bestimmte unterstützte Endpunkte weitergeleitet wird. Der Header weist das folgende Format auf.
sec-GitHub-allowed-enterprise: ENTERPRISE-ID
Unternehmensbesitzende können die richtige Unternehmens-ID identifizieren, die im Header für dein Unternehmen verwendet werden soll.
- Navigieren Sie zu Ihrem Unternehmen. Beispielsweise auf der Seite Unternehmen in GitHub.com.
- Klicken Sie oben auf der Seite auf "Einstellungen".
- Klicken Sie unter "Einstellungen" auf "Authentifizierungssicherheit".
- Im Abschnitt „Enterprise access restrictions“ findest du den Header für dein Unternehmen.
Die Verwendung von Header
Um optimale Ergebnisse zu erzielen, konfiguriere deinen Proxy so, dass der Header in den gesamten Datenverkehr an die folgenden unterstützten Endpunkte injiziert wird.
| Endpunkt | Zweck |
|---|---|
github.com/* | Web-Traffic zu GitHub.com |
api.github.com/* | REST- und GraphQL-API-Anforderungen |
*.githubcopilot.com | Für bestimmte GitHub Copilot Funktionen erforderlicher Datenverkehr |
Dadurch wird verhindert, dass Personen in deinem Netzwerk auf diese Endpunkte mit Benutzerkonten zugreifen, die nicht im Besitz deines Unternehmens sind. Neben diesem Feature kannst du den Datenverkehr von außerhalb deines Netzwerks blockieren, indem du eine IP-Zulassungsliste einrichtest. Weitere Informationen findest du unter Einschränken des Netzwerkdatenverkehrs in deinem Unternehmen mit einer Liste zugelassener IP-Adressen.
Hinweis
Der Zugriff auf github.com/login ist für das Erstellen von Supporttickets erforderlich. Um sicherzustellen, dass Benutzende mit Supportberechtigungen Hilfe anfordern können, musst du diese Benutzende von der Einschränkung ausschließen.
Aktivieren von Zugriffsbeschränkungen für mehrere Unternehmen
Unternehmensbesitzer können die Einschränkung für mehrere Unternehmenskonten erzwingen.
- Aktivieren Sie das Feature für jedes Unternehmenskonto. Siehe Aktivieren von Zugriffsbeschränkungen.
- Fügt einen Header in den gesamten Datenverkehr ein, der zu bestimmten unterstützten Endpunkten führt. Der Header weist das folgende Format auf.
sec-GitHub-allowed-enterprise: ENTERPRISE1-ID, ENTERPRISE2-ID, ENTERPRISE3-ID ... ENTERPRISE20-ID.
Unternehmensbesitzer finden die richtige Unternehmens-ID, die in der Kopfzeile für jedes Unternehmen verwendet werden soll. Siehe Suchen der Kopfzeile.
Hinweis
Derzeit unterstützen wir bis zu 20 eindeutige Unternehmens-IDs, die in den Header aufgenommen werden sollen.
Aufhebung der Einschränkung für bestimmte Benutzende
Du möchtest vielleicht die Einschränkung für bestimmte Benutzer aufheben, die mit einem persönlichen Konto zu Open-Source-Ressourcen beitragen oder bei Problemen Support-Tickets erstellen müssen. Hierfür musst du dein Netzwerk so konfigurieren, dass der Header nur für Benutzende injiziert wird, die du einschränken möchtest.
Beispiele für Optionen:
- Netzwerktrennung: Erstelle das Netzwerk „Work“, das den Header injiziert, und das Netzwerk „Open Source“, das den Header nicht injiziert. Beschränke den Zugriff auf das Netzwerk „Open Source“ auf Benutzende, die das Netzwerk benötigen.
- Gerätegruppierung: Wenn dein Proxy oder deine Firewall authentifiziert ist, kannst du eine Gruppe von Benutzenden auswählen, die den Header nicht benötigen, und sie selektiv aus der Injektion ausschließen.
Nicht unterstützte Funktionen
Da diese Einschränkung nur für Anforderungen gilt, die über einen Proxy gesendet werden, der einen Unternehmensheader hinzufügt, unterstützen bestimmte GitHub Features die Einschränkung nicht, um zu verhindern, dass Benutzer auf ihre persönlichen Konten zugreifen oder diese verwenden. Um zu verhindern, dass Benutzer in Ihrem Netzwerk auf diese Features zugreifen, müssen Sie die unten beschriebenen Änderungen vornehmen.
| Merkmal | Zugeordneter Endpunkt | Hinweise |
|---|---|---|
| GitHub Pages | github.io | Dies sind in der Regel von den Benutzenden generierte Inhalte, die keine Daten akzeptieren können. Du solltest den Zugriff nicht einschränken. |
| GitHub Codespaces | github.dev | Um den Zugriff einzuschränken, blockiere den Endpunkt vollständig. |
| SSH-Zugriff | Port 22 an GitHub.com | Um den Zugriff einzuschränken, blockiere den Endpunkt vollständig. |
| SSH über HTTPS | ssh.github.com | Um den Zugriff einzuschränken, blockiere den Endpunkt vollständig. |
| GitHub-gehostete Läufer | Verschiedene | Um ein bestimmtes Routing zu erzwingen, verwende das private Azure-Netzwerk. Weitere Informationen findest du unter Informationen zu privaten Azure-Netzwerken für von GitHub gehostete Runner in Ihrem Unternehmen. |
| Selbstgehosteten Runnern | Verschiedene | Verwenden Sie einen Proxyserver, um ein bestimmtes Routing zu erzwingen. Weitere Informationen findest du unter Verwendung von Proxyservern mit einem Runner. |
Endpunkte, die keine Einschränkung erfordern
Die folgenden Endpunkte unterstützen oder erfordern die Einschränkung nicht, da sie nur Daten bereitstellen und nicht akzeptieren.
*.githubusercontent.com*.githubassets.com- WebSocket-Datenverkehr auf GitHub.com
Wie funktioniert die Einschränkung?
Für Datenverkehr, der den Unternehmensheader enthält, wenn ein Benutzer versucht, über das Web, Git oder die API mit GitHub.com einem Benutzerkonto (oder einem Token, das einem Benutzerkonto zugeordnet ist) zuzugreifen, das kein Mitglied des Unternehmens ist:
- Den Benutzenden wird eine Fehlermeldung mit dem Statuscode
403angezeigt. Weitere Informationen findest du unter Fehler, die blockierten Benutzenden angezeigt werden. - Ein
business.proxy_security_header_unsatisfied-Ereignis wird in den Unternehmensüberwachungsprotokollen protokolliert. Diese Protokollereignisse weisen aufgrund von Datenschutzgründen keinactor-Feld auf, verfügen aber bei Aktivierung über einactor_ip-Feld (siehe Anzeigen von IP-Adressen im Überwachungsprotokoll für dein Unternehmen). Um diese Ereignisse weiter zu untersuchen, kannst du die Proxyprotokolle in deiner Umgebung überprüfen.
Die folgenden Abschnitte enthalten Details zum erwarteten Verhalten, das für die Webaktivität und API-Anforderungen der Benutzenden gilt.
Webaktivität
Bei Aktivitäten auf der GitHub.com Benutzeroberfläche schränkt der Header ein, bei welchen Konten sich ein Benutzer anmelden kann.
Wenn sich ein Benutzer in deinem Netzwerk befindet, gilt Folgendes:
- Kann sich bei einem verwaltetes Benutzerkonto in Ihrem Unternehmen anmelden.
- Sie können sich nicht bei einem Konto außerhalb deines Unternehmens anmelden.
- Sie können den Kontowechsel nicht verwenden, um zu einem Konto außerhalb deines Unternehmens zu wechseln.
Wenn ein Benutzer bereits bei einem Konto außerhalb Ihres Unternehmens angemeldet ist (z. B. wenn er sich außerhalb Ihres Netzwerks angemeldet hat), erhält der Benutzer, wenn er sein Gerät in Ihr Netzwerk einführt, einen Fehler und kann erst dann darauf zugreifen GitHub.com , wenn er sich mit dem unternehmenseigenen Konto anmeldet.
Git-Aktivität
Wenn Ihr Proxy so konfiguriert ist, dass der Header in HTTP(S)-Anforderungen eingefügt wird, werden Benutzer in Ihrem Netzwerk daran gehindert, sich über HTTP(S) zu GitHub.com authentifizieren, es sei denn, sie sind Mitglied Ihres Unternehmens. Öffentliche Leseanforderungen werden für nicht authentifizierte anonyme Benutzende nicht blockiert.
Du kannst den Unternehmensheader nicht verwenden, um Git-Aktivitäten über SSH einzuschränken. Stattdessen kannst du den Port für SSH-Anforderungen vollständig blockieren. Weitere Informationen findest du unter Nicht unterstützte Features.
API-Anforderungen
Bei REST- und GraphQL-API-Datenverkehr zu api.github.com, einschließlich Anforderungen über den GitHub CLIHeader, schränkt der Header die Verwendung von Zugriffstoken ein, während Benutzer mit Ihrem Netzwerk verbunden sind.
| Szenario | Ergebnis | Betroffene Tokentypen |
|---|---|---|
| Ein Benutzer verwendet ein personal access token Konto, das ihrem Unternehmen gehört. | Dies personal access token funktioniert wie erwartet in API-Anforderungen. | |
ghp_ und github_pat_ | ||
| Während der Verbindung mit Ihrem Netzwerk versucht ein Benutzer, ein mit einem Benutzer außerhalb Ihres Unternehmens verknüpftes personal access token zu verwenden. | Tokenanforderungen werden blockiert. | |
ghp_ und github_pat_ | ||
| Während Benutzende sich nicht in deinem Netzwerk befinden und ein Konto außerhalb deines Unternehmens verwenden, melden sie sich bei einer OAuth-App an, die auf ihrem Gerät ausgeführt wird. Der Benutzer bringt dann sein Gerät in dein Netzwerk. | OAuth-Tokens aus der App funktionieren nicht mehr. | gho_ |
| Außerhalb Ihres Netzwerks und mit einem Konto außerhalb Ihres Unternehmens meldet sich ein Benutzer bei einem GitHub App an, das auf seinem Gerät ausgeführt wird. Der Benutzer bringt dann sein Gerät in dein Netzwerk. | Tokens aus der App funktionieren nicht mehr. | ghu_ |
| Während eine Verbindung mit Ihrem Netzwerk hergestellt wird, versucht eine Anwendung, eine Sitzung für einen Benutzer außerhalb Ihres Unternehmens mithilfe eines GitHub App Aktualisierungstokens zu aktualisieren. | Bei der Aktualisierung tritt ein Fehler auf. | ghr_ |
| Während einer bestehenden Verbindung mit deinem Netzwerk versucht eine Anwendung, ein Installationstoken (Token ohne Benutzeridentität, nur App-Identität) für eine Organisation außerhalb deines Unternehmens abzurufen. | Das Token funktioniert nicht. | ghs_ |
Fehler, die den blockierten Benutzenden angezeigt werden
Wenn die Einschränkung erwartungsgemäß funktioniert, werden den Benutzenden Fehlermeldungen angezeigt. In den folgenden Situationen treten Fehler auf:
- Webaktivität: Wenn Benutzer daran gehindert werden, sich anzumelden oder eine bestehende veraltete Sitzung zu nutzen.
- API-Aktivität: Wenn ein Benutzer versucht, ein Token zu verwenden, das einem Benutzer außerhalb des Unternehmens zugeordnet ist.
- Installationstoken: Wenn eine Anwendung versucht, ein Installationstoken zu verwenden, um auf ein Organisations- oder Benutzerkonto außerhalb des Unternehmens zuzugreifen. Bei Installationen werden nur Schreibanforderungen blockiert. Leseanforderungen werden nicht für Ressourcen außerhalb des Unternehmens blockiert. Weitere Informationen zu Installationstoken findest du unter Authentifizieren als GitHub App-Installation.
| Szenario | Fehlercode | Nachricht |
|---|---|---|
| Webaktivität | 403 | Ihr Netzwerkadministrator hat den Zugriff auf GitHub mit Ausnahme von ENTERPRISE Enterprise blockiert. Bitte melden Sie sich mit Ihrem _SHORTCODE-Konto an, um auf GitHub zuzugreifen. |
| API-Aktivität | 403 | Ihr Netzwerkadministrator hat den Zugriff auf GitHub mit Ausnahme von ENTERPRISE Enterprise blockiert. Verwenden Sie ein Token für einen Benutzer aus dem _SHORTCODE Unternehmen, um darauf zuzugreifen GitHub. |
| Installationstoken | 403 | Ihr Netzwerkadministrator hat den Zugriff auf GitHub blockiert, außer für ENTERPRISE Enterprise. Nur Tokens des Unternehmens „SHORTCODE“ können auf GitHub zugreifen. |
Fehler mit einem 400-Code deuten auf einen Fehler in deiner Konfiguration hin. Informationen hierzu finden Sie unter Problembehandlung.
Beispiel für lokale Tests
Du kannst deine Netzwerkkonfiguration lokal mit einem Webdebuggingtool testen. Dieser Abschnitt enthält ein Beispiel, in dem Fiddler verwendet wird. Beachten Sie, dass Fiddler und andere externe Debugging-Tools nicht Bestandteil von GitHub-Support sind.
Im folgenden Beispiel fügst du einige FiddlerScript-Elemente hinzu, die für jede Anforderung ausgeführt werden.
-
Installieren Sie Fiddler.
-
Konfiguriere Fiddler für das Entschlüsseln von HTTPS-Datenverkehr. Weitere Informationen findest du in der Fiddler-Dokumentation.
-
Navigiere in Fiddler zur Registerkarte „FiddlerScript“, und füge der
OnBeforeRequest-Funktion den folgenden Code hinzu. Lege dieenterpriseId-Variable auf deine Unternehmens-ID fest.JavaScript // Your enterprise id var enterpriseId: String = "YOUR-ID"; //Inject on the web UI if (oSession.HostnameIs("github.com")){ oSession.oRequest.headers.Add("sec-GitHub-allowed-enterprise",enterpriseId) oSession["ui-color"] = "green"; } // Inject on API calls if (oSession.HostnameIs("api.github.com")){ oSession.oRequest.headers.Add("sec-GitHub-allowed-enterprise",enterpriseId) oSession["ui-color"] = "blue"; } // Inject on Copilot API calls if (oSession.HostnameIs("githubcopilot.com")){ oSession.oRequest.headers.Add("sec-GitHub-allowed-enterprise",enterpriseId) oSession["ui-color"] = "yellow"; }// Your enterprise id var enterpriseId: String = "YOUR-ID"; //Inject on the web UI if (oSession.HostnameIs("github.com")){ oSession.oRequest.headers.Add("sec-GitHub-allowed-enterprise",enterpriseId) oSession["ui-color"] = "green"; } // Inject on API calls if (oSession.HostnameIs("api.github.com")){ oSession.oRequest.headers.Add("sec-GitHub-allowed-enterprise",enterpriseId) oSession["ui-color"] = "blue"; } // Inject on Copilot API calls if (oSession.HostnameIs("githubcopilot.com")){ oSession.oRequest.headers.Add("sec-GitHub-allowed-enterprise",enterpriseId) oSession["ui-color"] = "yellow"; } -
Klicke auf Skript speichern.
Der Header wird nun für jede der angegebenen Domänen injiziert, während die Paketerfassung aktiv ist. Um die Injektion zu aktivieren oder zu deaktivieren, kannst du die Einstellung für die Paketerfassung ändern, indem du auf Datei > Datenverkehr erfassen klickst.
Du kannst diese Injektion aktivieren und deaktivieren, um die Anmeldung mit einem unzulässigen Konto und das Herstellen einer Verbindung mit dem Netzwerk bzw. die Anmeldung bei einem unzulässigen Konto bei bestehender Verbindung mit dem Netzwerk zu simulieren.
Problembehandlung
Wenn die Headerinjektion nicht wie erwartet funktioniert, werden Fehler mit dem 400-Code angezeigt, wenn du versuchst, die betroffenen Endpunkte zu verwenden. Diese unterscheiden sich von den 403-Fehlern, die angezeigt werden, wenn das Feature erwartungsgemäß funktioniert (siehe Fehler, die blockierten Benutzenden angezeigt werden).
Im Allgemeinen treten 400-Fehler in den folgenden Situationen auf.
- Der Header verwendet einen ungültigen Platzhalter oder eine ungültige Unternehmens-ID.
- Der Header listet mehrere Unternehmen auf.
- Die Anforderung enthält mehrere
sec-GitHub-allowed-enterprise-Header.
| Szenario | Fehlercode | Nachricht |
|---|---|---|
| Ungültiger Platzhalter oder ungültige ID | 400 | Das im sec-Git Header benannte Unternehmen kann nicht gefunden werden. Stellen Sie sicher, dass der „Enterprise-Platzhalter“ in den Firewall- oder Proxy-Einstellungen korrekt eingegeben ist. Wenden Sie sich an Den Netzwerkadministrator, wenn dieser Fehler weiterhin besteht. |
| Mehrere Unternehmen | 400 | Nur ein Unternehmen kann mit dem sec-Git Header verwendet werden. Stellen Sie sicher, dass nur ein einzelnes Unternehmen und ein einzelner Header bereitgestellt werden. Wenn dieses Problem weiterhin besteht, wenden Sie sich an den Netzwerkadministrator. |
| Mehrere Header | 400 | Mehr als ein sec-Git wurde empfangen. Dieser Header muss von der Firewall oder dem Proxy überschrieben werden, um sicherzustellen, dass nur einem einzelnen Unternehmen Zugriff gewährt wird. Wenn dieses Problem weiterhin besteht, wenden Sie sich an den Netzwerkadministrator. |