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:
- Jednostka usługi z wpisami tajnymi
- OpenID Połączenie (OIDC) z jednostką usługi platformy Azure przy użyciu poświadczeń tożsamości federacyjnej
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.
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
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.
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.
- Przejdź do Rejestracje aplikacji w witrynie Azure Portal i otwórz aplikację, którą chcesz skonfigurować.
- W aplikacji przejdź do pozycji Certyfikaty i wpisy tajne.
- Na karcie Poświadczenia federacyjne wybierz pozycję Dodaj poświadczenia.
- 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 request Tag |
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ą.
Otwórz repozytorium GitHub i przejdź do Ustawienia.
Wybierz pozycję Wpisy tajne zabezpieczeń > i zmienne > Akcje.
Utwórz wpisy tajne dla ,
AZURE_CLIENT_ID
AZURE_TENANT_ID
iAZURE_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 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-id
wartości , tenant-id
i 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.
.
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.
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 supported
wartość .az cloud update -n {environmentName} --endpoint-sql-management https://notsupported
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.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
W usłudze GitHub przejdź do repozytorium.
Przejdź do Ustawienia w menu nawigacji.
Wybierz pozycję Wpisy tajne zabezpieczeń > i zmienne > Akcje.
Wybierz pozycję Nowy wpis tajny repozytorium.
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
.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.