Informationen zur SCIM-Bereitstellung unter GitHub Enterprise Server
Um Benutzerkonten mit SCIM bereitzustellen und zu verwalten, muss Ihr Identitätsverwaltungssystem die folgenden Funktionen bieten:
- Single Sign-On-Authentifizierung zur Implementierung von Security Assertion Markup Language (SAML) 2.0
- Verwaltung des Benutzerlebenszyklus mit System for Cross-Domain Identity Management (SCIM)
Wenn Sie die Authentifizierung und Bereitstellung für Ihr Unternehmen konfigurieren, können Sie entweder einen Partner-IdP verwenden oder eine andere Kombination aus Identitätsverwaltungssystemen verwenden.
Verwendung eines Partneridentitätsanbieters
Jeder IdP-Partner stellt eine „paved-path“-Anwendung bereit, die sowohl SSO als auch die Verwaltung des Benutzerlebenszyklus implementiert. Um die Konfiguration zu vereinfachen, empfiehlt es sich, GitHub eine einzelne Partner-IDP-Anwendung sowohl für die Authentifizierung als auch für die Bereitstellung zu verwenden. Weitere Informationen und eine Liste der Partner-IDPs finden Sie unter Informationen zur Benutzerbereitstellung mit SCIM auf GitHub Enterprise Server.
Weitere Informationen zum Konfigurieren der SCIM-Bereitstellung mithilfe eines Partner-IdP findest du unter Konfigurieren der SCIM-Bereitstellung zum Verwalten von Benutzern.
Verwenden anderer Identitätsverwaltungssysteme
Wenn du aufgrund von Migrationsaufwand, Lizenzierungskosten oder langwierigen Prozessen in der Organisation nicht denselben Partner-IdP für die Authentifizierung und die Bereitstellung verwenden kannst, kannst du ein anderes Identitätsverwaltungssystem oder eine Kombination aus verschiedenen Systemen verwenden. Die Systeme müssen die Authentifizierung mithilfe von SAML und Benutzerlebenszyklusverwaltung mithilfe von SCIM bereitstellen und die GitHubIntegrationsrichtlinien einhalten.
GitHub unterstützt nicht ausdrücklich das Mischen von Partner-IdPs für die Authentifizierung und Bereitstellung und testet nicht alle Identitätsverwaltungssysteme. Das GitHub-Supportteam ist möglicherweise nicht in der Lage, Ihnen bei Problemen im Zusammenhang mit gemischten oder ungetesteten Systemen zu helfen. Wenn Sie Hilfe benötigen, müssen Sie die Dokumentation, das Supportteam oder andere Ressourcen des Systems konsultieren.
Wichtig
Die Kombination aus Okta und Entra ID für SSO und SCIM (in beliebiger Reihenfolge) wird explizit nicht unterstützt. Die SCIM-API von GitHub gibt bei Bereitstellungsversuchen einen Fehler an den Identitätsanbieter zurück, wenn diese Kombination konfiguriert ist.
Voraussetzungen
Um SCIM mithilfe der REST-API zu implementieren, gelten für GitHub Enterprise Server die allgemeinen Voraussetzungen für die Verwendung von SCIM. Weitere Informationen findest du im Abschnitt „Voraussetzungen“ unter Konfigurieren der SCIM-Bereitstellung zum Verwalten von Benutzern.
Darüber hinaus gelten die folgenden Voraussetzungen:
-
Du musst die Schritte 1 bis 3 in Konfigurieren der SCIM-Bereitstellung zum Verwalten von Benutzern abgeschlossen haben.
- Sie müssen den für den integrierten Setup-Benutzer erstellten personal access token (classic) verwenden, um Anfragen an die REST-API zu authentifizieren.
-
Um Benutzer und Gruppen mit der REST-API von GitHub bereitzustellen, muss Ihr Identitätsverwaltungssystem den SCIM 2.0-Standard unterstützen. Weitere Informationen finden Sie hier auf den folgenden RFC auf der IETF-Website.
-
Die Benutzerdatensätze in den Systemen, die Sie zur Authentifizierung und Provisionierung verwenden, müssen einen eindeutigen Bezeichner gemeinsam haben und die Abgleichskriterien von GitHub erfüllen. Weitere Informationen findest du in der Dokumentation zur REST-API unter REST-API-Endpunkte für SCIM.
Bewährte Methoden für die SCIM-Bereitstellung mit GitHubder REST-API
Wenn Sie Ihr Identitätsverwaltungssystem so konfigurieren, dass Benutzer oder Benutzergruppen auf GitHub provisioniert werden, empfiehlt GitHub dringend, die folgenden Richtlinien zu befolgen.
- Stellen Sie sicher, dass Ihr Identitätsverwaltungssystem die einzige Quelle für Schreibvorgänge ist
- Senden gültiger Anforderungen an REST-API-Endpunkte
- Bereitstellen von Benutzern vor der Bereitstellung von Gruppen
- Überprüfen des Zugriffs für Gruppen auf GitHub
- Ratenbegrenzungen für GitHub verstehen
- Konfigurieren des Streamings von Überwachungsprotokollen
- Einschränken des Umfangs des SCIM-Tokens
- Verstehen Sie die Auswirkungen von Deprovisioning
Stellen Sie sicher, dass Ihr Identitätsverwaltungssystem die einzige Quelle für Schreibvorgänge ist
Um sicherzustellen, dass Ihre Umgebung über eine Single Source of Truth verfügt, sollten Sie nur programmgesteuert in die REST-API für die SCIM-Bereitstellung aus Ihrem Identitätsverwaltungssystem schreiben.
GitHub empfiehlt dringend, dass nur ein System POST, PUT, PATCH oder DELETE-Anfragen an die API sendet.
Sie können jedoch Informationen sicher aus den APIs von GitHub mit GET Anfragen in Skripten oder durch Ad-hoc-Anfragen eines Unternehmenseigentümers abrufen.
Warnung
Wenn du einen Partner-IdP für die SCIM-Bereitstellung verwendest, muss die Anwendung auf dem IdP das einzige System sein, das Schreibanforderungen an die API sendet. Wenn Sie Ad-hoc-Anforderungen mit den Methoden POST, PUT, PATCH oder DELETE vornehmen, schlagen nachfolgende Synchronisierungsversuche fehl und die Bereitstellung funktioniert für Ihr Unternehmen nicht ordnungsgemäß.
Senden gültiger Anforderungen an REST-API-Endpunkte
GitHubs REST-API-Endpunkte zur Benutzerbereitstellung mit SCIM erfordern korrekt formatierte Anfragen. Beachten Sie die folgenden Richtlinien:
- Anforderungen, die nicht den Erwartungen der API entsprechen, geben einen
400 Bad Request-Fehler zurück. - REST-API-Endpunkte für die Bereitstellung von Benutzern mit SCIM erfordern einen
User-AgentHeader. GitHub wird Anforderungen ohne diesen Header ablehnen.
Benutzer bereitstellen, bevor Sie Gruppen bereitstellen
SCIM-Gruppen sind effektiv für die Verwaltung des Benutzerzugriffs in großem Stil. Beispielsweise können Sie Gruppen in Ihrem Identitätsverwaltungssystem verwenden, um Team- und Organisationsmitgliedschaften auf GitHub zu verwalten.
Um die Teammitgliedschaft mit Gruppen in Ihrem Identitätsverwaltungssystem zu verwalten, müssen Sie die folgenden Schritte ausführen:
- Bereitstellen von Benutzerkonten auf GitHub.
- Eine Gruppe auf GitHub bereitstellen.
- Aktualisieren Sie die Mitgliedschaft der Gruppe im Identitätsverwaltungssystem.
- Erstellen Sie in GitHub ein Team, das der Gruppe in Ihrem Identitätsmanagementsystem zugeordnet ist.
Überprüfen des Zugriffs für Gruppen auf GitHub
Wenn Sie den Zugriff mithilfe von Gruppen auf IhremIdentitätsverwaltungssystem verwalten, können Sie überprüfen, ob Benutzer den gewünschten Zugriff erhalten. Sie können die REST-API verwenden, um die Gruppenmitgliedschaften Ihres Systems mit GitHubdem Verständnis dieser Gruppen zu vergleichen. Weitere Informationen findest du in der Dokumentation zur REST-API unter REST-API-Endpunkte für externe Gruppen und REST-API-Endpunkte für Teams.
Ratenbegrenzungen für GitHub verstehen
Wenn ein Website-Administrator Ratenbegrenzungen für Ihre Instanz aktiviert hat, treten möglicherweise Fehler auf, wenn Sie Benutzer erstmals bereitstellen. Du kannst deine IdP-Protokolle überprüfen, um zu bestätigen, ob versuchte SCIM-Bereitstellungen oder Pushvorgänge aufgrund eines Fehlers bei der Ratenbegrenzung fehlgeschlagen sind. Die Antwort auf einen fehlgeschlagenen Bereitstellungsversuch hängt vom IdP ab.
Weitere Informationen finden Sie unter Ratenbegrenzungen für die REST-API.
Konfigurieren des Streamings von Überwachungsprotokollen
Das Überwachungsprotokoll für Ihr Unternehmen zeigt Details zu Aktivitäten in Ihrem Unternehmen an. Sie können das Überwachungsprotokoll verwenden, um Ihre Konfiguration von SCIM zu unterstützen. Weitere Informationen finden Sie unter Überwachungsprotokoll für ein Unternehmen.
Aufgrund des Umfangs der Ereignisse in diesem Protokoll GitHub werden die Daten 180 Tage lang aufbewahrt. Um sicherzustellen, dass keine Überwachungsprotokolldaten verloren gehen, und um detailliertere Aktivitäten im Überwachungsprotokoll anzuzeigen, empfiehlt GitHub, das Streaming des Überwachungsprotokolls zu konfigurieren. Wenn Sie das Überwachungsprotokoll streamen, können Sie optional Ereignisse für API-Anforderungen streamen, einschließlich Anforderungen an REST-API-Endpunkte für die SCIM-Bereitstellung. Weitere Informationen finden Sie unter Streaming des Überwachungsprotokolls für Ihre Organisation.
Einschränken des Umfangs des SCIM-Tokens
Für eine bessere Sicherheitslage empfehlen wir, ein personal access token (classic) zu verwenden, das nur den scim:enterprise Scope hat, um den Zugriff des Tokens auf die für SCIM-Aufrufe erforderlichen REST-API-Endpunkte zu beschränken.
Wenn Sie derzeit ein Token mit dem Bereich admin:enterprise verwenden, beachten Sie, dass dieses Token Zugriff auf alle Aktionen im Unternehmen gewährt. Sie können Ihr Token gegen ein neues Token mit nur dem scim:enterprise Bereich austauschen, ohne dass es zu Störungen kommt.
Auswirkungen der Deprovisionierung verstehen
Um einem Benutzer den Zugriff auf GitHub zu entziehen, können Sie entweder eine Anfrage zur „weichen Deprovisionierung“ oder zur „harten Deprovisionierung“ an Ihren SCIM-Anbieter senden. Hartes Deprovisioning ist eine unwiderrufliche Aktion, die das GitHub Konto eines Benutzers dauerhaft deaktiviert.
Bevor du eine API-Integration implementierst, stelle sicher, dass du die Deaktivierungstypen und deren Auswirkungen verstehst. Um mehr über die verschiedenen Arten der Deprovisionierung, ihre Auswirkungen und die von ihnen generierten Überwachungsereignisse zu erfahren, lesen Sie Deaktivieren und Reaktivieren von Benutzern mit SCIM.
Bereitstellen von Benutzern mithilfe der REST-API
Um Benutzer bereitzustellen, aufzulisten oder zu verwalten, stellen Sie Anforderungen an die folgenden REST-API-Endpunkte. Sie können die zugehörigen API-Endpunkte in der REST-API-Dokumentation lesen und Codebeispiele anzeigen und Überwachungsprotokollereignisse überprüfen, die jeder Anforderung zugeordnet sind.
Bevor sich eine Person mit einer Identität in Ihrem Identitätsverwaltungssystem bei Ihrem Unternehmen anmelden kann, müssen Sie den entsprechenden Benutzer erstellen. Für Ihr Unternehmen ist keine verfügbare Lizenz erforderlich, um ein neues Benutzerkonto bereitzustellen.
- Eine Übersicht über die unterstützten Attribute für Benutzer findest du in der Dokumentation zur REST-API unter SCIM.
- Sie können bereitgestellte Benutzer auf der GitHub Benutzeroberfläche anzeigen. Weitere Informationen finden Sie unter Anzeigen von Personen in deinem Unternehmen.
- Unternehmensadmins mit CLI-Zugriff können mithilfe des Tools ghe-scim-identities-csv eine vollständige CSV-Datei mit bereitgestellten SCIM-Benutzeridentitäten exportieren.
| Aktion | Methode | Endpunkt und weitere Informationen | Ereignisse im Überwachungsprotokoll |
|---|---|---|---|
Listet alle bereitgestellten Benutzer für Ihr Unternehmen auf, einschließlich aller Benutzer, die soft-deprovisioniert sind, indem active auf false gesetzt wird. | GET | /scim/v2/Users | N/V |
Erstellen Sie einen Benutzer. Die Antwort der API enthält ein id-Feld zur eindeutigen Identifizierung des Benutzers. | POST | /scim/v2/Users |
|
Rufen Sie einen vorhandenen Benutzer in Ihrem Unternehmen mithilfe des Felds id aus der Anforderung POST ab, die Sie zum Erstellen des Benutzers gesendet haben. | GET | / | N/V |
Aktualisieren Sie alle Attribute eines vorhandenen Benutzers mithilfe des Felds id aus der Anforderung POST, die Sie zum Erstellen des Benutzers gesendet haben. Aktualisieren von active auf false, um die Bereitstellung des Benutzers vorläufig aufzuheben oder auf true, um den Benutzer erneut zu aktivieren. Weitere Informationen findest du unter Soft-Deprovisioning von Benutzern mit der REST API und Reprovisioning von Benutzern mit der REST API. | PUT | / |
|
Aktualisieren Sie ein einzelnes Attribut für einen vorhandenen Benutzer mithilfe des Felds id aus der Anforderung POST, die Sie zum Erstellen des Benutzers gesendet haben. Aktualisieren von active auf false, um die Bereitstellung des Benutzers vorläufig aufzuheben oder auf true, um den Benutzer erneut zu aktivieren. Weitere Informationen findest du unter Soft-Deprovisioning von Benutzern mit der REST API und Reprovisioning von Benutzern mit der REST API. | PATCH | / |
|
| Um einen vorhandenen Benutzer dauerhaft zu sperren, kannst du den Benutzer endgültig aus der Provisionierung entfernen. Nach der endgültigen Entprovisionierung können Sie den Benutzer nicht reaktivieren und Sie müssen den Benutzer als neuen Benutzer einrichten. Weitere Informationen finden Sie unter Hard-Deprovisionierung von Benutzern mit der REST-API. | DELETE | / |
|
Soft-Deprovisioning von Benutzern mit der REST API
Um zu verhindern, dass sich ein Benutzer für den Zugriff auf Ihr Unternehmen anmeldet, können Sie die Bereitstellung des Benutzers vorläufig aufheben, indem Sie eine PUT- oder PATCH-Aufforderung zur Aktualisierung des active-Felds eines Benutzers auf false auf /scim/v2/Users/{scim_user_id} schicken. Wenn Sie die Bereitstellung eines Benutzers sanft aufheben, verschleiert GitHub die Felder login und email im Benutzerdatensatz, und der Benutzer wird gesperrt.
Reaktivieren von Benutzern mit der REST-API
Um es einem Benutzer mit vorläufig aufgehobener Bereitstellung zu ermöglichen, sich für den Zugriff auf Ihr Unternehmen anzumelden, entsperren Sie den Benutzer, indem Sie eine PUT- oder PATCH-Anforderung an /scim/v2/Users/{scim_user_id} senden, die das Feld active des Benutzers auf true aktualisiert.
Endgültiges Deprovisioning von Benutzern mit der REST-API
Wichtig
Hartes Deprovisioning ist eine unwiderrufliche Aktion, die das GitHub Konto eines Benutzers dauerhaft deaktiviert. Siehe Verstehen der Auswirkungen von Deprovisioning.
Sie können den Benutzer hart-deprovisionieren, indem Sie eine DELETE Anfrage an /scim/v2/Users/{scim_user_id} senden. Ihr Unternehmen behält alle vom Benutzer erstellten Ressourcen und Kommentare bei.
Bereitstellen von Gruppen mit der REST-API
Um den Zugriff auf Repositorys in Ihrem Unternehmen zu steuern, können Sie Gruppen in Ihrem Identitätsverwaltungssystem benutzen, um Organisations- und Teammitgliedschaften für Benutzer in Ihrem Unternehmen zu verwalten. Sie können die zugehörigen API-Endpunkte in der REST-API-Dokumentation lesen und Codebeispiele anzeigen und Überwachungsprotokollereignisse überprüfen, die jeder Anforderung zugeordnet sind.
Obwohl Ihr Unternehmen keine verfügbare Lizenz zum Bereitstellen eines neuen Benutzerkontos erfordert, müssen Sie über verfügbare Lizenzen für diese Benutzer verfügen, wenn Sie eine Gruppe bereitstellen, die das Hinzufügen von Benutzern zu einer Organisation führt.
- Eine Übersicht über die unterstützten Attribute für Gruppen findest du in der Dokumentation zur REST-API unter SCIM.
- Eine Übersicht über Überwachungsprotokollereignisse im Zusammenhang mit Gruppen findest du unter Prüfprotokollereignisse für Ihr Unternehmen.
- Sie können bereitgestellte Gruppen auf der GitHub Benutzeroberfläche anzeigen. Weitere Informationen finden Sie unter Verwaltung von Teammitgliedschaften mithilfe von Identitätsanbieter-Gruppen.
| Aktion | Methode | Endpunkt und weitere Informationen | Verwandte Ereignisse im Überwachungsprotokoll |
|---|---|---|---|
| Listet alle Gruppen auf, die für Ihr Unternehmen definiert sind. | GET | /scim/v2/Groups | N/V |
Um eine neue IdP-Gruppe für Ihr Unternehmen zu definieren, erstellen Sie die Gruppe. Die Antwort der API enthält ein id-Feld zur eindeutigen Identifizierung der Gruppe. | POST | /scim/v2/Groups |
|
Rufen Sie eine vorhandene Gruppe für Ihr Unternehmen mithilfe der id von der POST-Anforderung ab, die Sie zum Erstellen der Gruppe gesendet haben. | GET | / | N/V |
| Aktualisieren aller Attribute für eine vorhandene Gruppe. | PUT | / |
|
| Aktualisieren eines einzelnen Attributs für eine vorhandene Gruppe. | PATCH | / |
|
| Vollständiges Löschen einer vorhandene Gruppe. | DELETE | / |
|
Zusätzliche Überwachungsprotokollereignisse für Änderungen an IdP-Gruppen
Wenn Sie die Mitglieder einer bestehenden Gruppe mithilfe einer PUT- oder PATCH-Anfrage an /scim/v2/Groups/{scim_group_id} aktualisieren, kann GitHub den Benutzer zur Organisation hinzufügen oder aus der Organisation entfernen, abhängig von der aktuellen Organisationsmitgliedschaft des Benutzers. Wenn der Benutzer bereits Mitglied mindestens eines Teams in der Organisation ist, ist der Benutzer Mitglied der Organisation. Wenn der Benutzer kein Mitglied eines Teams in der Organisation ist, ist der Benutzer möglicherweise auch noch kein Mitglied der Organisation.
Wenn Ihre Anforderung eine Gruppe aktualisiert, die mit einem Team in einer Organisation verknüpft ist, in der ein Benutzer nicht bereits Mitglied ist, werden zusätzlich zu external_group.update die folgenden Ereignissen im Überwachungsprotokoll angezeigt:
org.add_member- Wenn die Anforderung einen Benutzer zu einer Gruppe hinzufügt, die mit einem Team in einer Organisation verknüpft ist, in der der Benutzer noch kein Mitglied ist,
org.add_member - Wenn die Anforderung den Benutzer zu einer Gruppe hinzufügt, die mit einem Team in einer Organisation verknüpft ist,
team.add_member
Wenn Ihre Anforderung eine Gruppe aktualisiert, die mit einem Team in einer Organisation verknüpft ist, in der ein Benutzer bereits Mitglied ist, werden zusätzlich zu external_group.update die folgenden Ereignissen im Überwachungsprotokoll angezeigt:
- Wenn die Anforderung den Benutzer aus einer Gruppe entfernt, die mit einem Team in einer Organisation verknüpft ist, und das Team nicht das letzte Team in der Organisation ist, in dem der Benutzer Mitglied ist,
team.remove_member - Wenn die Anforderung einen Benutzer aus einer Gruppe entfernt, die mit dem letzten Team in einer Organisation verknüpft ist, in der der Benutzer bereits Mitglied ist,
org.remove_member
Problembehandlung bei der SCIM-Bereitstellung
-
Wenn Ihre Anforderungen an die REST-API zeitlich begrenzt sind, finden Sie weitere Informationen unter "Grundlegendes zu Ratelimits für GitHub" .
-
Alle SCIM-Anfragen, die GitHub empfängt, mit Ausnahme erfolgreicher HTTP-
GET-Anfragen, generieren ein Audit-Log-Ereignis. Diese Protokolle enthalten nützliche Informationen über das Anforderungsergebnis, Nutzdateninformationen und alle Fehler. Diese Protokolle können verwendet werden, um zu ermitteln, ob GitHub eine SCIM-Anforderung empfangen wurde, und api-Fehler zu beheben.- Um festzustellen, ob ein Benutzer bereitgestellt wurde, kannst du die folgende Überwachungsprotokollabfrage verwenden:
action:external_identity.provision user:USERNAME - Wenn du einen Benutzer, der die oben genannte Abfrage verwendet, nicht findest, kannst du nach
action:external_identity.scim_api_failure-Ereignissen am Datum suchen, an dem du die Anforderung erhalten haben solltest.
- Um festzustellen, ob ein Benutzer bereitgestellt wurde, kannst du die folgende Überwachungsprotokollabfrage verwenden:
-
Wenn eine SCIM-Anforderung fehlschlägt und Sie die Ursache nicht ermitteln können, überprüfen Sie den Status Ihres Identitätsverwaltungssystems, um sicherzustellen, dass Dienste verfügbar waren.
-
Wenn bei einer Anforderung zum Bereitstellen eines Benutzers ein
400-Fehler auftritt und die Fehlermeldung im Protokoll deines Identitätsverwaltungssystems auf Probleme mit dem Kontobesitz oder der Benutzernamenformatierung hinweist, findest du weitere Informationen unter Überlegungen zum Benutzernamen für die externe Authentifizierung. -
Nach erfolgreicher Authentifizierung verknüpft GitHub den authentifizierten Benutzer mit einer von SCIM bereitgestellten Identität. Die eindeutigen Bezeichner für Authentifizierung und Bereitstellung müssen übereinstimmen. Weitere Informationen finden Sie unter REST-API-Endpunkte für SCIM.
-
Wenn Sie den Zugriff über Gruppen in Ihrem Identitätsverwaltungssystem verwalten, können Sie Probleme mithilfe der REST-API oder der Webbenutzeroberfläche für GitHub beheben.
- Sie können die REST-API verwenden, um die Gruppenmitgliedschaften Ihres Identitätsverwaltungssystems mit GitHubdem Verständnis dieser Gruppen zu vergleichen. Weitere Informationen findest du unter REST-API-Endpunkte für externe Gruppen und REST-API-Endpunkte für Teams.
- Weitere Informationen zur Problembehandlung mithilfe der Web-Benutzeroberfläche findest du unter Fehlerbehebung bei der Teammitgliedschaft mit Gruppen von Identitätsanbietern.
Weitere Problembehandlungsvorschläge findest du unter Problembehandlung bei der Identitäts- und Zugriffsverwaltung deines Unternehmens.