Skip to main content

Best Practices beim Erstellen einer OAuth-App

Befolge diese Best Practices, um die Sicherheit und Leistung deiner OAuth app zu verbessern.

Verwenden einer GitHub App als Alternative

Verwende nach Möglichkeit eine GitHub App anstelle einer OAuth app. Im Allgemeinen werden GitHub Apps häufiger als OAuth apps verwendet. GitHub Apps verwenden differenzierte Berechtigungen, bieten Benutzer*innen mehr Kontrolle darüber, auf welche Repositorys die App zugreifen kann, und verwenden kurzlebige Token. Diese Eigenschaften können die Sicherheit der App erhöhen, indem sie den Schaden begrenzen, der verursacht werden könnte, wenn die Anmeldeinformationen der App kompromittiert werden.

Ähnlich wie OAuth apps können GitHub Apps weiterhin OAuth 2.0 nutzen und eine Art von OAuth-Token (ein sogenanntes Benutzerzugriffstoken) generieren und Aktionen im Namen eines Benutzers bzw. einer Benutzerin ausführen. Jedoch können GitHub Apps unabhängig von demder Benutzerin agieren.

Weitere Informationen zu GitHub Apps findest du unter Informationen zum Erstellen von GitHub-Apps.

Weitere Informationen zum Migrieren einer vorhandenen OAuth app zu einer GitHub App findest du unter Migrieren von OAuth-Apps zu GitHub-Apps.

Verwenden von minimalen Bereichen

Deine OAuth app sollte nur die Bereiche anfordern, die die App für die beabsichtigte Funktionalität benötigt. Wenn Token für deine App kompromittiert werden, lässt sich damit der mögliche Schaden begrenzen. Weitere Informationen findest du unter Autorisieren von OAuth-Apps.

Schützen der Anmeldeinformationen deiner App

Mit einem geheimen Clientschlüssel kann deine App einen Benutzer bzw. eine Benutzerin autorisieren und Benutzerzugriffstoken generieren. Diese Token können verwendet werden, um API-Anforderungen im Namen von Benutzer*innen zu senden.

Du musst den geheimen Clientschlüssel deiner App und alle generierten Token an einem sicheren Ort speichern. Welchen Speichermechanismus du verwendest, richtet sich nach deiner Integrationsarchitektur und der Plattform, auf der die App ausgeführt wird. Im Allgemeinen solltest du einen Mechanismus verwenden, der für die Speicherung vertraulicher Daten auf der von dir verwendeten Plattform konzipiert ist.

Geheime Clientschlüssel

Wenn es sich bei deiner App um eine Website oder Web-App handelt, solltest du den geheimen Clientschlüssel in einem Schlüsseltresor wie Azure Key Vault oder als verschlüsselte Umgebungsvariable oder geheimen Clientschlüssel auf deinem Server speichern.

Wenn deine App ein nativer Client oder eine clientseitige App ist oder auf einem Benutzergerät ausgeführt wird (im Gegensatz zur Ausführung auf deinen Servern), kannst du deinen geheimen Clientschlüssel nicht schützen. Du solltest mit großer Vorsicht vorgehen, wenn du planst, den Zugriff auf deine eigenen Dienste basierend auf von deiner App generierten Token zu schützen, da jede Person auf den geheimen Clientschlüssel zugreifen kann, um ein Token zu generieren.

Benutzerzugriffstoken

Wenn es sich bei deiner App um eine Website oder Web-App handelt, solltest du die Token in deinem Back-End verschlüsseln und sicherstellen, dass rund um die Systeme, die auf die Token zugreifen können, Sicherheit herrscht. Du solltest erwägen, Aktualisierungstoken an anderer Stelle zu speichern als aktive Zugriffstoken.

Wenn deine App ein nativer Client oder eine clientseitige App ist oder auf einem Benutzergerät ausgeführt wird (im Gegensatz zur Ausführung auf deinen Servern), kannst du Token möglicherweise nicht so gut schützen wie eine App, die auf deinen Servern ausgeführt wird. Du solltest Token mit dem Mechanismus speichern, der für die Plattform deiner App empfohlen wird. Denk aber daran, dass der Speichermechanismus möglicherweise nicht vollständig sicher ist.

Verwenden des geeigneten Tokentyps

OAuth apps können Benutzerzugriffstoken generieren, um authentifizierte API-Anforderungen zu senden. Deine App sollte niemals ein personal access token oder ein GitHub-Kennwort für die Authentifizierung verwenden.

Erstellen eines Plans für die Behandlung von Sicherheitsverletzungen

Du solltest einen Plan vorbereiten, damit du jegliche Sicherheitsverletzungen schnellstmöglich korrigieren kannst.

Für den Fall, dass der geheime Clientschlüssel deiner App kompromittiert wird, musst du ein neues Geheimnis generieren, deine App aktualisieren, sodass sie das neue Geheimnis verwendet, und das alte Geheimnis löschen.

Falls Benutzerzugriffstoken kompromittiert werden, solltest du diese Token sofort widerrufen. Weitere Informationen findest du unter REST-API-Endpunkte für OAuth-Autorisierungen.

Bestätigen des Zugriffs eines Benutzers auf Ihre Organisationen

Auf Ihre OAuth-App kann von Benutzern außerhalb Ihrer Organisation oder Ihres Unternehmens zugegriffen werden. Wenn Sie möchten, dass eine App nur von Mitgliedern Ihrer Organisation oder Ihres Unternehmens verwendet wird, sollten Sie den Mitgliedschaftsstatus des Benutzers überprüfen, wenn sich der Benutzer bei Ihrer App anmeldet.

Um die Liste der Organisationen zu finden, in denen ein Benutzer Mitglied ist, können Sie den Endpunkt „Organisationen für den authentifizierten Benutzer auflisten“ verwenden. Anschließend können Sie diese Liste mit einer Liste der für Ihre App zugelassenen Organisationen abgleichen. Weitere Informationen findest du unter REST-API-Endpunkte für Organisationen.

Notiz: Auch auf eine OAuth app, die von einem verwaltetes Benutzerkonto oder Organisation mit verwalteten Benutzer*innen erstellt wurde, kann von Benutzern außerhalb des Unternehmens zugegriffen werden.

Regelmäßige Überprüfungen auf Sicherheitsrisiken

Du solltest regelmäßige Sicherheitsrisikoüberprüfungen für deine App durchführen. Beispielsweise kannst du die Codeüberprüfung und die Geheimnisüberprüfung für das Repository einrichten, das den Code deiner App hostet. Weitere Informationen findest du unter Informationen zu Codescans und unter Informationen zur Geheimnisüberprüfung.

Auswählen einer geeigneten Umgebung

Wenn deine App auf einem Server ausgeführt wird, vergewissere dich, dass deine Serverumgebung sicher ist und das für deine App erwartete Datenverkehrsvolumen verarbeiten kann.

Sichere Nutzung von Diensten

Wenn deine App Dienste von Drittanbietern verwendet, müssen sie auf sichere Art und Weise genutzt werden:

  • Alle von deiner App genutzten Dienste sollten über einen eindeutigen Anmeldenamen und ein eindeutiges Kennwort verfügen.
  • Apps sollten keine Dienstkonten wie E-Mail- oder Datenbankdienste freigeben, um deinen SaaS-Dienst zu verwalten.
  • Nur Mitarbeiter*innen mit Verwaltungsaufgaben sollten Administratorzugriff auf die Infrastruktur haben, in der deine App gehostet wird.

Hinzufügen von Protokollierung und Überwachung

Füge ggf. Protokollierungs- und Überwachungsfunktionen für dein App hinzu. Ein Sicherheitsprotokoll kann Folgendes enthalten:

  • Authentisierungs- und Autorisierungsereignisse
  • Änderungen der Dienstkonfiguration
  • Lesen und Schreiben von Objekten
  • Benutzer- und Gruppenberechtigungsänderungen
  • Erhöhung der Rolle zum Administrator

Deine Protokolle sollten für jedes Ereignis konsistente Zeitstempelung verwenden und die Benutzer*innen, IP-Adressen oder Hostnamen für alle protokollierten Ereignisse aufzeichnen.

Aktivieren der Datenlöschung

Wenn deine App für andere Benutzerinnen verfügbar ist, solltest du Benutzerinnen die Möglichkeit geben, ihre Daten zu löschen. Benutzerinnen sollten nicht per E-Mail oder telefonisch einen Suppormitarbeiter*in kontaktieren müssen, um ihre Daten zu löschen.

Weitere Informationsquellen