Skip to main content

Configuration d’OpenID Connect dans Octopus Deploy

Utilisez OpenID Connect dans vos flux de travail pour vous authentifier auprès de Octopus Deploy.

Aperçu

OpenID Connect (OIDC) permet à vos flux de travail GitHub Actions de s’authentifier auprès de Octopus Deploy pour pousser des packages, créer des versions ou déclencher des déploiements sans stocker les mots de passe ou les clés d'API Octopus Deploy en tant que secrets à long terme GitHub.

Ce guide fournit une vue d’ensemble de la façon de configurer Octopus Deploy pour faire confiance à l'OIDC de GitHub en tant qu’une identité fédérée, et inclut un exemple de flux de travail pour l’action octopusdeploy/login qui utilise des jetons pour s’authentifier à votre instance d'Octopus Deploy.

Prerequisites

  • 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 OpenID Connect.

Ajout du fournisseur d’identité à Octopus Deploy

Pour utiliser OIDC avec Octopus Deploy, commencez par établir un lien de confiance entre GitHub Actions et votre instance Octopus Deploy. Pour plus d’informations sur ce processus, consultez la section Utilisation d’OpenID Connect avec l’API Octopus dans la documentation Octopus Deploy.

  1. Connectez-vous à votre instance Octopus Deploy.
  2. Créez ou ouvrez le compte de service auquel l’accès sera accordé via la demande de jeton.
  3. Configurez une nouvelle identité OIDC, en définissant le sujet approprié sur lequel la demande de jeton de flux de travail GitHub Actions sera validée.

Mise à jour de votre workflow GitHub Actions

Pour mettre à jour vos workflows pour OIDC, vous devez apporter deux modifications à votre code YAML :

  1. Ajoutez des paramètres d’autorisations pour le jeton.
  2. Utilisez l’action OctopusDeploy/login pour échanger le jeton OIDC (JWT) pour un jeton d’accès cloud.

Remarque

Lorsque des environnements sont utilisés dans des workflows ou dans des stratégies OIDC, nous vous recommandons d’ajouter des règles de protection à l’environnement pour plus de sécurité. Par exemple, vous pouvez configurer des règles de déploiement sur un environnement pour restreindre les branches et balises pouvant être déployées dans l’environnement ou accéder aux secrets d’environnement. Pour plus d’informations, consultez « Gestion des environnements pour le déploiement ».

Ajout de paramètres d’autorisations

L’exécution d’une tâche ou d’un flux de travail nécessite un paramètre permissions avec id-token: write pour permettre au fournisseur OIDC de GitHub de créer un jeton Web JSON pour chaque exécution.

Remarque

Le paramètre id-token: write dans les autorisations du flux de travail ne donne pas au flux de travail l’autorisation de modifier ou d’écrire dans des ressources. Au lieu de cela, il permet uniquement au flux de travail de demander (récupérer) et d’utiliser (définir) un jeton OIDC pour une action ou une étape. Ce jeton est ensuite utilisé pour s’authentifier auprès de services externes à l’aide d’un jeton d’accès à courte durée de vie.

Pour plus d’informations sur les autorisations requises, les exemples de configuration et les scénarios avancés, consultez Informations de référence sur OpenID Connect.

Demande du jeton d’accès

L’action OctopusDeploy/login reçoit un JWT du fournisseur GitHub OIDC, puis demande un jeton d’accès à partir de votre instance Octopus Server. Pour plus d’informations, consultez la documentation OctopusDeploy/login.

L’exemple suivant échange un jeton d’ID OIDC avec votre instance DePepe Deploy pour recevoir un jeton d’accès, qui peut ensuite être utilisé pour accéder à vos ressources Depepe Deploy. Veillez à remplacer les détails de server et service_account_id de manière appropriée pour votre scénario.

YAML
# Ce workflow utilise des actions qui ne sont pas certifiées par GitHub.
# Elles sont fournies par un tiers et régies par
# des conditions d’utilisation du service, une politique de confidentialité et un support distincts.
# documentation en ligne.

jobs:
  create_release_in_octopus:
    runs-on: ubuntu-latest
    name: Create a release in Octopus
    permissions:
      # You might need to add other permissions here like `contents: read` depending on what else your job needs to do
      id-token: write # This is required to obtain an ID token from GitHub Actions for the job
    steps:
      - name: Login to Octopus
        uses: OctopusDeploy/login@34b6dcc1e86fa373c14e6a28c5507d221e4de629 #v1.0.2
        with:
          server: https://my.octopus.app
          service_account_id: 5be4ac10-2679-4041-a8b0-7b05b445e19e

      - name: Create a release in Octopus
        uses: OctopusDeploy/create-release-action@fe13cc69c1c037cb7bb085981b152f5e35257e1f #v3.2.2
        with:
          space: Default
          project: My Octopus Project

Lectures complémentaires