Was sind GitHub-Geheimnisse und wie verwenden Sie sie?

Was sind GitHub-Geheimnisse und wie verwenden Sie sie?

Eine der Herausforderungen bei jedem DevOps-Workflow ist die Verwaltung von Geheimnissen, Passwörtern und Tokens, die aus Sicherheitsgründen geheim gehalten werden müssen. Dies gilt insbesondere für Open-Source-Repositorys, bei denen der Code normalerweise öffentlich ist. GitHub Secrets helfen bei der Bewältigung dieses Problems bei der Arbeit mit GitHub Actions-Skripts.

Was sind GitHub-Geheimnisse?

GitHub Secrets ist im Wesentlichen ein Tresor, in dem Sie private Schlüssel speichern können, auf den GitHub Actions-Skripte namentlich zugreifen können, ähnlich wie Umgebungsvariablen. Dies löst das Problem, dass es in der Codebasis im Klartext bleibt, was selbst für private Repositories ein massives Sicherheitsproblem darstellt und für öffentliche Repositories unmöglich ist, ohne sofort gehackt zu werden.

Dies ist in vielen Fällen nützlich, in denen der Code zwar öffentlich ist, sich das Aktionsskript jedoch bei einem Drittanbieterdienst authentifizieren muss. Wenn Sie beispielsweise Binärdateien in Amazon S3-Buckets hosten, müssen Sie dem Skript das Zugriffstoken zum Schreiben in den AWS-Speicher geben. Natürlich möchten Sie niemandem, der das Repository betrachtet, die Berechtigung erteilen, den Bucket-Inhalt zu überschreiben. Die Verwendung eines Geheimnisses schränkt den Zugriff ein und schützt den Schlüssel außerdem vor versehentlichem Durchsickern.

  • Repository-Geheimnisse gelten für ein einzelnes Repository. Sie müssen sie über das Repository-Einstellungsfeld festlegen, auf das dann wie auf Umgebungsvariablen in GitHub Actions-Builds zugegriffen werden kann.
  • Die Geheimnisse von GitHub Organizations gelten für alle Repositorys innerhalb dieser Organisation und bieten eine einfache Möglichkeit, Schlüssel zentral zu verwalten. Sie werden in den Organisationseinstellungen festgelegt.
  • Umgebungsgeheimnisse gelten für bestimmte GitHub-Umgebungen innerhalb des Repos, wie z. developB. und production. Dies bietet eine einfache Möglichkeit, Repository-/Organisationsgeheimnisse für verschiedene Builds zu überschreiben, z. B. für die Bereitstellung in einer Testumgebung im Vergleich zu einer Produktionsumgebung.

Derzeit gibt es keine Möglichkeit, benutzerspezifische Geheimnisse festzulegen. Wenn Sie diese Funktionalität wünschen, sollten Sie über die Gründung einer persönlichen Organisation nachdenken.

Sie können bis zu 1.000 Organisationsgeheimnisse, 100 Repository-Geheimnisse und 100 Umgebungsgeheimnisse speichern. Die Größe von Secrets ist ebenfalls auf 64 KB begrenzt, es gibt jedoch Problemumgehungen für diese Einschränkung. Sie können Binärdaten auch als Base64-codierte Zeichenfolgen speichern.

Es ist immer noch möglich, sie aus dem Aktionsskript zu verlieren, wenn Sie sie beispielsweise mit einem Befehl wie auf der Konsole ausgeben echo. Sie sollten sicherstellen, dass keines der Skripte, in die Sie die Geheimnisse einspeisen, diese an den Benutzer zurückliest oder in Protokolldateien ausgibt. Glücklicherweise blockiert GitHub die Weitergabe des Geheimnisses an bestimmte Protokollierungsbefehle, einschließlich echo.

Verwendung von GitHub-Geheimnissen

Um ein Repository-weites Geheimnis festzulegen, müssen Sie zum Einstellungsfenster für das Repository gehen und auf Geheimnisse > Aktionen klicken. Sie können auch Geheimnisse für GitHub-Codespaces und Dependabot festlegen, wenn Sie diese verwenden.

Sie können einen Variablennamen festlegen und den geheimen Inhalt einfügen. Sobald Sie dieses Fenster verlassen, wird der Schlüssel jedoch nicht mehr angezeigt. Sie können ihn jedoch bearbeiten und einen neuen Schlüssel einfügen. Dies ist im Allgemeinen die Funktionsweise der meisten Geheimspeicher und stellt ein gutes Sicherheitsmerkmal dar. Erwarten Sie jedoch nicht, dass Sie diesen Schlüssel noch einmal sehen können.

Die Namenskonvention für geheime Namen ist Großschreibung mit Unterstrichen, auch bekannt als „Screaming Snake Case“, aber dies wird durch nichts erzwungen.

Dann können Sie in Ihrem Aktionsskript darauf verweisen, indem Sie es wie folgt als YAML-Variable maskieren:

${{ secrets.SECRET_NAME }}

Beachten Sie, dass es sich um „Geheimnisse“ handelt. context muss vor dem Secret-Namen eingefügt werden. Sie müssen auch nichts Besonderes tun, um auf Organisationsgeheimnisse im Vergleich zu Geheimnissen mit einem einzigen Repository zu verweisen.

Dieser Wert kann an Befehle übergeben werden, Sie können ihn aber auch zum Festlegen von Umgebungsvariablen für einen Prozess verwenden. Auf diese Weise akzeptieren die meisten Tools normalerweise ohnehin Geheimnisse, da es sich um das sicherste und flexibelste System handelt.

Wenn in Ihrem Konto kein Geheimnis vorhanden ist, verwendet GitHub eine leere Zeichenfolge als Wert.

Organisationsgeheimnisse

Das Festlegen von organisationsweiten Geheimnissen erfolgt auf die gleiche Weise, allerdings gibt es einige zusätzliche Kontrollen für den Zugriff und die Verteilung.

Beim Erstellen eines Organisationsgeheimnisses können Sie festlegen, dass es nur für öffentliche oder private Repositorys gilt. Private Geheimnisse für die Organisation sind jedoch eine kostenpflichtige Option. Sie können auch einzelne Repositories auswählen.

Um ein Organisationsgeheimnis zu erstellen oder zu bearbeiten, müssen Sie über „Administrator“-Zugriff auf die Organisation selbst verfügen. Dies kann allen Mitgliedern durch Bearbeiten der Basisberechtigungen gewährt werden, wird jedoch im Allgemeinen nicht für große Organisationen empfohlen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert