À propos du stockage externe pour GitHub Actions
GitHub Actions utilise le stockage blob externe pour stocker les données générées par les exécutions de workflow. Les données stockées incluent les journaux de workflow, les caches, et les artefacts de build chargés par l’utilisateur. Pour plus d’informations, consultez « Bien démarrer avec GitHub Actions pour GitHub Enterprise Server ».
Il existe deux options pour configurer GitHub Enterprise Server en vue de se connecter à votre fournisseur de stockage externe :
- OpenID Connect (OIDC)
- Authentification traditionnelle basée sur des informations d’identification à l’aide de secrets
Nous vous recommandons d’utiliser OIDC dans la mesure du possible, car vous n’aurez pas besoin de créer ou de gérer des secrets d’informations d’identification sensibles et de longue durée pour votre fournisseur de stockage, et risquer qu’ils soient exposés. Après avoir défini une confiance avec OIDC, votre fournisseur de stockage cloud émet automatiquement des jetons d’accès de courte durée sur votre instance GitHub Enterprise Server, qui expirent automatiquement.
Prérequis
Remarque : Les seuls fournisseurs de stockage S3 pris en charge par GitHub sont Amazon S3 et MinIO Gateway pour NAS.
Il existe d’autres produits de stockage compatibles avec l’API S3 que ceux validés par les partenaires GitHub comme fonctionnant avec GitHub Actions sur GitHub Enterprise Server. Pour plus d’informations, consultez le référentiel Partenaires de stockage GHES.
Pour les produits de stockage validés via le programme de partenariat technologique GitHub, le fournisseur de stockage est responsable du support et de la documentation pour l’utilisation du produit de stockage avec GitHub Actions.
Avant d’activer GitHub Actions, vérifiez que vous avez effectué les étapes suivantes :
-
Créez votre compartiment Amazon S3 pour stocker les données générées par les exécutions de workflow.
-
Passez en revue les exigences matérielles relatives à GitHub Actions. Pour plus d’informations, consultez « Bien démarrer avec GitHub Actions pour GitHub Enterprise Server ».
-
TLS doit être configuré pour le domaine de votre instance GitHub Enterprise Server. Pour plus d’informations, consultez « Configuration de TLS ».
Remarque : Nous vous recommandons vivement de configurer TLS sur GitHub Enterprise Server avec un certificat signé par une autorité de confiance. Bien qu’un certificat autosigné puisse fonctionner, une configuration supplémentaire est nécessaire pour vos exécuteurs autohébergés. Elle n’est pas recommandée pour les environnements de production.
-
Si vous avez un serveur proxy HTTP configuré sur votre instance GitHub Enterprise Server :
-
Vous devez ajouter
.localhost
et127.0.0.1
à la liste Exclusion du proxy HTTP. -
Si votre emplacement de stockage externe n’est pas routable, vous devez également ajouter l’URL de votre stockage externe à la liste d’exclusion.
Pour plus d’informations sur la modification de vos paramètres de proxy, consultez « Configuration d’un serveur proxy web de trafic sortant ».
-
Si vous utilisez OIDC pour la connexion à votre fournisseur de stockage, vous devez exposer les URL de service de jeton OIDC suivantes de votre instance GitHub Enterprise Server sur l’Internet public :
https://HOSTNAME/_services/token/.well-known/openid-configuration https://HOSTNAME/_services/token/.well-known/jwks
Cela garantit que le fournisseur de stockage peut contacter votre instance GitHub Enterprise Server pour l’authentification.
Activation de GitHub Actions avec Amazon S3 à l’aide d’OIDC (recommandé)
Pour configurer GitHub Enterprise Server afin d’utiliser OIDC avec un compartiment Amazon S3, vous devez d’abord créer un fournisseur Amazon OIDC, créer un rôle IAM (Gestion des identités et des accès) et enfin configurer GitHub Enterprise Server pour utiliser le fournisseur et le rôle pour accéder à votre compartiment S3.
1. Créer un fournisseur OIDC Amazon
-
Obtenez l’empreinte numérique pour votre instance GitHub Enterprise Server.
-
Utilisez la commande OpenSSL suivante pour obtenir l’empreinte SHA1 pour votre instance GitHub Enterprise Server, en remplaçant
HOSTNAME
par le nom d’hôte public pour votre instance GitHub Enterprise ServerShell 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
Par exemple :
openssl s_client -connect my-ghes-host.example.com:443 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -sha1 -in /dev/stdin
La commande retourne une empreinte au format suivant :
SHA1 Fingerprint=AB:12:34:56:78:90:AB:CD:EF:12:34:56:78:90:AB:CD:EF:12:34:56
-
Supprimez les deux-points (
:
) de la valeur d’empreinte numérique, puis enregistrez la valeur à utiliser ultérieurement.Par exemple, l’empreinte numérique de la valeur retournée à l’étape précédente est la suivante :
AB1234567890ABCDEF1234567890ABCDEF123456
-
-
À l’aide d’AWS CLI, utilisez la commande suivante pour créer un fournisseur OIDC pour votre instance GitHub Enterprise Server. Remplacez
HOSTNAME
par le nom d’hôte public pour votre instance GitHub Enterprise Server, etTHUMBPRINT
par la valeur d’empreinte numérique de l’étape précédente.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"
Par exemple :
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"
Pour plus d’informations sur l’installation d’AWS CLI, consultez la documentation Amazon.
Avertissement : Si le certificat pour votre instance GitHub Enterprise Server change à l’avenir, vous devez mettre à jour la valeur de l’empreinte numérique dans le fournisseur OIDC Amazon pour que l’approbation OIDC continue à fonctionner.
2. Créer un rôle IAM
-
Ouvrez la console AWS et accédez au service Gestion des identités et des accès (IAM).
-
Dans le menu de gauche, sous « Gestion des accès », cliquez sur Rôles, puis sur Créer un rôle.
-
Dans la page « Sélectionner une entité approuvée », entrez les options suivantes :
- Pour « Type d’entité approuvé », cliquez sur Identité web.
- Pour « Fournisseur d’identité », utilisez le menu déroulant Choisir un fournisseur et sélectionnez le fournisseur OIDC que vous avez créé lors des étapes précédentes. Vous devez utiliser le nom
HOSTNAME/_services/token
, oùHOSTNAME
est le nom d’hôte public pour votre instance GitHub Enterprise Server. - Pour « Audience », sélectionnez
sts.amazonaws.com
.
-
Cliquez sur Suivant.
-
Dans la page « Ajouter des autorisations », utilisez le filtre pour rechercher et sélectionner la stratégie
AmazonS3FullAccess
. -
Cliquez sur Suivant.
-
Dans la page « Nom, révision et création », entrez un nom pour le rôle, puis cliquez sur Créer un rôle.
-
Dans la page « Rôles » IAM, sélectionnez le rôle que vous venez de créer.
-
Sous « Résumé », notez la valeur ARN du rôle, car elle sera nécessaire ultérieurement.
-
Cliquez sur l’onglet Relations d’approbation, puis sur Modifier la stratégie d’approbation.
-
Modifiez la stratégie d’approbation pour ajouter une nouvelle revendication
sub
. La valeur deCondition
doit correspondre à l’exemple suivant, en remplaçantHOSTNAME
par le nom d’hôte public pour votre instance GitHub Enterprise Server :... "Condition": { "StringEquals": { "HOSTNAME/_services/token:aud": "sts.amazonaws.com", "HOSTNAME/_services/token:sub": "HOSTNAME" } } ...
Par exemple :
... "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" } } ...
-
Cliquez sur Mettre à jour la stratégie.
3. Configuration de GitHub Enterprise Server pour se connecter à Amazon S3 à l’aide d’OIDC
-
À partir d’un compte d’administration sur GitHub Enterprise Server, cliquez sur en haut à droite de n’importe quelle page.
-
Si vous ne figurez pas déjà sur la page « Administrateur du site », dans le coin supérieur gauche, cliquez sur Administrateur du site.
-
Dans la barre latérale « Administrateur de site », cliquez sur Management Console .
-
Dans la barre latérale « Paramètres », cliquez sur Actions.
-
Sous « GitHub Actions », sélectionnez Activer GitHub Actions.
-
Sous « Artefact et stockage des journaux », à côté de « Amazon S3 », cliquez sur Configuration.
-
Sous « Authentification », sélectionnez OpenID Connect (OIDC) et entrez les valeurs de votre stockage :
- Compartiment AWS S3 : Nom de votre compartiment S3.
- Rôle AWS : ARN du rôle que vous avez créé dans les procédures précédentes. Par exemple :
arn:aws:iam::123456789:role/my-role-name
. - Région AWS : région AWS de votre compartiment. Par exemple :
us-east-1
.
-
Cliquez sur le bouton Tester les paramètres de stockage pour valider vos paramètres de stockage.
En cas d’erreurs au moment de la validation des paramètres de stockage, vérifiez ces paramètres auprès de votre fournisseur de stockage, puis réessayez.
-
Sous la barre latérale « Paramètres », cliquez sur Enregistrer les paramètres.
Remarque : l’enregistrement des paramètres dans la Management Console redémarre les services système, ce qui peut entraîner un temps d’arrêt visible pour l’utilisateur.
-
Attendez la fin de l’exécution de la configuration.
Activation de GitHub Actions avec le stockage Amazon S3 à l’aide de clés d’accès
-
À l’aide de la console AWS ou de l’interface CLI, créez une clé d’accès pour votre compartiment de stockage. GitHub Actions requiert les autorisations suivantes pour la clé d’accès qui accédera au compartiment :
s3:PutObject
s3:GetObject
s3:ListBucketMultipartUploads
s3:ListMultipartUploadParts
s3:AbortMultipartUpload
s3:DeleteObject
s3:ListBucket
kms:GenerateDataKey
(si le chiffrement du Service de gestion des clés (KMS) a été activé)
Pour plus d’informations sur la gestion des clés d’accès AWS, consultez la « documentation relative à AWS Identity and Access Management ».
-
À partir d’un compte d’administration sur GitHub Enterprise Server, cliquez sur en haut à droite de n’importe quelle page.
-
Si vous ne figurez pas déjà sur la page « Administrateur du site », dans le coin supérieur gauche, cliquez sur Administrateur du site.
-
Dans la barre latérale « Administrateur de site », cliquez sur Management Console .
-
Dans la barre latérale « Paramètres », cliquez sur Actions.
-
Sous « GitHub Actions », sélectionnez Activer GitHub Actions.
-
Sous « Artefact et stockage des journaux », à côté de « Amazon S3 », cliquez sur Configuration.
-
Sous « Authentification », sélectionnez Basée sur les informations d’identification, puis entrez les détails de votre compartiment de stockage :
-
URL du service AWS : URL du service pour votre compartiment. Par exemple, si votre compartiment S3 a été créé dans la région
us-west-2
, cette valeur doit êtrehttps://s3.us-west-2.amazonaws.com
.Pour plus d’informations, consultez « Points de terminaison de service AWS » dans la documentation AWS.
-
Compartiment AWS S3 : Nom de votre compartiment S3.
-
Clé d’accès AWS S3 et Clé secrète AWS S3 : ID de clé d’accès et clé secrète AWS de votre compartiment.
-
-
Cliquez sur le bouton Tester les paramètres de stockage pour valider vos paramètres de stockage.
En cas d’erreurs au moment de la validation des paramètres de stockage, vérifiez ces paramètres auprès de votre fournisseur de stockage, puis réessayez.
-
Sous la barre latérale « Paramètres », cliquez sur Enregistrer les paramètres.
Remarque : l’enregistrement des paramètres dans la Management Console redémarre les services système, ce qui peut entraîner un temps d’arrêt visible pour l’utilisateur.
-
Attendez la fin de l’exécution de la configuration.
Étapes suivantes
Une fois l’exécution de la configuration réussie, GitHub Actions est activé sur votre instance GitHub Enterprise Server. Pour les prochaines étapes, par exemple la gestion des autorisations d’accès de GitHub Actions et l’ajout d’exécuteurs autohébergés, retournez à « Bien démarrer avec GitHub Actions pour GitHub Enterprise Server ».