Připojení k Azure pomocí GitHub Actions

Naučte se používat přihlášení k Azure pomocí Azure PowerShellu nebo Azure CLI pro interakci s prostředky Azure.

Pokud chcete v pracovním postupu GitHub Actions použít Azure PowerShell nebo Azure CLI, musíte se nejdřív přihlásit pomocí akce přihlášení k Azure.

Akce přihlášení k Azure podporuje dva různé způsoby ověřování v Azure:

Ve výchozím nastavení se přihlašovací akce přihlásí pomocí Azure CLI a nastaví prostředí Spouštěče GitHub Actions pro Azure CLI. Azure PowerShell můžete použít s enable-AzPSSession vlastností akce přihlášení k Azure. Tím se nastaví prostředí GitHub Actions runneru pomocí modulu Azure PowerShell.

Pomocí přihlášení k Azure se můžete připojit k veřejným nebo suverénním cloudům, včetně Azure Government a Azure Stack Hubu.

Použití akce přihlášení k Azure s openID Připojení

Pokud chcete nastavit přihlášení Azure pomocí OpenID Připojení a použít ho v pracovním postupu GitHub Actions, budete potřebovat:

  • Aplikace Microsoft Entra s instančním objektem, který má přiřazenou odpovídající roli k vašemu předplatnému.
  • Aplikace Microsoft Entra nakonfigurovaná s federovanými přihlašovacími údaji tak, aby důvěřovala tokenům vydaným GitHub Actions ve vašem úložišti GitHub. Můžete to nakonfigurovat na webu Azure Portal nebo pomocí rozhraní MICROSOFT Graph REST API.
  • Pracovní postup GitHub Actions, který žádá o tokeny problému GitHubu na pracovní postup, a používá akci přihlášení k Azure.

Vytvoření aplikace Microsoft Entra a instančního objektu

Budete muset vytvořit aplikaci Microsoft Entra a instanční objekt a pak k aplikaci přiřadit roli, aby váš pracovní postup získal přístup k vašemu předplatnému.

  1. Pokud nemáte existující aplikaci, zaregistrujte novou aplikaci Microsoft Entra a instanční objekt, který má přístup k prostředkům. V rámci tohoto procesu nezapomeňte:

    • Registrace aplikace pomocí Microsoft Entra ID a vytvoření instančního objektu
    • Přiřazení role k aplikaci
  2. Otevřete Registrace aplikací na webu Azure Portal a najděte svou aplikaci. Zkopírujte hodnoty ID aplikace (klienta) ID a ID adresáře (tenanta), které chcete použít v pracovním postupu GitHub Actions.

  3. Otevřete předplatná na webu Azure Portal a najděte své předplatné. Zkopírujte ID předplatného.

Přidání federovaných přihlašovacích údajů

Federované přihlašovací údaje můžete přidat na webu Azure Portal nebo pomocí rozhraní MICROSOFT Graph REST API.

  1. Na webu Azure Portal přejděte na Registrace aplikací a otevřete aplikaci, kterou chcete nakonfigurovat.
  2. V aplikaci přejděte na Certifikáty a tajné kódy.
    Select Certificates & secrets.
  3. Na kartě Federované přihlašovací údaje vyberte Přidat přihlašovací údaje. Add the federated credential
  4. Vyberte scénář přihlašovacích údajů, který GitHub Actions nasazuje prostředky Azure. Vygenerujte přihlašovací údaje zadáním podrobností o přihlašovacích údajích.
Pole Description Příklad
Organizace Název organizace GitHubu nebo uživatelské jméno GitHubu contoso
Úložiště Název úložiště GitHub. contoso-app
Typ entity Filtr použitý k určení rozsahu požadavků OIDC z pracovních postupů GitHubu. Toto pole slouží k vygenerování subject deklarace identity. Environment, Branch, , Pull requestTag
Název GitHubu Název prostředí, větve nebo značky. main
Název Identifikátor federovaných přihlašovacích údajů. contoso-deploy

Podrobnější přehled najdete v tématu Konfigurace aplikace tak, aby důvěřovala úložišti GitHubu.

Vytvoření tajných kódů GitHubu

K akci přihlášení musíte zadat ID klienta, ID tenanta a ID předplatného vaší aplikace. Tyto hodnoty je možné zadat buď přímo v pracovním postupu, nebo je můžete uložit v tajných kódech GitHubu a odkazovat na je ve vašem pracovním postupu. Uložením hodnot jako tajných kódů GitHubu je bezpečnější možnost.

  1. Otevřete úložiště GitHub a přejděte na Nastavení.

    Select Settings in the navigation

  2. Vyberte Akce tajných kódů zabezpečení > a proměnných>.

    Choose to add a secret

  3. Vytváření tajných kódů pro AZURE_CLIENT_ID, AZURE_TENANT_IDa AZURE_SUBSCRIPTION_ID. Pro tajné kódy GitHubu použijte tyto hodnoty z aplikace Azure Active Directory:

    Tajný kód GitHubu Aplikace Azure Active Directory
    AZURE_CLIENT_ID ID aplikace (klienta)
    AZURE_TENANT_ID ID adresáře (klienta)
    AZURE_SUBSCRIPTION_ID Subscription ID
  4. Uložte každý tajný kód výběrem možnosti Přidat tajný kód.

Nastavení přihlášení Azure s využitím ověřování OpenID Připojení

Pracovní postup GitHub Actions používá k ověřování v Azure Připojení OpenID. Další informace o této interakci najdete v dokumentaci k GitHub Actions.

V tomto příkladu použijete OpenID Připojení Azure CLI k ověření v Azure pomocí akce přihlášení k Azure. Příklad používá tajné kódy GitHubu client-idtenant-idpro , a subscription-id hodnoty. Tyto hodnoty můžete také předat přímo v akci přihlášení.

Akce přihlášení k Azure obsahuje volitelný audience vstupní parametr, který se standardně používá api://AzureADTokenExchange. Tento parametr můžete aktualizovat pro vlastní hodnoty cílové skupiny.

Tento pracovní postup se ověřuje pomocí OpenID Připojení a používá Azure CLI k získání podrobností o připojeném předplatném a výpisu skupiny prostředků.

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 

Ověření úspěšného přihlášení k Azure pomocí OpenID

Az CLI login Otevřete akci a ověřte, že se úspěšně spustila. Měla by se zobrazit zpráva Login successful. Pokud vaše přihlášení není úspěšné, zobrazí se zpráva Az CLI Login failed..

GitHub Actions Azure Login successful.

Použití akce přihlášení Azure s tajným kódem instančního objektu

Pokud chcete použít přihlášení Azure s instančním objektem, musíte nejprve přidat instanční objekt Azure jako tajný klíč do úložiště GitHub.

Vytvoření instančního objektu služby

V tomto příkladu vytvoříte tajný kód s názvem AZURE_CREDENTIALS , který můžete použít k ověření v Azure.

  1. Otevřete Azure Cloud Shell na webu Azure Portal nebo v Azure CLI místně.

    Poznámka:

    Pokud používáte Službu Azure Stack Hub, budete muset koncový bod služby SQL Management nastavit na not supportedhodnotu . az cloud update -n {environmentName} --endpoint-sql-management https://notsupported

  2. Vytvořte nový instanční objekt na webu Azure Portal pro vaši aplikaci. Instanční objekt musí být přiřazen s příslušnou rolí.

        az ad sp create-for-rbac --name "myApp" --role contributor \
                                    --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} \
                                    --json-auth
    

    --json-auth Parametr vypíše slovník výsledků přijatý akcí přihlášení, který je přístupný ve verzích >Azure CLI = 2.51.0. Verze před tímto použitím --sdk-auth s upozorněním na vyřazení.

  3. Zkopírujte objekt JSON pro instanční objekt.

    {
        "clientId": "<GUID>",
        "clientSecret": "<GUID>",
        "subscriptionId": "<GUID>",
        "tenantId": "<GUID>",
        (...)
    }
    

Přidání instančního objektu jako tajného kódu GitHubu

  1. Na GitHubu přejděte do svého úložiště.

  2. V navigační nabídce přejděte na Nastavení.

  3. Vyberte Akce tajných kódů zabezpečení > a proměnných>.

    Screenshot of select Actions menu item.

  4. Vyberte Nový tajný klíč úložiště.

  5. Celý výstup JSON z příkazu Azure CLI vložte do pole hodnoty tajného kódu. Dejte tajnému názvu AZURE_CREDENTIALS.

  6. Vyberte Add secret (Přidat tajný kód).

Použití akce přihlášení k Azure

Pomocí tajného kódu instančního objektu s akcí Přihlášení k Azure se ověřte v Azure.

V tomto pracovním postupu se ověříte pomocí akce přihlášení Azure s podrobnostmi instančního objektu uloženými v secrets.AZURE_CREDENTIALS. Pak spustíte akci Azure CLI. Další informace o odkazování na tajné kódy GitHubu v souboru pracovního postupu najdete v tématu Použití šifrovaných tajných kódů v pracovním postupu v Dokumentaci GitHubu.

Jakmile budete mít funkční krok přihlášení k Azure, můžete použít akce Azure PowerShellu nebo Azure CLI . Můžete také použít další akce Azure, jako jsou nasazení webové aplikace Azure a funkce Azure.

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 }}'

Použití akce Azure PowerShellu

V tomto příkladu se přihlásíte pomocí akce Přihlášení k Azure a pak načtete skupinu prostředků pomocí akce Azure PowerShellu.

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"

Použití akce Azure CLI

V tomto příkladu se přihlásíte pomocí akce Přihlášení k Azure a pak načtete skupinu prostředků pomocí akce 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

Připojení do cloudů Azure Government a Azure Stack Hub

Pokud se chcete přihlásit k některému z cloudů Azure Government, nastavte volitelné prostředí parametrů s podporovanými názvy AzureUSGovernment cloudů nebo AzureChinaCloud. Pokud tento parametr není zadaný, vezme výchozí hodnotu AzureCloud a připojí se k veřejnému cloudu 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

Připojení s jinými službami Azure

Následující články obsahují podrobnosti o připojení k GitHubu z Azure a dalších služeb.

Microsoft Entra ID

Power BI

Konektory

Azure Databricks