GitHub Actions gebruiken om verbinding te maken met Azure
Meer informatie over het gebruik van Azure-aanmelding met Azure PowerShell of Azure CLI om te communiceren met uw Azure-resources.
Als u Azure PowerShell of Azure CLI wilt gebruiken in een GitHub Actions-werkstroom, moet u zich eerst aanmelden met de Azure-aanmeldingsactie .
De azure-aanmeldingsactie ondersteunt twee verschillende manieren om te verifiëren met Azure:
- Service-principal met geheimen
- OpenID Verbinding maken (OIDC) met een Azure-service-principal met behulp van een federatieve identiteitsreferentie
De aanmeldingsactie meldt zich standaard aan met de Azure CLI en stelt de GitHub Actions runner-omgeving in voor Azure CLI. U kunt Azure PowerShell gebruiken met enable-AzPSSession
de eigenschap van de Azure-aanmeldingsactie. Hiermee stelt u de GitHub Actions runner-omgeving in met de Azure PowerShell-module.
U kunt Azure-aanmelding gebruiken om verbinding te maken met openbare of onafhankelijke clouds, waaronder Azure Government en Azure Stack Hub.
De azure-aanmeldingsactie gebruiken met OpenID Verbinding maken
Als u een Azure-aanmelding wilt instellen met OpenID Verbinding maken en deze wilt gebruiken in een GitHub Actions-werkstroom, hebt u het volgende nodig:
- Een Microsoft Entra-toepassing, met een service-principal die is toegewezen met een geschikte rol voor uw abonnement.
- Een Microsoft Entra-toepassing die is geconfigureerd met een federatieve referentie voor het vertrouwen van tokens die door GitHub Actions zijn uitgegeven aan uw GitHub-opslagplaats. U kunt dit configureren in Azure Portal of met Microsoft Graph REST API's.
- Een GitHub Actions-werkstroom die gitHub-uitgiftetokens voor de werkstroom aanvraagt en de Azure-aanmeldingsactie gebruikt.
Een Microsoft Entra-toepassing en service-principal maken
U moet een Microsoft Entra-toepassing en service-principal maken en vervolgens een rol voor uw abonnement toewijzen aan uw toepassing, zodat uw werkstroom toegang heeft tot uw abonnement.
Als u geen bestaande toepassing hebt, registreert u een nieuwe Microsoft Entra-toepassing en service-principal die toegang heeft tot resources. Zorg ervoor dat u als onderdeel van dit proces het volgende doet:
- Uw toepassing registreren bij Microsoft Entra-id en een service-principal maken
- Een rol toewijzen aan de toepassing
Open App-registraties in Azure Portal en zoek uw toepassing. Kopieer de waarden voor toepassings-id (client) en map-id (tenant) voor gebruik in uw GitHub Actions-werkstroom.
Open Abonnementen in De Azure-portal en zoek uw abonnement. Kopieer de abonnements-id.
Federatieve referenties toevoegen
U kunt federatieve referenties toevoegen in Azure Portal of met de Microsoft Graph REST API.
- Ga naar App-registraties in Azure Portal en open de app die u wilt configureren.
- Ga in de app naar Certificaten en geheimen.
- Selecteer op het tabblad Federatieve referenties de optie Referentie toevoegen.
- Selecteer het referentiescenario voor GitHub Actions waarmee Azure-resources worden geïmplementeerd. Genereer uw referentie door uw referentiegegevens in te voeren.
Veld | Omschrijving | Voorbeeld |
---|---|---|
Organisatie | De naam van uw GitHub-organisatie of de GitHub-gebruikersnaam. | contoso |
Opslagplaats | De naam van uw GitHub-opslagplaats. | contoso-app |
Entiteitstype | Het filter dat wordt gebruikt voor het bereik van de OIDC-aanvragen van GitHub-werkstromen. Dit veld wordt gebruikt om de subject claim te genereren. |
Environment , , , Branch Pull request Tag |
GitHub-naam | De naam van de omgeving, vertakking of tag. | main |
Naam | Id voor de federatieve referentie. | contoso-deploy |
Zie Een app configureren om een GitHub-opslagplaats te vertrouwen voor een gedetailleerder overzicht.
GitHub-geheimen maken
U moet de client-id, tenant-id en abonnements-id van uw toepassing opgeven voor de aanmeldingsactie. Deze waarden kunnen rechtstreeks in de werkstroom worden opgegeven of kunnen worden opgeslagen in GitHub-geheimen en waarnaar wordt verwezen in uw werkstroom. Het opslaan van de waarden als GitHub-geheimen is de veiligere optie.
Open uw GitHub-opslagplaats en ga naar Instellingen.
Selecteer Acties voor beveiligingsgeheimen > en variabelen>.
Geheimen maken voor
AZURE_CLIENT_ID
,AZURE_TENANT_ID
enAZURE_SUBSCRIPTION_ID
. Gebruik deze waarden uit uw Azure Active Directory-toepassing voor uw GitHub-geheimen:GitHub Secret Azure Active Directory-toepassing AZURE_CLIENT_ID Client-id van toepassing AZURE_TENANT_ID Id van directory (tenant) AZURE_SUBSCRIPTION_ID Abonnements-id Sla elk geheim op door Geheim toevoegen te selecteren.
Azure-aanmelding met OpenID Verbinding maken-verificatie instellen
Uw GitHub Actions-werkstroom maakt gebruik van OpenID Verbinding maken voor verificatie met Azure. Raadpleeg de Documentatie voor GitHub Actions voor meer informatie over deze interactie.
In dit voorbeeld gebruikt u OpenID Verbinding maken Azure CLI om te verifiëren met Azure met de aanmeldingsactie van Azure. In het voorbeeld worden GitHub-geheimen gebruikt voor de client-id
, tenant-id
en subscription-id
waarden. U kunt deze waarden ook rechtstreeks doorgeven in de aanmeldingsactie.
De Azure-aanmeldingsactie bevat een optionele audience
invoerparameter die standaard wordt gebruikt api://AzureADTokenExchange
. U kunt deze parameter bijwerken voor aangepaste doelgroepwaarden.
Deze werkstroom wordt geverifieerd met OpenID Verbinding maken en gebruikt Azure CLI om de details van het verbonden abonnement op te halen en de resourcegroep weer te geven.
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
Geslaagde Azure-aanmelding verifiëren met OpenID
Open de Az CLI login
actie en controleer of deze is uitgevoerd. Als het goed is, ziet u nu het bericht Login successful
. Als uw aanmelding mislukt, ziet u het bericht Az CLI Login failed.
.
De azure-aanmeldingsactie gebruiken met een service-principalgeheim
Als u Azure-aanmelding wilt gebruiken met een service-principal, moet u eerst uw Azure-service-principal als geheim toevoegen aan uw GitHub-opslagplaats.
Een service-principal maken
In dit voorbeeld maakt u een geheim met de naam AZURE_CREDENTIALS
dat u kunt gebruiken voor verificatie met Azure.
Open Azure Cloud Shell in Azure Portal of Azure CLI lokaal.
Notitie
Als u Azure Stack Hub gebruikt, moet u uw SQL Management-eindpunt instellen op
not supported
.az cloud update -n {environmentName} --endpoint-sql-management https://notsupported
Maak een nieuwe service-principal in Azure Portal voor uw app. De service-principal moet worden toegewezen met een geschikte rol.
az ad sp create-for-rbac --name "myApp" --role contributor \ --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} \ --json-auth
De parameter
--json-auth
voert de resultatenwoordenlijst uit die is geaccepteerd door de aanmeldingsactie, die toegankelijk is in Azure CLI-versies >= 2.51.0. Versies vóór dit gebruik--sdk-auth
met een afschaffingswaarschuwing.Kopieer het JSON-object voor uw service-principal.
{ "clientId": "<GUID>", "clientSecret": "<GUID>", "subscriptionId": "<GUID>", "tenantId": "<GUID>", (...) }
De service-principal toevoegen als een GitHub-geheim
Ga in GitHub naar uw opslagplaats.
Ga naar Instellingen in het navigatiemenu.
Selecteer Acties voor beveiligingsgeheimen > en variabelen>.
Selecteer Nieuw opslagplaatsgeheim.
Plak de volledige JSON-uitvoer van de Azure CLI-opdracht in het waardeveld van het geheim. Geef het geheim de naam
AZURE_CREDENTIALS
.Selecteer Geheim toevoegen.
De azure-aanmeldingsactie gebruiken
Gebruik het service-principalgeheim met de azure-aanmeldingsactie om te verifiëren bij Azure.
In deze werkstroom verifieert u met behulp van de azure-aanmeldingsactie met de details van de service-principal die zijn opgeslagen in secrets.AZURE_CREDENTIALS
. Vervolgens voert u een Azure CLI-actie uit. Zie Versleutelde geheimen gebruiken in een werkstroom in GitHub Docs voor meer informatie over het verwijzen naar GitHub-geheimen in een werkstroom .
Zodra u een werkende Azure-aanmeldingsstap hebt, kunt u de Azure PowerShell - of Azure CLI-acties gebruiken. U kunt ook andere Azure-acties gebruiken, zoals De implementatie van Azure-web-apps en Azure-functies.
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 }}'
De Azure PowerShell-actie gebruiken
In dit voorbeeld meldt u zich aan met de azure-aanmeldingsactie en haalt u vervolgens een resourcegroep op met de Azure PowerShell-actie.
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"
De Azure CLI-actie gebruiken
In dit voorbeeld meldt u zich aan met de azure-aanmeldingsactie en haalt u vervolgens een resourcegroep op met de Azure CLI-actie.
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
Verbinding maken naar Azure Government- en Azure Stack Hub-clouds
Als u zich wilt aanmelden bij een van de Azure Government-clouds, stelt u de optionele parameteromgeving in met ondersteunde cloudnamen AzureUSGovernment
of AzureChinaCloud
. Als deze parameter niet is opgegeven, wordt de standaardwaarde AzureCloud
gebruikt en wordt er verbinding gemaakt met de openbare Azure-cloud.
- 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
Verbinding maken met andere Azure-services
De volgende artikelen bevatten informatie over het maken van verbinding met GitHub vanuit Azure en andere services.