Utiliser GitHub Actions pour se connecter à Azure
Découvrez comment utiliser la connexion Azure avec Azure PowerShell ou Azure CLI pour interagir avec vos ressources Azure.
Pour utiliser Azure PowerShell ou Azure CLI dans un workflow GitHub Actions, vous devez d’abord vous connecter avec l’action Connexion Azure.
L’action Azure login prend en charge deux méthodes d’authentification différentes auprès d’Azure :
- Principal de service avec des secrets
- OpenID Connecter (OIDC) avec un principal de service Azure à l’aide d’informations d’identification d’identité fédérée
Par défaut, l’action de connexion se connecte avec Azure CLI et configure l’environnement d’exécuteur GitHub Actions pour Azure CLI. Vous pouvez utiliser Azure PowerShell avec la propriété enable-AzPSSession
de l’action de connexion Azure. Cela configure l’environnement d’exécuteur GitHub Actions avec le module Azure PowerShell.
Vous pouvez utiliser la connexion Azure pour vous connecter à des clouds publics ou souverains, notamment Azure Government et Azure Stack Hub.
Utiliser l’action Azure login avec OpenID Connect
Pour configurer une action Azure login avec OpenID Connect et l’utiliser dans un workflow GitHub Actions, vous avez besoin des éléments suivants :
- Une application Microsoft Entra, avec un principal de service qui a été affecté avec un rôle approprié à votre abonnement.
- Une application Microsoft Entra configurée avec des informations d’identification fédérées pour approuver les jetons émis par GitHub Actions dans votre dépôt GitHub. Vous pouvez le configurer dans le Portail Azure ou avec les API REST Microsoft Graph.
- Flux de travail GitHub Actions qui demande des jetons de problème GitHub au flux de travail et utilise l’action de connexion Azure.
Créer une application Microsoft Entra et un principal de service
Vous devez créer une application Microsoft Entra et un principal de service, puis attribuer un rôle sur votre abonnement à votre application afin que votre flux de travail ait accès à votre abonnement.
Si vous n’avez pas d’application existante, inscrivez une nouvelle application Microsoft Entra et un principal de service qui peuvent accéder aux ressources. Dans le cadre de ce processus, veillez à effectuer les opérations suivantes :
- Inscrire votre application avec l’ID Microsoft Entra et créer un principal de service
- Attribuer un rôle à l’application
Ouvrez Inscriptions d’applications dans le portail Azure et recherchez votre application. Copiez les valeurs définies pour ID d’application (client) et ID d’annuaire (locataire). Vous en aurez besoin dans votre workflow GitHub Actions.
Ouvrez Abonnements dans le portail Azure et recherchez votre abonnement. Copiez l’ID d’abonnement.
Ajouter des informations d’identification fédérées
Cous pouvez ajouter des informations d’identification fédérées dans le portail Azure ou avec l’API REST Microsoft Graph.
- Accédez à Inscriptions d’applications dans le portail Azure et ouvrez l’application que vous souhaitez configurer.
- Dans l’application, accédez à Certificats et secrets.
- Dans l’onglet Informations d’identification fédérées, sélectionnez Ajouter des informations d’identification.
- Sélectionnez le scénario d’informations d’identification GitHub Actions deploying Azure resources. Entrez les détails de vos informations d’identification pour les générer.
Champ | Description | Exemple |
---|---|---|
Organization | Nom de votre organisation GitHub ou nom d’utilisateur GitHub. | contoso |
Référentiel | Nom de votre dépôt GitHub. | contoso-app |
Type d'entité | Filtre utilisé pour définir l’étendue des demandes OIDC des workflows GitHub. Ce champ est utilisé pour générer la revendication subject . |
Environment , , Branch Pull request , ,Tag |
Nom GitHub | Nom de l’environnement, de la branche ou de l’étiquette. | main |
Nom | Identificateur des informations d’identification fédérées. | contoso-deploy |
Pour obtenir une vue d’ensemble plus détaillée, consultez Configurer une application pour approuver un dépôt GitHub.
Créer des secrets GitHub
Vous devez fournir l’ID de client, l’ID de locataire et l’ID d’abonnement de votre application à l’action de connexion. Vous pouvez fournir ces valeurs directement dans le workflow ou les stocker dans des secrets GitHub et les référencer dans votre workflow. L’enregistrement des valeurs en tant que secrets GitHub est l’option la plus sécurisée.
Ouvrez votre dépôt GitHub et accédez à Settings (Paramètres).
Sélectionnez Sécurité > Secrets et variables > Actions.
Créez des secrets pour
AZURE_CLIENT_ID
,AZURE_TENANT_ID
etAZURE_SUBSCRIPTION_ID
. Utilisez ces valeurs de votre application Azure Active Directory pour vos secrets GitHub :Secret GitHub Application Azure Active Directory AZURE_CLIENT_ID ID d’application (client) AZURE_TENANT_ID ID de l’annuaire (locataire) AZURE_SUBSCRIPTION_ID Identifiant d’abonnement Enregistrez chaque secret en sélectionnant Ajouter un secret.
Configurer Azure Login avec l’authentification OpenID Connect
Votre workflow GitHub Actions utilise OpenID Connect pour s’authentifier auprès d’Azure. Pour en savoir plus sur cette interaction, consultez la documentation sur GitHub Actions.
Dans cet exemple, vous allez utiliser OpenID Connecter Azure CLI pour vous authentifier auprès d’Azure avec l’action de connexion Azure. L’exemple utilise des secrets GitHub pour les valeurs client-id
, tenant-id
et subscription-id
. Vous pouvez également passer ces valeurs directement dans l’action login.
L’action de connexion Azure inclut un paramètre d’entrée facultatif audience
qui est défini par défaut api://AzureADTokenExchange
sur . Vous pouvez mettre à jour ce paramètre pour les valeurs d’audience personnalisées.
Ce flux de travail s’authentifie auprès d’OpenID Connecter et utilise Azure CLI pour obtenir les détails de l’abonnement connecté et du groupe de ressources de liste.
name: Run Azure Login with OpenID Connect
on: [push]
permissions:
id-token: write
contents: read
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: 'Az CLI login'
uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: 'Run Azure CLI commands'
run: |
az account show
az group list
pwd
Vérifier la réussite de la connexion Azure avec OpenID
Ouvrez l’action Az CLI login
et vérifiez qu’elle a bien abouti. Vous devriez voir le message Login successful
. Si votre connexion échoue, vous voyez le message Az CLI Login failed.
.
Utiliser l’action Azure login avec un secret de principal de service
Pour utiliser Azure login avec un principal de service, vous devez d’abord ajouter votre principal de service Azure en tant que secret à votre dépôt GitHub.
Créer un principal du service
Dans cet exemple, vous créez un secret nommé AZURE_CREDENTIALS
que vous pourrez utiliser pour vous authentifier auprès d’Azure.
Ouvrez Azure Cloud Shell sur le portail Azure ou Azure CLI localement.
Remarque
Si vous utilisez Azure Stack Hub, vous devez définir votre point de terminaison d’administration SQL sur
not supported
.az cloud update -n {environmentName} --endpoint-sql-management https://notsupported
Créez un principal de service pour votre application dans le portail Azure. Le principal de service doit être affecté à un rôle approprié.
az ad sp create-for-rbac --name "myApp" --role contributor \ --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} \ --json-auth
Le paramètre
--json-auth
génère le dictionnaire de résultats accepté par l’action de connexion, accessible dans les versions >d’Azure CLI = 2.51.0. Les versions antérieures à celle-ci utilisent--sdk-auth
avec un avertissement de dépréciation.Copiez l’objet JSON pour votre principal de service.
{ "clientId": "<GUID>", "clientSecret": "<GUID>", "subscriptionId": "<GUID>", "tenantId": "<GUID>", (...) }
Ajouter le principal de service en tant que secret GitHub
Dans GitHub, accédez à votre dépôt.
Sélectionnez Paramètres dans le volet de navigation.
Sélectionnez Sécurité > Secrets et variables > Actions.
Sélectionnez New repository secret (Nouveau secret de dépôt).
Collez l’intégralité de la sortie JSON de la commande Azure CLI dans le champ de valeur du secret. Nommez le secret
AZURE_CREDENTIALS
.Sélectionnez Ajouter un secret.
Utiliser l’action de connexion Azure
Utilisez le secret du principal de service avec l’action Connexion Azure pour vous authentifier auprès d’Azure.
Dans ce workflow, vous vous authentifiez à l’aide de l’action Connexion Azure avec les détails du principal de service stockés dans secrets.AZURE_CREDENTIALS
. Ensuite, vous exécutez une action Azure CLI. Pour plus d’informations sur le référencement des secrets GitHub dans un fichier de workflow, consultez Utilisation de secrets chiffrés dans un workflow dans les documents GitHub.
Une fois que vous disposez d’une étape de connexion Azure active, vous pouvez utiliser les actions Azure PowerShell ou Azure CLI. Vous pouvez aussi utiliser d’autres actions Azure comme Déployer une application web Azure et Azure Functions.
on: [push]
name: AzureLoginSample
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Log in with Azure
uses: azure/login@v1
with:
creds: '${{ secrets.AZURE_CREDENTIALS }}'
Utiliser l’action Azure PowerShell
Dans cet exemple, vous vous connectez en utilisant l’action Connexion Azure, puis récupérez un groupe de ressources avec l’action Azure PowerShell.
on: [push]
name: AzureLoginSample
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Log in with Azure
uses: azure/login@v1
with:
creds: '${{ secrets.AZURE_CREDENTIALS }}'
enable-AzPSSession: true
- name: Azure PowerShell Action
uses: Azure/powershell@v1
with:
inlineScript: Get-AzResourceGroup -Name "< YOUR RESOURCE GROUP >"
azPSVersion: "latest"
Utiliser l’action Azure CLI
Dans cet exemple, vous vous connectez en utilisant l’action de connexion Azure, puis vous obtenez un groupe de ressources avec l’action Azure CLI.
on: [push]
name: AzureLoginSample
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Log in with Azure
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Azure CLI script
uses: azure/CLI@v1
with:
azcliversion: 2.0.72
inlineScript: |
az account show
az storage -h
Se connecter aux clouds Azure Government et Azure Stack Hub
Pour vous connecter à l’un des clouds Azure Government, définissez le paramètre facultatif « environment » avec les noms de cloud pris en charge AzureUSGovernment
ou AzureChinaCloud
. Si ce paramètre n’est pas spécifié, il prend la valeur par défaut AzureCloud
et se connecte au cloud public Azure.
- name: Login to Azure US Gov Cloud with CLI
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_US_GOV_CREDENTIALS }}
environment: 'AzureUSGovernment'
enable-AzPSSession: false
- name: Login to Azure US Gov Cloud with Az Powershell
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_US_GOV_CREDENTIALS }}
environment: 'AzureUSGovernment'
enable-AzPSSession: true
Se connecter à partir d’autres services Azure
Les articles suivants fournissent des informations sur la connexion à GitHub à partir d’Azure et d’autres services.