Ćwiczenie — tworzenie tożsamości obciążenia
Zanim będzie można wdrożyć witrynę internetową firmy z aplikacją do obsługi dokumentów przy użyciu przepływu pracy, musisz włączyć przepływ pracy w celu uwierzytelniania na platformie Azure. W tym ćwiczeniu wykonasz następujące czynności:
- Utwórz grupę zasobów dla witryny internetowej.
- Utwórz Tożsamość obciążeń Microsoft Entra i przyznaj mu dostęp do grupy zasobów.
- Utwórz wpisy tajne usługi GitHub, aby przygotować przepływ pracy do korzystania z tożsamości obciążenia.
To ćwiczenie wymaga uprawnień do tworzenia aplikacji w katalogu Microsoft Entra. Jeśli nie możesz spełnić tego wymagania przy użyciu bieżącego konta platformy Azure, możesz uzyskać bezpłatną wersję próbną i utworzyć nową subskrypcję i dzierżawę platformy Azure.
Ważne
Ostatnie ćwiczenie w tym module zawiera ważne kroki oczyszczania. Pamiętaj, aby wykonać kroki oczyszczania, nawet jeśli nie ukończysz tego modułu.
Logowanie się do platformy Azure
Aby pracować z tożsamościami obciążeń na platformie Azure, zaloguj się do konta platformy Azure z poziomu terminalu programu Visual Studio Code. Upewnij się, że zainstalowano narzędzia interfejsu wiersza polecenia platformy Azure.
W menu Terminal wybierz pozycję Nowy terminal. Okno terminalu zwykle otwiera się w dolnej połowie ekranu.
Domyślna powłoka to zazwyczaj pwsh, jak pokazano po prawej stronie okna terminalu.
Wybierz listę rozwijaną Uruchom profil, a następnie wybierz pozycję Azure Cloud Shell (Bash).
Zostanie otwarta nowa powłoka.
Logowanie się do platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure
W terminalu programu Visual Studio Code uruchom następujące polecenie, aby zalogować się na platformie Azure:
az login
W przeglądarce, która zostanie otwarta, zaloguj się do konta platformy Azure.
Aby wdrożyć ten szablon na platformie Azure, zaloguj się do konta platformy Azure z poziomu terminalu programu Visual Studio Code. Upewnij się, że zainstalowano program Azure PowerShell i zaloguj się do tego samego konta, które zostało użyte do aktywowania piaskownicy.
W menu Terminal wybierz pozycję Nowy terminal. Okno terminalu zwykle otwiera się w dolnej połowie ekranu.
Domyślna powłoka to zazwyczaj pwsh, jak pokazano po prawej stronie okna terminalu.
Wybierz listę rozwijaną Uruchom profil, a następnie wybierz pozycję Azure Cloud Shell (PowerShell).
Zostanie otwarta nowa powłoka.
Logowanie się na platformie Azure przy użyciu programu Azure PowerShell
W terminalu programu Visual Studio Code uruchom następujące polecenie, aby zalogować się na platformie Azure:
Connect-AzAccount
W przeglądarce, która zostanie otwarta, zaloguj się do konta platformy Azure.
Tworzenie tożsamości obciążenia
Napiwek
W tym module utworzysz tożsamość obciążenia, która będzie używana przez przepływ pracy. Moduł Uwierzytelnij przepływ pracy wdrażania platformy Azure przy użyciu tożsamości obciążeń zawiera bardziej szczegółowe wyjaśnienie tożsamości obciążeń, w tym sposobu ich działania, a także sposobu ich tworzenia, przypisywania ról i zarządzania nimi.
Aby utworzyć tożsamość obciążenia, polecenia interfejsu wiersza polecenia platformy Azure służą jq
do analizowania danych z danych wyjściowych JSON. Jeśli nie jq
zainstalowano programu , możesz użyć powłoki Bash w usłudze Azure Cloud Shell , aby utworzyć tożsamość obciążenia, grupę zasobów i przypisanie roli oraz przygotować wpisy tajne usługi GitHub.
Uruchom następujący kod, aby zdefiniować zmienne dla nazwy użytkownika usługi GitHub i nazwy repozytorium. Upewnij się, że zastąp
mygithubuser
ciąg nazwą użytkownika usługi GitHub zanotowaną w poprzedniej lekcji ćwiczenia.githubOrganizationName='mygithubuser' githubRepositoryName='toy-website-workflow'
Uruchom następujący kod, który tworzy tożsamość obciążenia i kojarzy go z repozytorium GitHub:
applicationRegistrationDetails=$(az ad app create --display-name 'toy-website-workflow') applicationRegistrationObjectId=$(echo $applicationRegistrationDetails | jq -r '.id') applicationRegistrationAppId=$(echo $applicationRegistrationDetails | jq -r '.appId') az ad app federated-credential create \ --id $applicationRegistrationObjectId \ --parameters "{\"name\":\"toy-website-workflow\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:ref:refs/heads/main\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
Uruchom następujący kod, aby zdefiniować zmienne dla nazwy użytkownika usługi GitHub i nazwy repozytorium. Upewnij się, że zastąp
mygithubuser
ciąg nazwą użytkownika usługi GitHub zanotowaną w poprzedniej lekcji ćwiczenia.$githubOrganizationName = 'mygithubuser' $githubRepositoryName = 'toy-website-workflow'
Uruchom następujący kod, który tworzy tożsamość obciążenia i kojarzy go z repozytorium GitHub:
$applicationRegistration = New-AzADApplication -DisplayName 'toy-website-workflow' New-AzADAppFederatedCredential ` -Name 'toy-website-workflow' ` -ApplicationObjectId $applicationRegistration.Id ` -Issuer 'https://token.actions.githubusercontent.com' ` -Audience 'api://AzureADTokenExchange' ` -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):ref:refs/heads/main"
Tworzenie grupy zasobów na platformie Azure i udzielanie dostępu tożsamości obciążenia
Aby utworzyć nową grupę zasobów i udzielić tożsamości obciążenia dostępu do niej, uruchom to polecenie interfejsu wiersza polecenia platformy Azure w terminalu programu Visual Studio Code:
resourceGroupResourceId=$(az group create --name ToyWebsite --location westus3 --query id --output tsv)
az ad sp create --id $applicationRegistrationObjectId
az role assignment create \
--assignee $applicationRegistrationAppId \
--role Contributor \
--scope $resourceGroupResourceId
Aby utworzyć grupę zasobów i udzielić tożsamości obciążenia dostępu do niej, uruchom następujące polecenie programu Azure PowerShell w terminalu programu Visual Studio Code:
$resourceGroup = New-AzResourceGroup -Name ToyWebsite -Location westus3
New-AzADServicePrincipal -AppId $applicationRegistration.AppId
New-AzRoleAssignment `
-ApplicationId $($applicationRegistration.AppId) `
-RoleDefinitionName Contributor `
-Scope $resourceGroup.ResourceId
Przygotowywanie wpisów tajnych usługi GitHub
Uruchom następujący kod, aby wyświetlić wartości, które należy utworzyć jako wpisy tajne usługi GitHub:
echo "AZURE_CLIENT_ID: $applicationRegistrationAppId"
echo "AZURE_TENANT_ID: $(az account show --query tenantId --output tsv)"
echo "AZURE_SUBSCRIPTION_ID: $(az account show --query id --output tsv)"
$azureContext = Get-AzContext
Write-Host "AZURE_CLIENT_ID: $($applicationRegistration.AppId)"
Write-Host "AZURE_TENANT_ID: $($azureContext.Tenant.Id)"
Write-Host "AZURE_SUBSCRIPTION_ID: $($azureContext.Subscription.Id)"
Tworzenie wpisów tajnych usługi GitHub
Utworzono grupę zasobów i tożsamość obciążenia. Następnie utwórz niektóre wpisy tajne w funkcji GitHub Actions, aby przepływ pracy mógł się zalogować przy użyciu tożsamości obciążenia.
W przeglądarce przejdź do repozytorium GitHub.
Wybierz pozycję Ustawienia>Wpisy tajne i zmienne>Akcje.
Wybierz pozycję Nowy wpis tajny repozytorium.
Nadaj nazwę AZURE_CLIENT_ID wpisu tajnego.
W polu Wartość wklej identyfikator GUID z pierwszego wiersza danych wyjściowych terminalu. Nie dołączaj
AZURE_CLIENT_ID
, dwukropka ani żadnych spacji w wartości.Wybierz przycisk Add secret (Dodaj wpis tajny).
Powtórz ten proces, aby utworzyć wpisy tajne dla AZURE_TENANT_ID i AZURE_SUBSCRIPTION_ID, kopiując wartości z odpowiednich pól w danych wyjściowych terminalu.
Sprawdź, czy lista wpisów tajnych zawiera teraz wszystkie trzy wpisy tajne.