Übung: Erstellen einer Workloadidentität

Abgeschlossen

Bevor Sie die Website Ihres Spielwarenunternehmens mithilfe eines Workflows bereitstellen können, müssen Sie Ihrem Workflow die Authentifizierung bei Azure ermöglichen. In dieser Übung führen Sie die folgenden Schritte aus:

  • Erstellen Sie eine Ressourcengruppe für Ihre Website.
  • Erstellen Sie eine Microsoft Entra-Workload-ID, und gewähren Sie ihr Zugriff auf die Ressourcengruppe.
  • Erstellen von GitHub-Geheimnissen zum Vorbereiten Ihres Workflows auf die Verwendung der Workloadidentität

Diese Übung setzt voraus, dass Sie über die Berechtigung zum Erstellen von Anwendungen in Ihrem Microsoft Entra-Verzeichnis verfügen. Wenn Sie diese Anforderung mit Ihrem aktuellen Azure-Konto nicht erfüllen können, können Sie eine kostenlose Testversion erhalten und ein neues Azure-Abonnement und einen neuen Mandanten erstellen.

Wichtig

Die letzte Übung in diesem Modul enthält wichtige Schritte zur Bereinigung. Führen Sie unbedingt die Bereinigungsschritte durch, auch wenn Sie dieses Modul nicht absolvieren.

Anmelden bei Azure

Sie müssen sich über das Visual Studio Code-Terminal bei Ihrem Azure-Konto anmelden, um in Azure mit Workloadidentitäten arbeiten zu können. Stellen Sie sicher, dass Sie die Azure CLI-Tools installiert haben.

  1. Wählen Sie im Menü Terminal die Option New Terminal (Neues Terminal) aus. Das Terminalfenster wird in der Regel in der unteren Hälfte des Bildschirms geöffnet.

    Die Standardshell ist in der Regel pwsh, wie auf der rechten Seite des Terminalfensters dargestellt.

    Screenshot des Visual Studio Code-Terminalfensters, in dem pwsh als Shelloption angezeigt wird.

  2. Wählen Sie die Dropdownliste Startprofil und dann Azure Cloud Shell (Bash) aus.

    Screenshot des Visual Studio Code-Terminalfensters. Die Dropdownliste der Terminalshell und das Menüelement Azure Cloud Shell (Bash) werden angezeigt.

    Eine neue Shell wird geöffnet.

Anmelden bei Azure über die Azure CLI

  1. Führen Sie im Visual Studio Code-Terminal den folgenden Befehl aus, um sich bei Azure anzumelden:

    az login
    
  2. Melden Sie sich im Browserfenster, das daraufhin geöffnet wird, in Ihrem Azure-Konto an.

Melden Sie sich über das Visual Studio Code-Terminal bei Ihrem Azure-Konto an, um diese Vorlage in Azure bereitzustellen. Stellen Sie sicher, dass Azure PowerShell installiert ist, und melden Sie sich unter demselben Konto an, mit dem Sie die Sandbox aktiviert haben.

  1. Wählen Sie im Menü Terminal die Option New Terminal (Neues Terminal) aus. Das Terminalfenster wird in der Regel in der unteren Hälfte des Bildschirms geöffnet.

    Die Standardshell ist in der Regel pwsh, wie auf der rechten Seite des Terminalfensters dargestellt.

    Screenshot des Visual Studio Code-Terminalfensters, in dem pwsh als Shelloption angezeigt wird.

  2. Wählen Sie die Dropdownliste Startprofil und dann Azure Cloud Shell (PowerShell) aus.

    Screenshot des Visual Studio Code-Terminalfensters. Die Dropdownliste der Terminalshell und das Menüelement Azure Cloud Shell (PowerShell) werden angezeigt.

    Eine neue Shell wird geöffnet.

Anmelden bei Azure mithilfe von Azure PowerShell

  1. Führen Sie im Visual Studio Code-Terminal den folgenden Befehl aus, um sich bei Azure anzumelden:

    Connect-AzAccount
    
  2. Melden Sie sich im Browserfenster, das daraufhin geöffnet wird, in Ihrem Azure-Konto an.

Erstellen einer Workloadidentität

Tipp

In diesem Modul erstellen Sie eine Workloadidentität für Ihren Workflow. Im Modul Authentifizieren Ihres Azure-Bereitstellungsworkflows mithilfe von Workloadidentitäten werden Workloadidentitäten, deren Funktionsweise, die Erstellung, das Zuweisen von Rollen und die Verwaltung ausführlicher erläutert.

Zum Erstellen der Workloadidentität verwenden die Azure CLI-Befehle jq, um Daten aus der JSON-Ausgabe zu parsen. Wenn Sie jq nicht installiert haben, können Sie Bash in Azure Cloud Shell verwenden, um die Workloadidentität, die Ressourcengruppe und die Rollenzuweisung zu erstellen und die GitHub-Geheimnisse vorzubereiten.

  1. Führen Sie den folgenden Code aus, um Variablen für Ihren GitHub-Benutzernamen und den Namen Ihres Repositorys zu definieren. Stellen Sie sicher, dass Sie mygithubuser durch Ihren GitHub-Benutzernamen ersetzen, den Sie in der Übung der vorherigen Lerneinheit notiert haben.

    githubOrganizationName='mygithubuser'
    githubRepositoryName='toy-website-workflow'
    
  2. Führen Sie den folgenden Code aus, der eine Workloadidentität erstellt und diese Ihrem GitHub-Repository zuordnet:

    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. Führen Sie den folgenden Code aus, um Variablen für Ihren GitHub-Benutzernamen und den Namen Ihres Repositorys zu definieren. Stellen Sie sicher, dass Sie mygithubuser durch Ihren GitHub-Benutzernamen ersetzen, den Sie in der Übung der vorherigen Lerneinheit notiert haben.

    $githubOrganizationName = 'mygithubuser'
    $githubRepositoryName = 'toy-website-workflow'
    
  2. Führen Sie den folgenden Code aus, der eine Workloadidentität erstellt und diese Ihrem GitHub-Repository zuordnet:

    $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"
    

Erstellen einer Ressourcengruppe in Azure und Erteilen von Zugriff für die Workloadidentität

Führen Sie den folgenden Azure CLI-Befehl im Visual Studio Code-Terminal aus, um eine neue Ressourcengruppe zu erstellen und Ihrer Workloadidentität Zugriff auf diese Gruppe zu gewähren:

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

Führen Sie den folgenden Azure PowerShell-Befehl im Visual Studio Code-Terminal aus, um eine Ressourcengruppe zu erstellen und Ihrer Workloadidentität Zugriff auf diese Gruppe zu gewähren:

$resourceGroup = New-AzResourceGroup -Name ToyWebsite -Location westus3

New-AzADServicePrincipal -AppId $applicationRegistration.AppId
New-AzRoleAssignment `
   -ApplicationId $($applicationRegistration.AppId) `
   -RoleDefinitionName Contributor `
   -Scope $resourceGroup.ResourceId

Vorbereiten von GitHub-Geheimnissen

Führen Sie den folgenden Code aus, um die Werte anzuzeigen, die Sie als GitHub-Geheimnisse erstellen müssen:

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)"

Erstellen von GitHub-Geheimnissen

Sie haben eine Ressourcengruppe und eine Workloadidentität erstellt. Erstellen Sie als Nächstes einige Geheimnisse in GitHub Actions, damit sich Ihr Workflow mithilfe der Workloadidentität anmelden kann.

  1. Navigieren Sie im Browser zu Ihrem GitHub-Repository.

  2. Wählen Sie Einstellungen>Geheimnisse und Variablen>Aktionen aus.

  3. Wählen Sie New repository secret (Neues Repositorygeheimnis) aus.

    Screenshot der GitHub-Benutzeroberfläche mit der Seite „Geheimnisse“ mit hervorgehobener Schaltfläche „New repository secret“ (Neues Repositorygeheimnis)

  4. Nennen Sie das Geheimnis AZURE_CLIENT_ID.

  5. Fügen Sie in das Feld Wert die GUID aus der ersten Zeile der Terminalausgabe ein. Fügen Sie AZURE_CLIENT_ID, den Doppelpunkt und Leerzeichen nicht in den Wert ein.

  6. Klicken Sie auf Add secret (Geheimnis hinzufügen).

    Screenshot der GitHub-Benutzeroberfläche mit der Seite „New Secret“ (Neues Geheimnis) mit ausgefülltem Namen und Wert und hervorgehobener Schaltfläche „Add secret“ (Geheimnis hinzufügen)

  7. Wiederholen Sie den Vorgang, um die Geheimnisse für AZURE_TENANT_ID und AZURE_SUBSCRIPTION_ID zu erstellen, indem Sie die Werte aus den entsprechenden Feldern der Terminalausgabe kopieren.

  8. Vergewissern Sie sich, dass in der Liste der Geheimnisse jetzt alle drei Geheimnisse angezeigt werden.

    Screenshot: GitHub-Benutzeroberfläche mit der Liste der Geheimnisse