Identifizieren unterstützter Zugriffstoken

Abgeschlossen

Hier erfahren Sie mehr über die verschiedenen GitHub-Zugriffstoken, deren Anwendungen, Einschränkungen und Ratenbegrenzungen.

Wenn Sie Benutzer*innen in Ihrem Unternehmen Zugriff gewähren möchten, kommt es auf die Authentifizierung an. 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. Wenn Sie in GitHub ein persönliches Zugriffstoken erstellen möchten, navigieren Sie zu Einstellungen. Dort wird unter Entwicklereinstellungen die Option Persönliche Zugriffstoken angezeigt.

Screenshot with an example of a GitHub personal access token.

Der Geltungsbereich eines einzelnen Tokens kann auf den Zugriff begrenzt werden, der zum Authentifizieren des Auftrags erforderlich ist, dem es zugewiesen wird. 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 Hackangriff 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 Szenarios im Zusammenhang mit automatisierten Aufgaben verwendet. Ein 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. Vor dem Erstellen eines Installationstokens muss die GitHub-App, auf die das Token angewandt werden soll, im Zielrepository installiert werden. Installationstoken sind eine Stunde lang gültig und sicher, da sie für einen bestimmten Zweck generiert werden 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, hat 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 sicher, da sie eine kurze Lebensdauer 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. Bei GitHub werden Präfixe mit drei Buchstaben zur Darstellung der einzelnen Token verwendet. Diese beginnen mit einer Unternehmenskennung (gh) gefolgt vom ersten Buchstaben des Tokentyps. Damit ergibt sich für die oben genannten Tokentypen Folgendes:

  • ghp für persönliche Zugriffstoken in GitHub
  • ghu für Benutzer-zu-Server-Token in GitHub
  • ghs für Server-zu-Server-Token in GitHub
  • gho für OAuth-Zugriffstoken
  • ghr fü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 diese Token nicht versehentlich durch zufällig generierte Zeichenfolgen wie SHAs dupliziert werden können. Diese Präfixe tragen auch dazu bei, die Quote der False Positive-Ergebnisse bei der Geheimnisüberprüfung zu verringern. Dies ist eine erweiterte Sicherheitsfunktion von GitHub 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.

Screenshot of the management console setting the API rate limits.

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.