Connecter des dépôts GitHub Enterprise Cloud à l’agent SRE Azure

Important

Cette fonctionnalité de Azure agent SRE est actuellement en préversion. Consultez les Conditions d’utilisation supplémentaires pour les préversions Microsoft Azure pour les conditions légales qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou qui ne sont pas encore publiées en disponibilité générale.

Connectez des référentiels hébergés sur GitHub Enterprise Cloud (<TENANT>.ghe.com) ou github.com à votre agent SRE Azure à l’aide d’une application GitHub BYO (Bring Your Own). L'agent génère des jetons d'installation à courte durée de vie à partir de la clé privée de votre application, qui est stockée dans Azure Key Vault et n'est jamais copiée.

Note

BYO GitHub App fonctionne pour les hôtes github.com et *.ghe.com. Pour github.com avec OAuth ou PAT, consultez Set up GitHub connector.

Quand utiliser l’authentification par l’application BYO GitHub

Utilisez l’application BYO quand :

  • Votre organisation nécessite des contrôles d’authentification et de garde de clé basés sur l’application.
  • Vous êtes en train de connecter des référentiels *.ghe.com (nécessaire, car OAuth et les PAT ne sont pas disponibles pour les instances GHE).
  • Vous souhaitez un accès basé sur un jeton d’installation plutôt que des jetons utilisateur.

Prerequisites

Requirement Détails
Agent Azure SRE Agent en cours d’exécution avec le rôle Administrateur ou Utilisateur standard
application GitHub Application GitHub créée sur votre hôte cible (github.com ou <TENANT>.ghe.com)
accès administrateur GitHub Accès d’administrateur de l’organisation ou du dépôt pour créer, installer ou vérifier la portée de l’application GitHub
Azure Key Vault Coffre dans lequel vous pouvez stocker la clé privée de l'application GitHub
Identité gérée Possibilité d’assigner Key Vault Crypto User sur la clé importée à l’identité utilisée par l’agent

Créer une application GitHub

Si vous disposez déjà d’une application GitHub avec les autorisations appropriées, passez à Store la clé privée dans Azure Key Vault.

  1. Accédez à votre hôte GitHub :
    • github.com : Accédez aux paramètres de votre organisation >Settings>Developer>GitHub Apps>New GitHub App
    • <TENANT>.ghe.com: Chemin d’accès identique sur votre instance GHE
  2. Renseignez les détails de l’application :
    • GitHub Nom de l’application : par exemple, sre-agent-reader
    • URL de la page d’accueil : https://sre.azure.com
    • Webhook : décocher Active (l’agent n’utilise pas de webhooks)
  3. Sous Autorisations, définissez :
    • Autorisations > de référentiel Contenu : lecture seule (obligatoire)
    • Autorisations du dépôt > Métadonnées : Lecture seule (sélectionnée automatiquement)
    • Si vous le souhaitez, ajoutez un accès en lecture à Problèmes et Demandes de tirage
  4. Sous Partout, cette application GitHub peut-elle être installée ?, sélectionnez Only sur ce compte.
  5. Sélectionnez Créer une application GitHub.
  6. Notez l’ID client affiché dans la page des paramètres de l’application.

Installer l’application GitHub

  1. Dans la page paramètres de l’application GitHub, sélectionnez Installer l’application dans la barre latérale gauche.
  2. Sélectionnez votre organisation.
  3. Sélectionnez Tous les référentiels ou sélectionnez des dépôts spécifiques.
  4. Sélectionnez Installer.

Générer une clé privée d’application GitHub

  1. Sur la page des paramètres de GitHub App, faites défiler la page jusqu’à Clés privées.
  2. Sélectionnez Générer une clé privée.
  3. Un .pem fichier est téléchargé. Ce fichier est la clé privée RSA utilisée par l’agent pour s’authentifier.

Caution

Conservez le PEM en sécurité. Vous le chargez dans Key Vault à l’étape suivante. Ne le committez pas dans un dépôt et ne le partagez pas.

Stocker la clé privée dans Azure Key Vault

Importez la clé privée de l’application GitHub en tant que clé RSA, et non comme un secret, avec l’opération de signature activée. Convertissez le PEM téléchargé de GitHub en PKCS#8 avant l'importation, puis supprimez définitivement les fichiers PEM locaux après une importation réussie. Pour les commandes, voir Stocker la clé privée dans Key Vault.

Copiez l’URI du Key Identifier importé :

https://myvault.vault.azure.net/keys/my-github-app-key/<VERSION>

Tip

URI versionné ou non versionné : vous pouvez utiliser l’URI avec version (avec /<VERSION> suffixe) pour épingler à une version de clé spécifique ou omettre la version pour toujours utiliser la dernière version. Utilisez l’URI non versionné afin que lorsque vous faites pivoter la clé, l’agent récupère automatiquement la nouvelle version sans mettre à jour l’URI.

Autoriser l’accès à un coffre de clés à une identité d’agent

  1. Dans le portail Azure, ouvrez Key Vault>Access control (IAM).
  2. Assignez Key Vault Crypto User à l’identité sélectionnée pour l’accès à Key Vault. Limitez l’attribution à la clé importée, ou au coffre-fort uniquement si le coffre-fort est dédié à cette application.
  3. Attendez que l’attribution de rôle prenne effet.

Configurer une application BYO pour l’accès au code

  1. Ouvrez votre agent dans le portail.
  2. Va dans Build + setup>Contexte>Accès au code.
  3. Sélectionnez Ajouter un référentiel.
  4. À l’étape Connexion, choisissez GitHub et entrez une URL complète du dépôt, comme https://<TENANT>.ghe.com/owner/repo.
  5. Si un identifiant correspondant existe, choisissez Nouvelle connexion dans Ajouter le dépôt avec pour configurer un autre identifiant.
  6. Dans la section Méthode de connexion, sélectionnez Utiliser votre application GitHub.
  7. Entrée:
    • ID du client
    • URI à clé privée (Key Vault) : une /keys/ URI, pas une /secrets/ URI
    • Identité Key Vault facultative (ou conserver l’identité affectée par le système)
  8. Sélectionnez Se connecter.

L’Assistant valide vos informations d’identification. En cas de réussite, vous voyez Connecté en tant qu’application GitHub avec une coche verte.

Note

Lorsque l’URL du dépôt utilise un hôte *.ghe.com, l’assistant sélectionne Utiliser votre application GitHub. OAuth et PAT ne sont pas disponibles pour les hôtes GHE.

Ajouter des référentiels et vérifier la connexion

  1. Sélectionnez Suivant pour ouvrir Ajouter des dépôts, examinez les entrées du dépôt et les noms d’affichage, puis sélectionnez Enregistrer.
  2. Confirmez que le dépôt apparaît dans la liste d’accès au Code avec sa connexion dans la colonne Connexion .
  3. Test dans la conversation :
Get me recent issues from owner/repo.

Identité managée par application pour plusieurs applications GitHub

Par défaut, l’agent utilise son identité managée attribuée au système pour les opérations de signature Key Vault. Si vous gérez plusieurs applications GitHub (par exemple, une par instance GHE), vous pouvez attribuer une identité managée attribuée par l’utilisateur différente à chaque application. Chaque identité n’a besoin d’accéder qu’à sa propre clé Key Vault.

Sélectionnez l’identité dans la liste déroulante Key Vault identité pendant l’étape de configuration.

Prise en charge de plusieurs hôtes pour les connexions à GitHub

Vous pouvez connecter plusieurs hôtes GitHub au même agent. Chaque hôte a une authentification indépendante :

  • github.com → application OAuth, PAT ou BYO
  • contoso.ghe.com → BYO App
  • engineering.ghe.com → application BYO (avec une autre application GitHub)

La déconnexion d’un hôte n’affecte pas les autres.

Résolution des problèmes

Symptôme Cause la plus probable Réparer
Échec de la validation de l’authentification ID client incorrect ou hôte incorrect Vérifiez que l’application a été créée sur le même hôte que celui indiqué dans Code Access.
La signature avec Key Vault a échoué Mauvaise URI de clé ou permissions de clé manquantes Utilisez un URI RSA /keys/ avec Sign activé et attribuez le rôle Key Vault Crypto User à l’identité sélectionnée.
Le référentiel affiche Échec dans Code Access Autorisations d’application manquantes ou étendue d’installation Vérifiez Métadonnées : Lecture + Contenu : Lecture et la portée de l’installation.
Les problèmes de conversation instantanée fonctionnent, mais Code Access ne fonctionne pas Les vérifications de point de terminaison/chemin diffèrent Réexécutez le test de connexion et vérifiez l’autorisation des métadonnées.

Étape suivante