Cvičení – vytvoření identity úlohy

Dokončeno

Než budete moct nasadit web vaší toy společnosti pomocí pracovního postupu, musíte povolit ověření pracovního postupu v Azure. V tomto cvičení:

  • Vytvořte pro svůj web skupinu prostředků.
  • Vytvořte ID úloh Microsoft Entra a udělte mu přístup ke skupině prostředků.
  • Vytvořte tajné kódy GitHubu pro přípravu pracovního postupu na používání identity úlohy.

Toto cvičení vyžaduje, abyste měli oprávnění k vytváření aplikací v adresáři Microsoft Entra. Pokud tento požadavek nemůžete splnit s aktuálním účtem Azure, můžete získat bezplatnou zkušební verzi a vytvořit nové předplatné a tenanta Azure.

Důležité

Poslední cvičení v tomto modulu obsahuje důležité kroky čištění. Nezapomeňte postupovat podle kroků čištění, i když tento modul nedokončíte.

Přihlášení k Azure

Pokud chcete pracovat s identitami úloh v Azure, přihlaste se ke svému účtu Azure z terminálu editoru Visual Studio Code. Ujistěte se, že jste nainstalovali nástroje Azure CLI .

  1. V nabídce Terminál vyberte Nový terminál. Okno terminálu se obvykle otevře v dolní polovině obrazovky.

    Výchozí prostředí je obvykle pwsh, jak je znázorněno na pravé straně okna terminálu.

    Snímek obrazovky okna terminálu editoru Visual Studio Code, ve kterém se jako možnost prostředí zobrazuje pwsh

  2. Vyberte rozevírací seznam Spustit profil a pak vyberte Azure Cloud Shell (Bash).

    Snímek obrazovky s oknem terminálu editoru Visual Studio Code Zobrazí se rozevírací seznam prostředí terminálu a položka nabídky Azure Cloud Shell (Bash).

    Otevře se nové prostředí.

Přihlášení k Azure pomocí Azure CLI

  1. V terminálu editoru Visual Studio Code spusťte následující příkaz pro přihlášení k Azure:

    az login
    
  2. V prohlížeči, který se otevře, se přihlaste ke svému účtu Azure.

Pokud chcete tuto šablonu nasadit do Azure, přihlaste se ke svému účtu Azure z terminálu editoru Visual Studio Code. Ujistěte se, že jste nainstalovali Azure PowerShell, a přihlaste se ke stejnému účtu, který jste použili k aktivaci sandboxu.

  1. V nabídce Terminál vyberte Nový terminál. Okno terminálu se obvykle otevře v dolní polovině obrazovky.

    Výchozí prostředí je obvykle pwsh, jak je znázorněno na pravé straně okna terminálu.

    Snímek obrazovky okna terminálu editoru Visual Studio Code, ve kterém se jako možnost prostředí zobrazuje pwsh

  2. Vyberte rozevírací seznam Spustit profil a pak vyberte Azure Cloud Shell (PowerShell).

    Snímek obrazovky s oknem terminálu editoru Visual Studio Code Zobrazí se rozevírací seznam prostředí terminálu a položka nabídky Azure Cloud Shell (PowerShell).

    Otevře se nové prostředí.

Přihlášení k Azure přes Azure PowerShell

  1. V terminálu editoru Visual Studio Code spusťte následující příkaz pro přihlášení k Azure:

    Connect-AzAccount
    
  2. V prohlížeči, který se otevře, se přihlaste ke svému účtu Azure.

Vytvoření identity úlohy

Tip

V tomto modulu vytvoříte identitu úlohy, kterou bude váš pracovní postup používat. Modul Ověření pracovního postupu nasazení Azure pomocí identit úloh poskytuje podrobnější vysvětlení identit úloh, včetně toho, jak fungují, a také jejich vytváření, přiřazování rolí a jejich správě.

Pokud chcete vytvořit identitu úlohy, příkazy Azure CLI slouží jq k analýze dat z výstupu JSON. Pokud nemáte jq nainstalovaný, můžete pomocí bashe v Azure Cloud Shellu vytvořit identitu úlohy, skupinu prostředků a přiřazení role a připravit tajné kódy GitHubu.

  1. Spuštěním následujícího kódu definujte proměnné pro uživatelské jméno GitHubu a název úložiště. Ujistěte se, že nahradíte mygithubuser uživatelské jméno GitHubu, které jste si poznamenali v předchozí lekci cvičení.

    githubOrganizationName='mygithubuser'
    githubRepositoryName='toy-website-workflow'
    
  2. Spusťte následující kód, který vytvoří identitu úlohy a přidruží ji k úložišti 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. Spuštěním následujícího kódu definujte proměnné pro uživatelské jméno GitHubu a název úložiště. Ujistěte se, že nahradíte mygithubuser uživatelské jméno GitHubu, které jste si poznamenali v předchozí lekci cvičení.

    $githubOrganizationName = 'mygithubuser'
    $githubRepositoryName = 'toy-website-workflow'
    
  2. Spusťte následující kód, který vytvoří identitu úlohy a přidruží ji k úložišti 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"
    

Vytvoření skupiny prostředků v Azure a udělení přístupu k identitě úloh

Pokud chcete vytvořit novou skupinu prostředků a udělit jí přístup k identitě úloh, spusťte tento příkaz Azure CLI v terminálu editoru 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

Pokud chcete vytvořit skupinu prostředků a udělit jí přístup k identitě úlohy, spusťte tento příkaz Azure PowerShellu v terminálu editoru 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

Příprava tajných kódů GitHubu

Spuštěním následujícího kódu zobrazte hodnoty, které potřebujete vytvořit jako tajné kódy GitHubu:

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

Vytvoření tajných kódů GitHubu

Vytvořili jste skupinu prostředků a identitu úlohy. Dále vytvořte v GitHub Actions nějaké tajné kódy, aby se váš pracovní postup mohl přihlásit pomocí identity úlohy.

  1. V prohlížeči přejděte do úložiště GitHub.

  2. Vyberte Nastavení>tajných kódů a proměnných>Akce.

  3. Vyberte Nový tajný klíč úložiště.

    Snímek obrazovky s rozhraním GitHubu se stránkou Tajné kódy se zvýrazněným tlačítkem Vytvořit tajný kód úložiště

  4. Pojmenujte tajný AZURE_CLIENT_ID.

  5. Do pole Hodnota vložte identifikátor GUID z prvního řádku výstupu terminálu. Nezahrnujte AZURE_CLIENT_IDdo hodnoty dvojtečku ani mezery.

  6. Vyberte Add secret (Přidat tajný kód).

    Snímek obrazovky s rozhraním GitHubu se stránkou Nový tajný kód se zvýrazněným názvem a hodnotou a zvýrazněným tlačítkem Přidat tajný kód

  7. Opakujte proces a vytvořte tajné kódy pro AZURE_TENANT_ID a AZURE_SUBSCRIPTION_ID a zkopírujte hodnoty z odpovídajících polí ve výstupu terminálu.

  8. Ověřte, že seznam tajných kódů teď zobrazuje všechny tři tajné kódy.

    Snímek obrazovky s rozhraním GitHubu zobrazující seznam tajných kódů