Ćwiczenie — tworzenie tożsamości obciążenia

Ukończone

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.

  1. 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.

    Zrzut ekranu przedstawiający okno terminalu programu Visual Studio Code, w którym program pwsh jest wyświetlany jako opcja powłoki.

  2. Wybierz listę rozwijaną Uruchom profil, a następnie wybierz pozycję Azure Cloud Shell (Bash).

    Zrzut ekranu przedstawiający okno terminalu programu Visual Studio Code. Zostanie wyświetlona lista rozwijana powłoki terminalu i element menu usługi Azure Cloud Shell (Bash).

    Zostanie otwarta nowa powłoka.

Logowanie się do platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure

  1. W terminalu programu Visual Studio Code uruchom następujące polecenie, aby zalogować się na platformie Azure:

    az login
    
  2. 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.

  1. 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.

    Zrzut ekranu przedstawiający okno terminalu programu Visual Studio Code, w którym program pwsh jest wyświetlany jako opcja powłoki.

  2. Wybierz listę rozwijaną Uruchom profil, a następnie wybierz pozycję Azure Cloud Shell (PowerShell).

    Zrzut ekranu przedstawiający okno terminalu programu Visual Studio Code. Zostanie wyświetlona lista rozwijana powłoki terminalu i element menu usługi Azure Cloud Shell (PowerShell).

    Zostanie otwarta nowa powłoka.

Logowanie się na platformie Azure przy użyciu programu Azure PowerShell

  1. W terminalu programu Visual Studio Code uruchom następujące polecenie, aby zalogować się na platformie Azure:

    Connect-AzAccount
    
  2. 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.

  1. 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'
    
  2. 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\"]}"
    
  1. 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'
    
  2. 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.

  1. W przeglądarce przejdź do repozytorium GitHub.

  2. Wybierz pozycję Ustawienia>Wpisy tajne i zmienne>Akcje.

  3. Wybierz pozycję Nowy wpis tajny repozytorium.

    Zrzut ekranu interfejsu usługi GitHub przedstawiający stronę

  4. Nadaj nazwę AZURE_CLIENT_ID wpisu tajnego.

  5. 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.

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

    Zrzut ekranu interfejsu usługi GitHub przedstawiający stronę

  7. 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.

  8. Sprawdź, czy lista wpisów tajnych zawiera teraz wszystkie trzy wpisy tajne.

    Zrzut ekranu interfejsu usługi GitHub przedstawiający listę wpisów tajnych.