Skip to main content

Configuration d’un réseau privé pour les exécuteurs hébergé sur GitHub

Découvrez comment utiliser les exécuteurs GitHub hébergés avec un réseau privé Azure.

Remarques :

  • L'utilisation d'exécuteurs hébergés par GitHub Azure (VNET) correspond à une version bêta susceptible d'être modifiée.
  • Seuls les exécuteurs Ubuntu et Windows avec UC 4-64 sont pris en charge par Azure VNET. Pour plus d'informations sur les types d'exécuteurs, consultez « À propos des exécuteurs de plus grande taille ».
  • Les régions prises en charge sont les suivantes :East US, East US 2, et West US 2. Pour demander la prise en charge d'une région qui n'est pas dans cette liste, remplissez le formulaire de demande par région.
  • Le réseau privé des GitHub hébergés par les exécuteurs ne prend pas en charge les adresses IP statiques des exécuteurs de plus grandes tailles. Vous devez utiliser des adresses IP dynamiques, configuration par défaut des exécuteurs de plus grande taille. Pour plus d'informations sur la mise en réseau des exécuteurs de plus grande taille, consultez « À propos des exécuteurs de plus grande taille ».

À propos de la configuration d’un réseau privé pour les exécuteurs hébergés par GitHub

To use GitHub-hosted runners with Azure VNET, you will need to configure your Azure resources then create an Azure private network configuration in GitHub.

Les procédures suivantes vont vous guider tout au long du processus de configuration.

Avertissement : Ensure your Azure resources have been configured before adding a network configuration in GitHub. For more information, see "Configuration d’un réseau privé pour les exécuteurs hébergé sur GitHub."

Configuration de vos ressources Azure

Vous allez utiliser un script pour automatiser la configuration de vos ressources Azure.

Prérequis

  • Utilisez un compte Azure avec le rôle Contributeur d’abonnement et le rôle Contributeur de réseau. Ces rôles vous permettent d’inscrire le fournisseur de ressources GitHub.Network et de déléguer le sous-réseau. Pour plus d’informations, consultez Rôles Azure intégrés sur Microsoft Learn.

  • Pour associer correctement les sous-réseaux à l’utilisateur approprié, les ressources Azure NetworkSettings doivent être créées dans les mêmes abonnements où les réseaux virtuels sont créés.

  • Pour garantir la disponibilité des ressources/résidence des données, les ressources doivent être créées dans la même région Azure.

  • Enregistrez le fichier suivant .bicep. Nommez le fichier actions-nsg-deployment.bicep.

    Remarque : pour autoriser GitHub Actions à communiquer avec les exécuteurs, vous pouvez aussi autoriser les domaines de pare-feu qui sont également requis pour la communication entre les exécuteurs auto-hébergés et GitHub Enterprise Cloud. Pour plus d’informations, consultez « À propos des exécuteurs auto-hébergés ».

    Bicep
    @description('NSG for outbound rules')
    param location string
    param nsgName string = 'actions_NSG'
    
    resource actions_NSG 'Microsoft.Network/networkSecurityGroups@2017-06-01' = {
      name: nsgName
      location: location
      properties: {
        securityRules: [
          {
            name: 'DenyInternetOutBoundOverwrite'
            properties: {
              protocol: '*'
              sourcePortRange: '*'
              destinationPortRange: '*'
              sourceAddressPrefix: '*'
              destinationAddressPrefix: 'Internet'
              access: 'Deny'
              priority: 400
              direction: 'Outbound'
            }
          }
          {
            name: 'AllowVnetOutBoundOverwrite'
            properties: {
              protocol: 'TCP'
              sourcePortRange: '*'
              destinationPortRange: '443'
              sourceAddressPrefix: '*'
              destinationAddressPrefix: 'VirtualNetwork'
              access: 'Allow'
              priority: 200
              direction: 'Outbound'
              destinationAddressPrefixes: []
            }
          }
          {
            name: 'AllowAzureCloudOutBound'
            properties: {
              protocol: 'TCP'
              sourcePortRange: '*'
              destinationPortRange: '443'
              sourceAddressPrefix: '*'
              destinationAddressPrefix: 'AzureCloud'
              access: 'Allow'
              priority: 210
              direction: 'Outbound'
              destinationAddressPrefixes: []
            }
          }
          {
            name: 'AllowInternetOutBoundGitHub'
            properties: {
              protocol: 'TCP'
              sourcePortRange: '*'
              destinationPortRange: '443'
              sourceAddressPrefix: '*'
              access: 'Allow'
              priority: 220
              direction: 'Outbound'
              destinationAddressPrefixes: [
                '140.82.112.0/20'
                '143.55.64.0/20'
                '185.199.108.0/22'
                '192.30.252.0/22'
              ]
            }
          }        
        ]
      }
    }
    

1. Obtenir le databaseId pour votre entreprise

Utilisez la requête GraphQL suivante pour récupérer votre databaseId d’entreprise. Vous allez utiliser l’entreprise databaseId pour la valeur de la variable d’environnement DATABASE_ID à l’étape suivante. Pour plus d’informations sur l’utilisation de GraphQL, consultez « Formation d’appels avec GraphQL ».

Variable de requêteDescription
slugSlug pour votre compte d’entreprise, que vous pouvez identifier en examinant l’URL de votre entreprise, https://github.com/enterprises/SLUG.
query(
  $slug: String!
){
  enterprise (slug: $slug)
  {
    slug
    databaseId
  }
}
'
Variables
{
  "slug": "ENTERPRISE_SLUG"
}

Vous pouvez également utiliser la commande curl suivante pour trouver votre databaseId.

Shell
curl -H "Authorization: Bearer BEARER_TOKEN" -X POST \
  -d '{ "query": "query($slug: String!) { enterprise (slug: $slug) { slug databaseId } }" ,
        "variables": {
          "slug": "ENTERPRISE_SLUG"
        }
      }' \
https://api.github.com/graphql

2. Utiliser un script pour configurer vos ressources Azure

Utilisez le script suivant pour configurer un sous-réseau pour le réseau privé Azure. Le script crée toutes les ressources dans le même groupe de ressources.

Pour utiliser le script, remplissez les valeurs de variable d’environnement d’espace réservé avec les valeurs réelles et exécutez le script à partir d’un interpréteur de commandes bash ou d’un Sous-système Windows pour Linux.

Remarques :

  • Exécutez le script suivant dans le même référentiel où vous avez enregistré le fichier actions-nsg-deployment.bicep.
  • Lorsque vous définissez la variable d’environnement YOUR_AZURE_LOCATION, utilisez le nom de votre région. Cette valeur est différente du nom complet de votre région. Pour afficher la liste des noms et des noms complets, utilisez az account list-locations -o table.
  • Lorsque vous créez la ressource de paramètres réseau, un lien d’association de service est appliqué au sous-réseau que vous fournissez. Ce lien empêche toute suppression accidentelle du sous-réseau lors de son utilisation par le service GitHub Actions.
  • Si vous personnalisez ce script pour utiliser des ressources réseau dans des sous-réseaux existants, vous devez vous assurer que toutes les interfaces réseau (NIC) existantes connectées au sous-réseau sont supprimées avant que le sous-réseau soit délégué au service GitHub Actions. Dans le cas contraire, le service ne parviendra pas à appliquer le lien d’association de service au sous-réseau.
Bash
#!/bin/bash

# This script creates the following resources in the specified subscription:
# - Resource group
# - Network Security Group rules
# - Virtual network (vnet) and subnet
# - Network Settings with specified subnet and GitHub Enterprise database ID
#
# It also registers the `GitHub.Network` resource provider with the subscription,
# delegates the created subnet to the Actions service via the `GitHub.Network/NetworkSettings`
# resource type, and applies the NSG rules to the created subnet.

# stop on failure
set -e

#set environment
export AZURE_LOCATION=YOUR_AZURE_LOCATION
export SUBSCRIPTION_ID=YOUR_SUBSCRIPTION_ID
export RESOURCE_GROUP_NAME=YOUR_RESOURCE_GROUP_NAME
export VNET_NAME=YOUR_VNET_NAME
export SUBNET_NAME=YOUR_SUBNET_NAME
export NSG_NAME=YOUR_NSG_NAME
export NETWORK_SETTINGS_RESOURCE_NAME=YOUR_NETWORK_SETTINGS_RESOURCE_NAME
export DATABASE_ID=YOUR_DATABASE_ID

# These are the default values. You can adjust your address and subnet prefixes.
export ADDRESS_PREFIX=10.0.0.0/16
export SUBNET_PREFIX=10.0.0.0/24

echo
echo login to Azure
. az login --output none

echo
echo set account context $SUBSCRIPTION_ID
. az account set --subscription $SUBSCRIPTION_ID

echo
echo Register resource provider GitHub.Network
. az provider register --namespace GitHub.Network

echo
echo Create resource group $RESOURCE_GROUP_NAME at $AZURE_LOCATION
. az group create --name $RESOURCE_GROUP_NAME --location $AZURE_LOCATION

echo
echo Create NSG rules deployed with 'actions-nsg-deployment.bicep' file
. az deployment group create --resource-group $RESOURCE_GROUP_NAME --template-file ./actions-nsg-deployment.bicep --parameters location=$AZURE_LOCATION nsgName=$NSG_NAME

echo
echo Create vnet $VNET_NAME and subnet $SUBNET_NAME
. az network vnet create --resource-group $RESOURCE_GROUP_NAME --name $VNET_NAME --address-prefix $ADDRESS_PREFIX --subnet-name $SUBNET_NAME --subnet-prefixes $SUBNET_PREFIX

echo
echo Delegate subnet to GitHub.Network/networkSettings and apply NSG rules
. az network vnet subnet update --resource-group $RESOURCE_GROUP_NAME --name $SUBNET_NAME --vnet-name $VNET_NAME --delegations GitHub.Network/networkSettings --network-security-group $NSG_NAME

echo
echo Create network settings resource $NETWORK_SETTINGS_RESOURCE_NAME
. az resource create --resource-group $RESOURCE_GROUP_NAME  --name $NETWORK_SETTINGS_RESOURCE_NAME --resource-type GitHub.Network/networkSettings --properties "{ \"location\": \"$AZURE_LOCATION\", \"properties\" : {  \"subnetId\": \"/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME\", \"organizationId\": \"$DATABASE_ID\" }}" --is-full-object --output table --query "{GitHubId:tags.GitHubId, name:name}" --api-version 2023-11-01-preview

echo
echo To clean up and delete resources run the following command:
echo az group delete --resource-group $RESOURCE_GROUP_NAME

Le script retournera la charge utile complète de la ressource créée. La valeur de hachage GitHubId renvoyée dans la charge utile de la ressource créée est l’ID de la ressource des paramètres du réseau que vous utiliserez dans les étapes suivantes lors de la configuration réseau dans GitHub.

Configuration d’une configuration réseau dans GitHub

Après avoir configuré vos ressources Azure, vous pouvez utiliser un Réseau virtuel Azure (VNET) pour la mise en réseau privée en créant une configuration réseau pour votre entreprise. Ensuite, vous pouvez associer cette configuration réseau aux groupes d’exécuteurs. Pour plus d’informations sur les groupes d’exécuteurs, consultez « Contrôle de l’accès aux exécuteurs plus grands ».

Une fois la configuration réseau associée à un groupe d’exécuteurs, tous les exécuteurs de ce groupe auront accès au réseau virtuel Azure connecté à la configuration sous-jacente.

Prérequis

Ensure your Azure resources have been configured before adding a network configuration in GitHub. For more information, see "Configuration d’un réseau privé pour les exécuteurs hébergé sur GitHub."

1. Ajouter une connexion réseau

  1. Dans le coin supérieur droit de GitHub.com, cliquez sur votre photo de profil, puis sur Vos entreprises.

  2. Dans la liste des entreprises, cliquez sur l’entreprise que vous souhaitez afficher.

  3. Dans la barre latérale du compte d’entreprise, cliquez sur Paramètres.

  4. Dans la barre latérale gauche, cliquez sur Réseau informatique hébergé.

  5. Cliquez sur la liste déroulante Nouvelle configuration réseau. Cliquez ensuite sur Réseau privé Azure.

  6. Donnez un nom à votre configuration réseau.

  7. Cliquez sur Ajouter le réseau virtuel Azure.

  8. Dans la fenêtre contextuelle, entrez l’ID de ressource des paramètres réseau que vous avez récupérés lorsque vous avez configuré vos ressources Azure pour la mise en réseau privée.

  9. Cliquez sur Ajouter le réseau virtuel Azure.

2. Créer un groupe d’exécuteurs

Remarque : pour que les dépôts au sein des organisations appartenant à l’entreprise puissent accéder au groupe d’exécuteurs, ces dépôts doivent avoir accès à ce groupe d’exécuteurs au niveau de l’organisation. Pour plus d’informations, consultez « Contrôle de l’accès aux exécuteurs plus grands ».

  1. Créez un groupe d’exécuteurs pour votre entreprise. Pour plus d'informations sur la création d'un groupe d’exécuteurs, consultez « Contrôle de l’accès aux exécuteurs plus grands ».
  2. Pour choisir une stratégie pour l’accès des organisations, sélectionnez le menu déroulant Accès des organisations et cliquez sur une stratégie. Vous pouvez configurer un groupe d’exécuteurs pour qu’il soit accessible à une liste spécifique d’organisations ou à toutes les organisations de la grande entreprise.
  3. Lors de la configuration de votre groupe d’exécuteurs, sous « Configurations réseau », utilisez le menu déroulant pour sélectionner la configuration réseau que vous avez créée pour le réseau virtuel Azure.
  4. Cliquez sur Créer un groupe pour créer le groupe et appliquer la stratégie.

3. Ajouter l’exécuteur hébergé par GitHub

au groupe d’exécuteurs

Remarque : lors de l’ajout de l’exécuteur hébergé par GitHub à un groupe d’exécuteurs, sélectionnez le groupe d’exécuteurs que vous avez créé dans les procédures précédentes.

  1. Ajoutez l’exécuteur hébergé par GitHub au groupe d’exécuteurs. Pour plus d’informations, consultez « Gestion des exécuteurs de plus grande taille ».

4. Optionnellement, gérer les configurations du réseau

  1. Dans le coin supérieur droit de GitHub.com, cliquez sur votre photo de profil, puis sur Vos entreprises.

  2. Dans la liste des entreprises, cliquez sur l’entreprise que vous souhaitez afficher.

  3. Dans la barre latérale du compte d’entreprise, cliquez sur Paramètres.

  4. Dans la barre latérale gauche, cliquez sur Réseau informatique hébergé.

  5. Pour modifier une configuration réseau, à droite de la configuration réseau, cliquez sur . Cliquez sur Modifier la configuration.

  6. Pour désactiver une configuration réseau, à droite de la configuration réseau, cliquez sur . Cliquez ensuite sur Désactiver.

  7. Pour supprimer une configuration réseau, à droite de la configuration réseau, cliquez sur . Cliquez ensuite sur Supprimer.

Suppression d’un sous-réseau

Lorsque vous créez la ressource de paramètres réseau, un lien d’association de service est appliqué au sous-réseau que vous fournissez. Ce lien empêche toute suppression accidentelle du sous-réseau lors de son utilisation par le service GitHub Actions.

Pour supprimer le sous-réseau, le lien d'association de service doit d'abord être supprimé. Le lien d'association de service est supprimé en toute sécurité dès lors que la ressource de paramètres réseau est supprimée.

  1. Dans le coin supérieur droit de GitHub.com, cliquez sur votre photo de profil, puis sur Vos entreprises.

  2. Dans la liste des entreprises, cliquez sur l’entreprise que vous souhaitez afficher.

  3. Dans la barre latérale du compte d’entreprise, cliquez sur Paramètres.

  4. Dans la barre latérale gauche, cliquez sur Réseau informatique hébergé.

  5. Ouvrez la configuration réseau qui utilise le sous-réseau que vous souhaitez supprimer.

  6. Passez en revue la liste des groupes d'exécuteurs à l'aide de la configuration réseau.

  7. Dans l'angle supérieur droit, cliquez sur le bouton «  ». Cliquez ensuite sur Supprimer la configuration.

  8. Pour supprimer la ressource des paramètres réseau et supprimer le lien d'association de service, utilisez vos propres entrées avec les commandes suivantes d'Azure CLI. Pour plus d'informations, consultez la Documentation sur l'interface de ligne de commande Azure (CLI)

    Bash
    az account set --subscription $SUBSCRIPTION_ID
    az resource delete -g $RESOURCE_GROUP_NAME --name $NETWORK_SETTINGS_RESOURCE_NAME --resource-type 'GitHub.Network/networkSettings' --api-version '2023-11-01-preview'
    
  9. Supprimez le sous-réseau dans Azure. Pour plus d’informations, consultez Supprimer un sous-réseau sur Microsoft Learn.