Vue d’ensemble
OpenID Connect (OIDC) permet à vos flux de travail GitHub Actions de s’authentifier auprès de JFrog pour télécharger et publier des artefacts sans stocker les mots de passe, jetons ou clés API de JFrog dans GitHub.
Ce guide donne une vue d’ensemble de la manière de configurer JFrog pour qu’il fasse confiance à OIDC de GitHub en tant qu’identité fédérée. Il montre également comment utiliser cette configuration dans un flux de travail GitHub Actions.
Pour un exemple de flux de travail GitHub Actions, consultez Exemple d’intégration GitHub Actions dans la documentation JFrog.
Pour un exemple de flux de travail GitHub Actions utilisant la CLI de JFrog, consultez build-publish.yml
dans le référentiel jfrog-github-oidc-example
.
Prérequis
-
Pour en savoir plus sur les concepts de base décrivant la façon dont GitHub utilise OIDC (OpenID Connect) ainsi que sur son architecture et ses avantages, consultez À propos du renforcement de la sécurité avec OpenID Connect.
-
Avant de continuer, vous devez planifier votre stratégie de sécurité pour veiller à ce que les jetons d’accès soient uniquement alloués de manière prévisible. Pour contrôler la façon dont votre fournisseur de cloud émet des jetons d’accès, vous devez définir au moins une condition, afin que les dépôts non approuvés ne puissent pas demander de jetons d’accès à vos ressources cloud. Pour plus d’informations, consultez « À propos du renforcement de la sécurité avec OpenID Connect ».
-
Pour être sécurisé, vous devez définir un JSON de revendications dans JFrog lors de la configuration des mappages d’identité. Pour plus d’informations, consultez « AUTOTITLE » et « À propos du renforcement de la sécurité avec OpenID Connect ».
Par exemple, vous pouvez définir
iss
surhttp://token.actions.githubusercontent.com
, et lerepository
sur quelque chose comme « octo-org/octo-repo. »` Vous serez ainsi assuré que seuls les flux de travail Actions du référentiel spécifié auront accès à votre plateforme JFrog. Voici un exemple de JSON de revendications lors de la configuration des mappages d’identité.JSON { "iss": "http://token.actions.githubusercontent.com", "repository": "octo-org/octo-repo" }
{ "iss": "http://token.actions.githubusercontent.com", "repository": "octo-org/octo-repo" }
Ajout du fournisseur d’identité à JFrog
Pour utiliser OIDC avec JFrog, établissez une relation d’approbation entre GitHub Actions et la plateforme JFrog. Pour plus d’informations sur ce processus, consultez OpenID Connect Integration dans la documentation JFrog.
- Connectez-vous à votre plateforme JFrog.
- Configurez l’approbation entre JFrog et vos flux de travail GitHub Actions.
- Configurer les mappages d'identité.
Mise à jour de votre workflow GitHub Actions
Authentification avec JFrog à l’aide d’OIDC
Dans votre fichier de flux de travail GitHub Actions, assurez-vous que vous utilisez le nom du fournisseur et l’audience que vous avez configurés dans la plateforme JFrog.
L’exemple suivant utilise les espaces réservés YOUR_PROVIDER_NAME
et YOUR_AUDIENCE
.
permissions:
id-token: write
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Set up JFrog CLI with OIDC
id: setup-jfrog-cli
uses: jfrog/setup-jfrog-cli@29fa5190a4123350e81e2a2e8d803b2a27fed15e
with:
JF_URL: $
oidc-provider-name: 'YOUR_PROVIDER_NAME'
oidc-audience: 'YOUR_AUDIENCE' # This is optional
- name: Upload artifact
run: jf rt upload "dist/*.zip" my-repo/
Conseil
Lorsque l’authentification OIDC est utilisée, l’action setup-jfrog-cli
fournit automatiquement oidc-user
et oidc-token
comme sorties d’étape.
Celles-ci peuvent être utilisées pour d’autres intégrations nécessitant une authentification avec JFrog.
Pour référencer ces sorties, vérifiez que l’étape dispose d’un id
explicite défini (par exemple id: setup-jfrog-cli
).
Utilisation des informations d’identification OIDC dans d’autres étapes
- name: Sign in to Artifactory Docker registry
uses: docker/login-action@v3
with:
registry: $
username: $
password: $
Pour aller plus loin
- Intégration OpenID Connect dans la documentation JFrog
- Mappages d’identités dans la documentation JFrog
- AUTOTITLE