Identifizieren unterstützter Zugriffstoken
Hier erfahren Sie mehr über die verschiedenen GitHub-Zugriffstoken, deren Anwendungen, Einschränkungen und Ratenbegrenzungen.
Wenn Sie Benutzern innerhalb Ihres Unternehmens Zugriff gewähren, ist die Authentifizierung unglaublich wichtig. Der Benutzerzugriff sollte eng begrenzt sein und nur das umfassen, was für die Erledigung der jeweiligen Aufgaben erforderlich ist. Es ist wichtig, die verschiedenen Zugriffstoken zu kennen, um den Benutzer*innen im Unternehmen zu helfen, die beste Option für ihre Anwendungsfälle zu verwenden.
In GitHub werden verschiedene Token verwendet, mit denen sich Benutzer*innen für die verschiedenen Aktivitäten, die sie ausführen müssen, authentifizieren können. In der Regel sind diese verschiedenen Token unkompliziert, und es ist einfach zu erkennen, welches Token zu verwenden ist. Manchmal können jedoch mehrere Token verwendet werden, um das gleiche Ergebnis zu erzielen, sodass die Wahl eines Tokens auf eine Entscheidung zwischen gut, besser und am besten hinauslaufen kann. In diesen Situationen ist es wichtig, die Merkmale der GitHub-Tokens zu kennen und zu wissen, wie der Geltungsbereich für den Zugriff auf ein Token ordnungsgemäß festgelegt wird. Hier finden Sie eine Liste mit den verschiedenen verfügbaren Zugriffstoken:
- Persönliches Zugriffstoken in GitHub
- Benutzer-zu-Server-Token in GitHub
- Server-zu-Server-Token in GitHub
- OAuth-Zugriffstoken
- Aktualisierungstoken
Sie sollten das Entwicklungsteam dringend ermutigen, Token mit dem richtigen Geltungsbereich zu verwenden, sodass Sicherheitsrisiken schneller entschärft werden können, sobald sie erkannt werden. Nachfolgend werden diese Zugriffstoken ausführlicher beschrieben.
Persönliche Zugriffstoken
Ein persönliches Zugriffstoken (Personal Access Token, PAT) ist eine Alternative zur Verwendung eines Kennworts für die Authentifizierung bei GitHub. Zum Pushen und Pullen von Repositorys muss bei GitHub der Benutzerzugriff überprüft werden. Die Überprüfung erfolgt über die überprüfte E-Mail-Adresse eines Benutzers oder einer Benutzerin. Sie können so viele persönliche Zugriffstoken erstellen, wie Ihr Workflow erfordert, und die Token sollten so sicher wie Kennwörter behandelt werden. Die Verwendung unterschiedlicher Token für verschiedene Anwendungen hat sich mit Blick auf die Sicherheit bewährt. Um ein persönliches Zugriffstoken in GitHub zu erstellen, navigieren Sie zu Einstellungen, und wählen Sie unter Entwicklereinstellungen die Option Persönliches Zugriffstoken aus.
Sie können einen Bereich für ein einzelnes Token festlegen, um nur den Zugriff zuzulassen, der für die Authentifizierung des Auftrags erforderlich ist, dem Sie es zuweisen. Das Token ist an bestimmte Benutzer*innen gebunden und richtet sich nach deren Zugriff auf die Organisation und die Repositorys. Sie können ein persönliches Zugriffstoken jederzeit widerrufen, was bei einem Sicherheitsproblem besonders wichtig ist. Sie sollten Ihrem Team unbedingt mitteilen, dass die persönlichen Zugriffstoken genauso sicher behandelt werden müssen wie Benutzername und Kennwort. Wenn ein Token kompromittiert wird, müssen Sie umgehend Maßnahmen zum Widerrufen des Tokens ergreifen.
Eine ausführliche Anleitung zum Erstellen eines persönlichen Zugriffstokens finden Sie unter Erstellen eines persönlichen Zugriffstokens.
Gerätetoken
Bei einem Gerätetoken handelt es sich im Prinzip um eine Computerkontoversion eines PAT, das im Zusammenhang mit einem Gerät verwendet wird, über das in bestimmten, nicht benutzergebundenen Anwendungsfällen auf ein bestimmtes Repository zugegriffen werden kann. Ein Gerätetoken wird beispielsweise bei der Einrichtung einer Anwendung verwendet, bei der ein OAuth-Flow zum Einsatz kommt. Gerätetoken werden in der Regel mit Runnern, bestimmten Anwendungsdiensten, Cronjobs (bei Linux) und anderen ähnlichen Szenarien im Zusammenhang mit automatisierten Aufgaben verwendet. Das Gerätetoken ist wie das persönliche Zugriffstoken an ein einzelnes Konto gebunden. Für das Konto, für das ein Gerätetoken erstellt wird, ist eine Lizenz erforderlich.
Token zum Installieren von Anwendungen in GitHub
Mithilfe eines Installationstokens kann eine GitHub-App authentifizierte API-Anforderungen für die Installation der Anwendung in einer Organisation erstellen. Bevor Sie ein Installationstoken erstellen, müssen Sie zuerst im Zielrepository die GitHub-App installieren, für die das Token gilt. Installationstoken sind für eine Stunde gültig, und sie sind sicher, da sie für einen bestimmten Zweck generiert wurden und in relativ kurzer Zeit ablaufen.
OAuth-Zugriffstoken
OAuth2-Token werden verwendet, um Benutzer*innen für OAuth-Standardanwendungen zu autorisieren, die im Browser ausgeführt werden. Zudem werden sie für Headless-Apps wie CLI-Tools verwendet. Mit ihrer Hilfe kann Ihre App mit einem Benutzerzugriffstoken auf die API zugreifen. Mithilfe dieser Token können Sie Ihre GitHub-Benutzeridentität mit Anwendungen von Drittanbietern verbinden, sodass die App Aktionen in Ihrem Namen ausführen kann. Wenn Sie beispielsweise eine App verwenden möchten, mit der der Geltungsbereich user:email angefordert wird, erhält die App schreibgeschützten Zugriff auf Ihre privaten E-Mail-Adressen. Diese Token können mithilfe des Webanwendungsflusses für Produktionsanwendungen abgerufen werden. Diese Token sind auch sicher, da sie eine kurze Laufzeit haben und innerhalb von 10 Minuten ablaufen.
Aktualisierungstoken
Ein Aktualisierungstoken ist mit einem OAuth-Token verbunden. Ein Aktualisierungstoken wird beim Zuweisen eines neuen OAuth-Tokens (über eine Benutzer-zu-Server-Anforderung) in die Antwort eingebunden. Wenn das Benutzertoken abläuft, kann das Aktualisierungstoken mit einer Rückrufanforderung gegen ein neues Benutzertoken ausgetauscht werden. Jedes Mal, wenn ein neues OAuth-Token ausgestellt wird, wird ein Aktualisierungstoken eingebunden. Aktualisierungstoken sind sechs Monate lang gültig und dienen zur Erinnerung daran, dass die OAuth-Token aktualisiert werden sollten.
Identifizierbare Präfixe
Wie in der gesamten Branche zu beobachten ist, sind Tokenpräfixe eine gute Möglichkeit, Token identifizierbar zu machen. GitHub enthält Präfixe aus drei Buchstaben, um jedes Token darzustellen. Das Präfix beginnt mit zwei Buchstaben, die das Unternehmen kennzeichnen, gh. Darauf folgt der erste Buchstabe des Tokentyps. Die Präfixe für die verfügbaren Zugriffstokentypen sind:
-
ghpfür persönliche Zugriffstoken in GitHub -
ghufür Benutzer-zu-Server-Token in GitHub -
ghsfür Server-zu-Server-Token in GitHub -
ghofür OAuth-Zugriffstoken -
ghrfür Aktualisierungstoken
Darüber hinaus enthalten diese Präfixe zur besseren Lesbarkeit ein Trennzeichen (_) innerhalb des Tokens. Ein Unterstrich ist kein Base64-Zeichen. Dadurch wird sichergestellt, dass zufällig generierte Zeichenfolgen wie Secure Hash Algorithms (SHAs) diese Token nicht versehentlich duplizieren können. Präfixe tragen auch dazu bei, die Quote der falsch positiven Ergebnisse bei der Geheimnisüberprüfung zu verringern. Dies ist eine GitHub Advanced Security-Funktion zur weiteren Verbesserung der Sicherheit im GitHub-Repository.
Ratenbegrenzungen für Token
Die Überschreitung von Ratenbegrenzungen kann dazu führen, dass Entwicklungszeit verloren geht. Im Folgenden geht es um Ratenbegrenzungen für GitHub-Apps und OAuth-Apps. Wenn Sie sich mit den Ratenbegrenzungen auskennen, können Sie die Entwickler*innen in Ihrem Team dabei unterstützen, die Investitionen Ihrer Organisation in diese GitHub-Ressourcen zu optimieren.
Ratenbegrenzungen helfen bei der Steuerung des Datenverkehrs in GitHub und basieren auf Anforderungen pro Stunde.
- Bei einer GitHub-App, die unter einem GitHub Enterprise-Konto installiert ist, ist die Rate auf 15.000 Anforderungen pro Stunde begrenzt.
- Eine OAuth-App wird für einen einzelnen Benutzer oder eine einzelne Benutzerin authentifiziert und ist auf 5.000 Anforderungen pro Stunde begrenzt.
Enterprise-Administrator*innen sollten die Ratenbegrenzung für Apps überwachen und mit den Entwickler*innen zusammen die Skripte so anpassen, dass die Begrenzungen eingehalten werden. In der Regel werden die Ratenbegrenzungen erst dann zum Problem, wenn Entwickler*innen beispielsweise ein Skript schreiben, mit dem zu viele Informationen in einem Workflow angefordert werden. Plötzlich kommt die Entwicklung zum Erliegen, und Ratenbegrenzungen werden zum Engpass. Diese durch die Überschreitung von Ratenbegrenzungen verursachten Probleme können vermieden werden, indem die Anzahl von Anforderungen pro Stunde begrenzt oder ein Workflow so geändert wird, dass zwischen den Anforderungen gewartet wird. Wenn Sie bei Verwendung der Standardauthentifizierung oder OAuth die Ratenbegrenzung überschreiten, können Sie das Problem wahrscheinlich beheben, indem Sie API-Antworten zwischenspeichern und bedingte Anforderungen verwenden.
Über die Verwaltungskonsole können Sie eine benutzerdefinierte Ratenbegrenzung für authentifizierte Benutzer*innen in Ihrem Unternehmen einrichten und eine Ausnahmeliste erstellen, mit deren Hilfe bestimmte Benutzer*innen die API-Ratenbegrenzung voll ausschöpfen können.
Sie können den aktuellen Status Ihrer Ratenbegrenzung jederzeit über die im Folgenden angegebene API für Ratenbegrenzungen überprüfen. In den zurückgegebenen HTTP-Headern einer API-Anforderung wird der aktuelle Status der Ratenbegrenzung angezeigt.
curl \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/rate_limit
Beispielantwort
{
"resources": {
"core": {
"limit": 5000,
"remaining": 4999,
"reset": 1372700873,
"used": 1
},
"search": {
"limit": 30,
"remaining": 18,
"reset": 1372697452,
"used": 12
},
"graphql": {
"limit": 5000,
"remaining": 4993,
"reset": 1372700389,
"used": 7
},
"integration_manifest": {
"limit": 5000,
"remaining": 4999,
"reset": 1551806725,
"used": 1
},
"code_scanning_upload": {
"limit": 500,
"remaining": 499,
"reset": 1551806725,
"used": 1
}
},
"rate": {
"limit": 5000,
"remaining": 4999,
"reset": 1372700873,
"used": 1
}
}
Weitere Informationen zu Ratenbegrenzungen finden Sie in der GitHub-Dokumentation unter Ratenbegrenzung.