Nawiązywanie połączenia z platformą Azure przy użyciu funkcji GitHub Actions

Dowiedz się, jak używać logowania platformy Azure za pomocą programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure do interakcji z zasobami platformy Azure.

Aby użyć programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure w przepływie pracy funkcji GitHub Actions, musisz najpierw zalogować się przy użyciu akcji logowania platformy Azure.

Akcja logowania platformy Azure obsługuje dwa różne sposoby uwierzytelniania za pomocą platformy Azure:

Domyślnie akcja logowania loguje się za pomocą interfejsu wiersza polecenia platformy Azure i konfiguruje środowisko modułu uruchamiającego funkcję GitHub Actions dla interfejsu wiersza polecenia platformy Azure. Możesz użyć programu Azure PowerShell z właściwością enable-AzPSSession akcji logowania platformy Azure. Spowoduje to skonfigurowanie środowiska modułu uruchamiającego funkcji GitHub Actions za pomocą modułu Azure PowerShell.

Możesz użyć identyfikatora logowania platformy Azure, aby nawiązać połączenie z chmurami publicznymi lub suwerennym, w tym z platformą Azure Government i usługą Azure Stack Hub.

Używanie akcji logowania platformy Azure z Połączenie OpenID

Aby skonfigurować identyfikator logowania platformy Azure przy użyciu Połączenie OpenID i użyć go w przepływie pracy funkcji GitHub Actions, potrzebne są następujące elementy:

  • Aplikacja Firmy Microsoft Entra z jednostką usługi, która została przypisana z odpowiednią rolą do Subskrypcji.
  • Aplikacja Microsoft Entra skonfigurowana przy użyciu poświadczeń federacyjnych w celu zaufania tokenów wystawionych przez funkcję GitHub Actions do repozytorium GitHub. Można to skonfigurować w witrynie Azure Portal lub za pomocą interfejsów API REST programu Microsoft Graph.
  • Przepływ pracy funkcji GitHub Actions, który żąda tokenów wystawiania tokenów usługi GitHub do przepływu pracy i używa akcji logowania platformy Azure.

Tworzenie aplikacji Microsoft Entra i jednostki usługi

Musisz utworzyć aplikację firmy Microsoft Entra i jednostkę usługi, a następnie przypisać rolę w subskrypcji do aplikacji, aby przepływ pracy miał dostęp do subskrypcji.

  1. Jeśli nie masz istniejącej aplikacji, zarejestruj nową aplikację Microsoft Entra i jednostkę usługi, która może uzyskiwać dostęp do zasobów. W ramach tego procesu upewnij się, że:

    • Rejestrowanie aplikacji przy użyciu identyfikatora Entra firmy Microsoft i tworzenie jednostki usługi
    • Przypisywanie roli do aplikacji
  2. Otwórz Rejestracje aplikacji w witrynie Azure Portal i znajdź aplikację. Skopiuj wartości identyfikatora aplikacji (klienta) i identyfikatora katalogu (dzierżawy) do użycia w przepływie pracy funkcji GitHub Actions.

  3. Otwórz pozycję Subskrypcje w witrynie Azure Portal i znajdź swoją subskrypcję. Skopiuj identyfikator subskrypcji.

Dodawanie poświadczeń federacyjnych

Poświadczenia federacyjne można dodać w witrynie Azure Portal lub przy użyciu interfejsu API REST programu Microsoft Graph.

  1. Przejdź do Rejestracje aplikacji w witrynie Azure Portal i otwórz aplikację, którą chcesz skonfigurować.
  2. W aplikacji przejdź do pozycji Certyfikaty i wpisy tajne.
    Select Certificates & secrets.
  3. Na karcie Poświadczenia federacyjne wybierz pozycję Dodaj poświadczenia. Add the federated credential
  4. Wybierz scenariusz poświadczeń GitHub Actions wdrażający zasoby platformy Azure. Wygeneruj poświadczenia, wprowadzając szczegóły poświadczeń.
Pole opis Przykład
Organizacja Nazwa organizacji usługi GitHub lub nazwa użytkownika usługi GitHub. contoso
Repozytorium Nazwa repozytorium GitHub. contoso-app
Typ encji Filtr używany do określania zakresu żądań OIDC z przepływów pracy usługi GitHub. To pole służy do generowania subject oświadczenia. Environment, , Branch, , Pull requestTag
Nazwa usługi GitHub Nazwa środowiska, gałęzi lub tagu. main
Nazwisko Identyfikator poświadczenia federacyjnego. contoso-deploy

Aby uzyskać bardziej szczegółowe omówienie, zobacz Konfigurowanie aplikacji pod kątem zaufania repozytorium GitHub.

Tworzenie wpisów tajnych usługi GitHub

Musisz podać identyfikator klienta aplikacji, identyfikator dzierżawy i identyfikator subskrypcji do akcji logowania. Te wartości można podać bezpośrednio w przepływie pracy lub przechowywać w wpisach tajnych usługi GitHub i odwoływać się do nich w przepływie pracy. Zapisanie wartości jako wpisów tajnych usługi GitHub jest bezpieczniejszą opcją.

  1. Otwórz repozytorium GitHub i przejdź do Ustawienia.

    Select Settings in the navigation

  2. Wybierz pozycję Wpisy tajne zabezpieczeń > i zmienne > Akcje.

    Choose to add a secret

  3. Utwórz wpisy tajne dla , AZURE_CLIENT_IDAZURE_TENANT_IDi AZURE_SUBSCRIPTION_ID. Użyj tych wartości z aplikacji usługi Azure Active Directory dla wpisów tajnych usługi GitHub:

    Wpis tajny usługi GitHub Aplikacja usługi Azure Active Directory
    AZURE_CLIENT_ID Identyfikator aplikacji (klient)
    AZURE_TENANT_ID Identyfikator katalogu (dzierżawcy)
    AZURE_SUBSCRIPTION_ID Identyfikator subskrypcji
  4. Zapisz każdy wpis tajny, wybierając pozycję Dodaj wpis tajny.

Konfigurowanie logowania do platformy Azure przy użyciu uwierzytelniania Połączenie OpenID

Przepływ pracy funkcji GitHub Actions używa Połączenie OpenID do uwierzytelniania za pomocą platformy Azure. Aby dowiedzieć się więcej na temat tej interakcji, zobacz dokumentację funkcji GitHub Actions.

W tym przykładzie użyjesz identyfikatora OpenID Połączenie interfejsu wiersza polecenia platformy Azure do uwierzytelniania za pomocą akcji logowania platformy Azure. W tym przykładzie użyto wpisów tajnych usługi GitHub dla client-idwartości , tenant-idi subscription-id . Te wartości można również przekazać bezpośrednio w akcji logowania.

Akcja logowania platformy Azure zawiera opcjonalny audience parametr wejściowy, który domyślnie ma wartość api://AzureADTokenExchange. Ten parametr można zaktualizować dla niestandardowych wartości odbiorców.

Ten przepływ pracy uwierzytelnia się za pomocą Połączenie OpenID i używa interfejsu wiersza polecenia platformy Azure do uzyskania szczegółów połączonej subskrypcji i listy grup zasobów.

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 

Weryfikowanie pomyślnego logowania do platformy Azure przy użyciu identyfikatora OpenID

Az CLI login Otwórz akcję i sprawdź, czy została uruchomiona pomyślnie. Powinien zostać wyświetlony komunikat Login successful. Jeśli logowanie nie powiedzie się, zostanie wyświetlony komunikat Az CLI Login failed..

GitHub Actions Azure Login successful.

Używanie akcji logowania platformy Azure z wpisem tajnym jednostki usługi

Aby użyć identyfikatora logowania platformy Azure z jednostką usługi, musisz najpierw dodać jednostkę usługi platformy Azure jako wpis tajny do repozytorium GitHub.

Tworzenie jednostki usługi

W tym przykładzie utworzysz wpis tajny o nazwie AZURE_CREDENTIALS , którego można użyć do uwierzytelniania za pomocą platformy Azure.

  1. Otwórz usługę Azure Cloud Shell w witrynie Azure Portal lub lokalnie za pomocą interfejsu wiersza polecenia platformy Azure.

    Uwaga

    Jeśli używasz usługi Azure Stack Hub, musisz ustawić punkt końcowy usługi SQL Management na not supportedwartość . az cloud update -n {environmentName} --endpoint-sql-management https://notsupported

  2. Utwórz nową jednostkę usługi w witrynie Azure Portal dla aplikacji. Jednostka usługi musi być przypisana z odpowiednią rolą.

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

    Parametr --json-auth zwraca słownik wyników akceptowany przez akcję logowania dostępny w wersjach >interfejsu wiersza polecenia platformy Azure = 2.51.0. Wersje przed tym użyciem --sdk-auth z ostrzeżeniem o wycofaniu.

  3. Skopiuj obiekt JSON dla jednostki usługi.

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

Dodawanie jednostki usługi jako wpisu tajnego usługi GitHub

  1. W usłudze GitHub przejdź do repozytorium.

  2. Przejdź do Ustawienia w menu nawigacji.

  3. Wybierz pozycję Wpisy tajne zabezpieczeń > i zmienne > Akcje.

    Screenshot of select Actions menu item.

  4. Wybierz pozycję Nowy wpis tajny repozytorium.

  5. Wklej całe dane wyjściowe JSON z polecenia interfejsu wiersza polecenia platformy Azure do pola wartości wpisu tajnego. Nadaj wpisowi tajnym nazwę AZURE_CREDENTIALS.

  6. Wybierz przycisk Add secret (Dodaj wpis tajny).

Korzystanie z akcji logowania platformy Azure

Użyj wpisu tajnego jednostki usługi z akcją Azure Login, aby uwierzytelnić się na platformie Azure.

W tym przepływie pracy uwierzytelniasz się przy użyciu akcji logowania platformy Azure ze szczegółami jednostki usługi przechowywanymi w pliku secrets.AZURE_CREDENTIALS. Następnie uruchomisz akcję interfejsu wiersza polecenia platformy Azure. Aby uzyskać więcej informacji na temat odwoływania się do wpisów tajnych usługi GitHub w pliku przepływu pracy, zobacz Using encrypted secrets in a workflow in GitHub Docs (Używanie zaszyfrowanych wpisów tajnych w przepływie pracy w witrynie GitHub Docs).

Po uruchomieniu kroku logowania do platformy Azure możesz użyć akcji programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure. Możesz również użyć innych akcji platformy Azure, takich jak wdrażanie aplikacji internetowej platformy Azure i funkcje platformy 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 }}'

Korzystanie z akcji programu Azure PowerShell

W tym przykładzie zalogujesz się za pomocą akcji Azure Login, a następnie pobierzesz grupę zasobów za pomocą akcji programu 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"

Korzystanie z akcji interfejsu wiersza polecenia platformy Azure

W tym przykładzie logujesz się za pomocą akcji Azure Login, a następnie pobierasz grupę zasobów za pomocą akcji interfejsu wiersza polecenia platformy 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 }}

    - name: Azure CLI script
      uses: azure/CLI@v1
      with:
          azcliversion: 2.0.72
          inlineScript: |
            az account show
            az storage -h

Połączenie do chmur platformy Azure Government i usługi Azure Stack Hub

Aby zalogować się do jednej z chmur platformy Azure Government, ustaw opcjonalne środowisko parametrów z obsługiwanymi nazwami AzureUSGovernment chmur lub AzureChinaCloud. Jeśli ten parametr nie zostanie określony, przyjmuje wartość AzureCloud domyślną i nawiązuje połączenie z chmurą publiczną platformy 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

Połączenie z innymi usługami platformy Azure

Poniższe artykuły zawierają szczegółowe informacje na temat nawiązywania połączenia z usługą GitHub z platformy Azure i innych usług.

Tożsamość Microsoft Entra

Power BI

Łączniki

Azure Databricks