Informationen zum externen Speicher für GitHub Actions
GitHub Actions verwendet externen Blobspeicher, um durch Workflowausführungen generierte Daten zu speichern. Gespeicherte Daten umfassen Workflowprotokolle, Caches, und von Benutzer*innen hochgeladene Buildartefakte. Weitere Informationen findest du unter Erste Schritte mit GitHub Actions für GitHub Enterprise Server.
Es gibt zwei Optionen zum Konfigurieren von GitHub Enterprise Server, um eine Verbindung mit deinem externen Speicheranbieter herzustellen:
- OpenID Connect (OIDC)
- Herkömmliche, auf Anmeldeinformationen basierende Authentifizierung mithilfe von Geheimnissen
Es wird empfohlen, OIDC nach Möglichkeit zu verwenden, da du keine vertraulichen und langlebigen Anmeldeinformationsgeheimnisse für deinen Speicheranbieter erstellen oder verwalten musst und so riskierst, dass sie verfügbar gemacht werden. Nach dem Definieren einer Vertrauensstellung mit OIDC stellt dein Cloudspeicheranbieter automatisch kurzlebige Zugriffstoken für deine GitHub Enterprise Server-Instanz aus, die automatisch ablaufen.
Voraussetzungen
Hinweis: Die einzigen von GitHub unterstützten S3-Speicheranbieter sind Amazon S3 und MinIO Gateway für NAS.
Es gibt andere S3-API-kompatible Speicherprodukte, für die sich GitHub-Partner selbst validiert haben, wenn sie mit GitHub Actions auf GitHub Enterprise Server arbeiten. Weitere Informationen findest du im Repository für GHES-Speicherpartner.
Für Speicherprodukte, die über das GitHub-Technologiepartnerschaftprogramm validiert wurden, ist der Speicheranbieter für den Support und die Dokumentation für die Verwendung des Speicherprodukts mit GitHub Actions verantwortlich.
Stelle vor dem Aktivieren von GitHub Actions sicher, dass du die folgenden Schritte ausgeführt hast:
-
Erstelle deinen Amazon S3-Bucket zum Speichern von Daten, die von Workflowausführungen generiert werden.
-
Überprüfe die Hardwareanforderungen für GitHub Actions. Weitere Informationen findest du unter Erste Schritte mit GitHub Actions für GitHub Enterprise Server.
-
TLS muss für die Domäne von Ihre GitHub Enterprise Server-Instance konfiguriert sein. Weitere Informationen findest du unter TLS konfigurieren.
Hinweis: Es wird dringend empfohlen, TLS für GitHub Enterprise Server mit einem Zertifikat zu konfigurieren, das von einem vertrauenswürdigen Aussteller signiert ist. Ein selbst signiertes Zertifikat kann zwar funktionieren, erfordert jedoch zusätzliche Konfiguration für deine selbstgehosteten Runner und wird für Produktionsumgebungen nicht empfohlen.
-
Wenn du einen HTTP-Proxyserver auf Ihre GitHub Enterprise Server-Instance konfiguriert hast:
-
Du musst der HTTP-Proxyausschluss-Liste
.localhost
und127.0.0.1
hinzufügen. -
Wenn dein externer Speicherort nicht routingfähig ist, musst du der Ausschlussliste auch die URL zu deinem externen Speicher hinzufügen.
Weitere Informationen zum Ändern deiner Proxyeinstellungen findest du unter Konfigurieren eines ausgehenden Webproxyservers.
-
Wenn du OIDC für die Verbindung mit deinem Speicheranbieter verwendest, musst du die folgenden OIDC-Tokendienst-URLs für deine GitHub Enterprise Server-Instanz für das öffentliche Internet verfügbar machen:
https://HOSTNAME/_services/token/.well-known/openid-configuration https://HOSTNAME/_services/token/.well-known/jwks
Dadurch wird sichergestellt, dass der Speicheranbieter deine GitHub Enterprise Server-Instanz zur Authentifizierung kontaktieren kann.
Aktivieren von GitHub Actions mit Amazon S3 mithilfe von OIDC (empfohlen)
Um GitHub Enterprise Server für die Verwendung von OIDC (OpenID Connect) mit einem Amazon S3-Bucket zu konfigurieren, musst du zuerst einen Amazon-OIDC-Anbieter erstellen, dann eine IAM-Rolle (Identity & Access Management) erstellen und schließlich GitHub Enterprise Server für den Zugriff auf den S3-Bucket mit dem Anbieter und der Rolle konfigurieren.
1. Erstellen eines Amazon-OIDC-Anbieters
-
Rufe den Fingerabdruck für deine GitHub Enterprise Server-Instanz ab.
-
Verwende den folgenden OpenSSL-Befehl, um den SHA1-Fingerabdruck für deine GitHub Enterprise Server-Instanz abzurufen, und ersetze dabei
HOSTNAME
durch den öffentlichen Hostnamen für deine GitHub Enterprise Server-Instanz.Shell openssl s_client -connect HOSTNAME:443 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -sha1 -in /dev/stdin
openssl s_client -connect HOSTNAME:443 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -sha1 -in /dev/stdin
Beispiel:
openssl s_client -connect my-ghes-host.example.com:443 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -sha1 -in /dev/stdin
Der Befehl gibt einen Fingerabdruck im folgenden Format zurück:
SHA1 Fingerprint=AB:12:34:56:78:90:AB:CD:EF:12:34:56:78:90:AB:CD:EF:12:34:56
-
Entferne die Doppelpunkte (
:
) aus dem Fingerabdruckwert, und speichere den Wert zur späteren Verwendung.Der Fingerabdruck für den im vorherigen Schritt zurückgegebenen Wert lautet beispielsweise wie folgt:
AB1234567890ABCDEF1234567890ABCDEF123456
-
-
Verwende den folgenden Befehl in der AWS-Befehlszeilenschnittstelle (Command Line Interface, CLI), um einen OIDC-Anbieter für deine GitHub Enterprise Server-Instanz zu erstellen. Ersetze
HOSTNAME
durch den öffentlichen Hostnamen für deine GitHub Enterprise Server-Instanz undTHUMBPRINT
durch den Fingerabdruckwert aus dem vorherigen Schritt.Shell aws iam create-open-id-connect-provider \ --url https://HOSTNAME/_services/token \ --client-id-list "sts.amazonaws.com" \ --thumbprint-list "THUMBPRINT"
aws iam create-open-id-connect-provider \ --url https://HOSTNAME/_services/token \ --client-id-list "sts.amazonaws.com" \ --thumbprint-list "THUMBPRINT"
Beispiel:
Shell aws iam create-open-id-connect-provider \ --url https://my-ghes-host.example.com/_services/token \ --client-id-list "sts.amazonaws.com" \ --thumbprint-list "AB1234567890ABCDEF1234567890ABCDEF123456"
aws iam create-open-id-connect-provider \ --url https://my-ghes-host.example.com/_services/token \ --client-id-list "sts.amazonaws.com" \ --thumbprint-list "AB1234567890ABCDEF1234567890ABCDEF123456"
Weitere Informationen zum Installieren der AWS-CLI findest du in der Amazon-Dokumentation.
Warnung: Wenn sich das Zertifikat für deine GitHub Enterprise Server-Instanz in Zukunft ändert, musst du den Fingerabdruckwert im Amazon-OIDC-Anbieter aktualisieren, damit die OIDC-Vertrauensstellung weiter funktioniert.
2. Erstellen einer IAM-Rolle
-
Öffne die AWS-Konsole, und wechsle zum Identity & Access Management-Dienst (IAM).
-
Wähle im linken Menü unter „Zugriffsverwaltung“ die Option Rollen und dann Rolle erstellen aus.
-
Wähle auf der Seite „Vertrauenswürdige Entität auswählen“ die folgenden Optionen aus:
- Wähle für „Typ der vertrauenswürdigen Entität“ die Option Webidentität aus.
- Wähle für „Identitätsanbieter“ im Dropdownmenü Anbieter auswählen den OIDC-Anbieter aus, den du in den vorherigen Schritten erstellt hast. Der Name sollte
HOSTNAME/_services/token
lauten, wobeiHOSTNAME
der öffentliche Hostname für deine GitHub Enterprise Server-Instanz ist. - Wähle unter „Zielgruppe“ die Option
sts.amazonaws.com
aus.
-
Klicke auf Weiter.
-
Suche auf der Seite „Berechtigungen hinzufügen“ mithilfe des Filters nach der Richtlinie
AmazonS3FullAccess
, und wähle sie aus. -
Klicke auf Weiter.
-
Gib auf der Seite „Benennen, überprüfen und erstellen“ einen Namen für die Rolle ein, und wähle dann Rolle erstellen aus.
-
Wähle auf der IAM-Seite „Rollen“ die Rolle aus, die du gerade erstellt hast.
-
Notiere unter „Zusammenfassung“ den ARN-Wert (Amazon Resource Name) für die Rolle, da dieser später benötigt wird.
-
Wähle die Registerkarte Vertrauensstellungen und dann Vertrauensrichtlinie bearbeiten aus.
-
Bearbeite die Vertrauensrichtlinie, um einen neuen
sub
-Anspruch hinzuzufügen. Der Wert fürCondition
muss dem folgenden Beispiel entsprechen. Ersetze dabeiHOSTNAME
durch den öffentlichen Hostnamen für deine GitHub Enterprise Server-Instanz:... "Condition": { "StringEquals": { "HOSTNAME/_services/token:aud": "sts.amazonaws.com", "HOSTNAME/_services/token:sub": "HOSTNAME" } } ...
Beispiel:
... "Condition": { "StringEquals": { "my-ghes-host.example.com/_services/token:aud": "sts.amazonaws.com", "my-ghes-host.example.com/_services/token:sub": "my-ghes-host.example.com" } } ...
-
Wähle Richtlinie aktualisieren aus.
3. Konfigurieren von GitHub Enterprise Server zum Herstellen einer Verbindung mit Amazon S3 mithilfe von OIDC
-
Klicke in einem Verwaltungskonto auf GitHub Enterprise Server und dann in der rechten oberen Ecke einer beliebigen Seite auf „“.
-
Wenn du dich nicht bereits auf der Seite „Websiteadministrator“ befindest, klicke in der oberen linken Ecke auf Websiteadministrator.
-
Wähle auf der Randleiste „ Websiteadministrator“ die Option Verwaltungskonsole aus.
-
Klicke auf der Randleiste unter „Einstellungen“ auf Aktionen.
-
Wähle unter „GitHub Actions“ die Option GitHub Actions aktivieren aus.
-
Klicke unter „Artefakt- und Protokollspeicher“ neben „Amazon S3“ auf Einrichtung.
-
Wähle unter „Authentifizierung“ die Option OpenID Connect (OIDC) aus, und gib die Werte für deinen Speicher ein:
- AWS S3 Bucket: Der Name deines S3-Buckets.
- AWS-Rolle: Der ARN für die Rolle, die du in den vorherigen Schritten erstellt hast. Beispiel:
arn:aws:iam::123456789:role/my-role-name
. - AWS-Region: Die AWS-Region für deinen Bucket. Beispiel:
us-east-1
.
-
Klicke auf die Schaltfläche Speichereinstellungen testen, um deine Speichereinstellungen zu überprüfen.
Wenn bei der Überprüfung der Speichereinstellungen Fehler auftreten, überprüfe die Einstellungen mit dem Speicheranbieter, und versuche es erneut.
-
Klicke auf der Randleiste unter „Einstellungen“ auf Einstellungen speichern.
Hinweis: Durch das Speichern von Einstellungen in der Verwaltungskonsole werden Systemdienste neu gestartet, was zu einer für den Benutzer feststellbaren Downtime führen könnte.
-
Warten Sie auf den Abschluss der Konfigurationsausführung.
Aktivieren von GitHub Actions mit Amazon S3-Speicher mithilfe von Zugriffsschlüsseln
-
Erstelle mithilfe der AWS-Konsole oder der AWS-CLI einen Zugriffsschlüssel für deinen Speicherbucket. GitHub Actions erfordert die folgenden Berechtigungen für den Zugriffsschlüssel, der auf den Bucket zugreift:
s3:PutObject
s3:GetObject
s3:ListBucketMultipartUploads
s3:ListMultipartUploadParts
s3:AbortMultipartUpload
s3:DeleteObject
s3:ListBucket
kms:GenerateDataKey
(wenn die Verschlüsselung mit dem Schlüsselverwaltungsdienst (Key Management Service, KMS) aktiviert wurde)
Weitere Informationen zur Verwaltung von AWS-Zugriffsschlüsseln findest du in der Dokumentation zu AWS Identity and Access Management.
-
Klicke in einem Verwaltungskonto auf GitHub Enterprise Server und dann in der rechten oberen Ecke einer beliebigen Seite auf „“.
-
Wenn du dich nicht bereits auf der Seite „Websiteadministrator“ befindest, klicke in der oberen linken Ecke auf Websiteadministrator.
-
Wähle auf der Randleiste „ Websiteadministrator“ die Option Verwaltungskonsole aus.
-
Klicke auf der Randleiste unter „Einstellungen“ auf Aktionen.
-
Wähle unter „GitHub Actions“ die Option GitHub Actions aktivieren aus.
-
Klicke unter „Artefakt- und Protokollspeicher“ neben „Amazon S3“ auf Einrichtung.
-
Wähle unter „Authentifizierung“ die Option Basierend auf Anmeldeinformationen aus, und gib die Details deines Speicherbuckets ein:
-
URL des AWS-Diensts: Die Dienst-URL für deinen Bucket. Wurde dein S3-Bucket z. B. in der
us-west-2
-Region erstellt, sollte dieser Werthttps://s3.us-west-2.amazonaws.com
lauten.Weitere Informationen findest du in der AWS-Dokumentation unter AWS-Dienstendpunkte.
-
AWS S3 Bucket: Der Name deines S3-Buckets.
-
AWS S3-Zugriffsschlüssel und Geheimer AWS S3-Schlüssel: Die ID des AWS-Zugriffsschlüssels und der geheime Schlüssel für deinen Bucket.
-
-
Klicke auf die Schaltfläche Speichereinstellungen testen, um deine Speichereinstellungen zu überprüfen.
Wenn bei der Überprüfung der Speichereinstellungen Fehler auftreten, überprüfe die Einstellungen mit dem Speicheranbieter, und versuche es erneut.
-
Klicke auf der Randleiste unter „Einstellungen“ auf Einstellungen speichern.
Hinweis: Durch das Speichern von Einstellungen in der Verwaltungskonsole werden Systemdienste neu gestartet, was zu einer für den Benutzer feststellbaren Downtime führen könnte.
-
Warten Sie auf den Abschluss der Konfigurationsausführung.
Nächste Schritte
Nachdem die Konfigurationsausführung erfolgreich abgeschlossen wurde, werden GitHub Actions für Ihre GitHub Enterprise Server-Instance aktiviert. Informationen zu den nächsten Schritten, z. B. das Verwalten von GitHub Actions-Zugriffsberechtigungen und Hinzufügen selbstgehosteter Runner findest du unter Erste Schritte mit GitHub Actions für GitHub Enterprise Server.