Cvičení – Autorizujte svůj služební principál pro nasazení

Dokončeno

V předchozím cvičení jste vytvořili služební účet pro nasazovací kanál vašeho webu a otestovali jste, že jste se mohli přihlásit pomocí jeho klíče. Nyní jste připraveni udělit představiteli služby přístup k vašemu prostředí Azure. V tomto cvičení vytvoříte přiřazení role pro instanční objekt a pak pomocí instančního objektu nasadíte soubor Bicep.

Během tohoto procesu:

  • Přihlaste se jako vlastní uživatelský účet.
  • Vytvořte skupinu prostředků pro web vaší společnosti.
  • Vytvořte přiřazení role, které principálu služby umožní nasadit prostředky do skupiny prostředků.
  • Přihlaste se jako aplikační objekt a nasaďte soubor Bicep, který vytvoří zdroje pro webové stránky vaší společnosti.
  • Ověřte nasazení.
  • Vyčistěte skupinu prostředků a služební identitu.

Přihlásit se jako uživatelský účet

V předchozím cvičení jste se přihlásili pomocí služebního principálu a poté se odhlásili. Nyní se musíte znovu přihlásit ke svému vlastnímu uživatelskému účtu, abyste mohli pokračovat v dalších krocích tohoto cvičení.

  1. V terminálu Azure Cloud Shellu (Bash) editoru Visual Studio Code se přihlaste k Azure spuštěním následujícího příkazu:

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

  1. V terminálu Azure Cloud Shellu (PowerShell) editoru Visual Studio Code se přihlaste k Azure spuštěním následujícího příkazu:

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

Vytvoření skupiny prostředků

Teď vytvoříte skupinu prostředků, která bude obsahovat prostředky webu společnosti toy.

  1. Spuštěním tohoto příkazu Azure CLI v terminálu editoru Visual Studio Code vytvořte skupinu prostředků:

    az group create --name ToyWebsite --location eastus
    
  2. Podívejte se na výstup JSON z předchozího příkazu. Obsahuje vlastnost nazývanou id, což je ID skupiny prostředků. Zkopírujte to někde v bezpečí. Brzy ho použijete.

  1. Spuštěním tohoto příkazu Azure PowerShellu v terminálu editoru Visual Studio Code vytvořte skupinu prostředků:

    New-AzResourceGroup -Name ToyWebsite -Location eastus
    
  2. Podívejte se na výstup z předchozího příkazu. Obsahuje vlastnost nazvanou ResourceId, které je ID skupiny prostředků. Zkopírujte to někde v bezpečí. Brzy ho použijete.

Vytvořte přiřazení role

U implementačního kanálu pro váš web se rozhodnete vytvořit přiřazení role s následujícími podrobnostmi:

  • assignee: Instanční objekt, který jste vytvořili v předchozím cvičení.
  • Role: Předdefinovaná role Přispěvatel.
  • Rozsah: Skupina prostředků, kterou jste vytvořili v předchozím kroku.

Spuštěním následujícího příkazu Azure CLI v terminálu editoru Visual Studio Code vytvořte přiřazení role. Zástupné symboly nahraďte hodnotami, které jste zkopírovali dříve.

az role assignment create \
  --assignee APPLICATION_ID \
  --role Contributor \
  --scope RESOURCE_GROUP_ID \
  --description "The deployment pipeline for the company's website needs to be able to create resources within the resource group."

Spuštěním následujícího příkazu Azure CLI v terminálu editoru Visual Studio Code vytvořte přiřazení role. Zástupné symboly nahraďte hodnotami, které jste zkopírovali dříve.

New-AzRoleAssignment `
  -ApplicationId APPLICATION_ID `
  -RoleDefinitionName Contributor `
  -Scope RESOURCE_GROUP_ID `
  -Description "The deployment pipeline for the company's website needs to be able to create resources within the resource group."

Vytvořte soubor Bicep

Dříve jste vytvořili soubor Bicep, který nasazuje prostředky vašeho webu. Soubor uložíte zde, abyste jej mohli otestovat pomocí servisního principálu.

  1. Vytvořte nový soubor s názvem main.bicep.

  2. Do souboru main.bicep přidejte následující obsah. Šablonu nasadíte brzy.

    @description('The Azure region into which the resources should be deployed.')
    param location string = resourceGroup().location
    
    @description('The name of the App Service app.')
    param appServiceAppName string = 'toywebsite${uniqueString(resourceGroup().id)}'
    
    @description('The name of the App Service plan SKU.')
    param appServicePlanSkuName string = 'F1'
    
    var appServicePlanName = 'toy-website-plan'
    var applicationInsightsInstanceName = 'toy-website-insights'
    
    resource appServicePlan 'Microsoft.Web/serverFarms@2020-06-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: appServicePlanSkuName
      }
    }
    
    resource applicationInsightsInstance 'Microsoft.Insights/components@2018-05-01-preview' = {
      name: applicationInsightsInstanceName
      location: location
      kind: 'web'
      properties: {
        Application_Type: 'web'
      }
    }
    
    resource appServiceApp 'Microsoft.Web/sites@2020-06-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          appSettings: [
            {
              name: 'APPINSIGHTS_INSTRUMENTATIONKEY'
              value: applicationInsightsInstance.properties.InstrumentationKey
            }
            {
              name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'
              value: applicationInsightsInstance.properties.ConnectionString
            }
          ]
        }
      }
    }
    
  3. Uložte změny souboru. Můžete buď vybrat Soubor>Uložit jako, nebo vybrat Ctrl+S ve Windows (⌘+S v macOS). Nezapomeňte si zapamatovat, kam jste soubor uložili. Můžete například chtít vytvořit skripty složku, do které ji uložíte.

Nasaďte soubor Bicep pomocí služebního principálu

V současné době nemáte kanál nasazení, takže budete simulovat, co kanál provádí pro nasazení souboru Bicep.

  1. Spusťte následující příkaz Azure CLI v terminálu editoru Visual Studio Code a přihlaste se pomocí přihlašovacích údajů služebního principála. Zástupné symboly nahraďte hodnotami, které jste zkopírovali v předchozím cvičení.

    az login --service-principal \
      --username APPLICATION_ID \
      --password SERVICE_PRINCIPAL_KEY \
      --tenant TENANT_ID
    
  2. Nasaďte soubor Bicep spuštěním následujícího příkazu Azure CLI:

    az deployment group create \
      --resource-group ToyWebsite \
      --template-file main.bicep
    

    Dokončení nasazení může trvat minutu nebo dvě, a poté uvidíte, že nasazení proběhlo úspěšně.

  1. V terminálu Visual Studio Code spusťte následující příkaz Azure PowerShellu, který vás bezpečně vyzve k zadání přihlašovacích údajů služebního principálu. Pro uživatelské jméno a heslo použijte ID a klíč aplikace instančního objektu z předchozího cvičení.

    $credential = Get-Credential
    
  2. Spusťte následující příkaz Azure PowerShell v terminálu Visual Studio Code, abyste se přihlásili pomocí přihlašovacích údajů služebního objektu. Zástupný symbol TENANT_ID nahraďte hodnotou, kterou jste zkopírovali dříve.

    Connect-AzAccount -ServicePrincipal `
      -Credential $credential `
      -Tenant TENANT_ID
    
  3. Nasaďte soubor Bicep spuštěním následujícího příkazu Azure PowerShellu:

    New-AzResourceGroupDeployment -ResourceGroupName ToyWebsite -TemplateFile main.bicep
    

    Dokončení nasazení může trvat minutu či dvě, poté uvidíte úspěšné nasazení.

Ověření nasazení

Pomocí webu Azure Portal zkontrolujte prostředky, které jste nasadili, a zkontrolujte výsledky nasazení.

  1. Přejděte na portál Azure.

  2. V levém podokně vyberte skupiny prostředků.

  3. Vyberte ToyWebsite.

  4. Výběrem možnosti Nasazení zobrazíte úspěšné nasazení.

    snímek obrazovky s podoknem Nasazení skupiny prostředků webu Azure Portal zobrazující úspěšné nasazení

    Může se také zobrazit nasazení pojmenované Failure-Anomalies-Alert-Rule-Deployment. Application Insights toto nasazení vytvoří automaticky.

  5. Vyberte hlavní nasazení pro zobrazení nasazených prostředků, a poté rozbalte Podrobnosti o nasazení.

    V tomto případě se zobrazí plán služby App Service, aplikace a instance Application Insights.

    snímek obrazovky s podoknem přehledu nasazení na webu Azure Portal pro hlavní nasazení, s plánem služby App Service a aplikací a uvedenou instancí Application Insights

    Všimněte si, že pro toto nasazení není nic neobvyklého. I když to inicioval služební principal, je to jako jakékoli jiné nasazení Bicep.

Vyčištění skupiny prostředků a služebního hlavního objektu

Úspěšně jste vytvořili aplikační objekt a přiřadili jste roli a nasadili jste prostředky vašeho webu pomocí souboru Bicep. Teď můžete odebrat prostředky, které jste vytvořili.

  1. Odhlaste se z účtu služby principal pomocí následujícího příkazu:

    az logout
    
  2. Přihlaste se zpět do Azure pomocí vlastního uživatelského účtu spuštěním následujícího příkazu:

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

  4. Spuštěním následujícího příkazu Azure CLI odstraňte skupinu prostředků, její obsah a přiřazení role:

    az group delete --name ToyWebsite
    

    Po zobrazení výzvy k potvrzení zadejte y.

  5. Pro spuštění následujícího příkazu odstraňte objekt hlavní služby. Zástupný symbol APPLICATION_ID nahraďte ID aplikace, které jste zkopírovali v předchozím cvičení:

    az ad sp delete --id APPLICATION_ID
    
  1. Odhlaste se z účtu služebního principálu pomocí následujícího příkazu:

    Logout-AzAccount
    
  2. Přihlaste se zpět do Azure pomocí vlastního uživatelského účtu spuštěním následujícího příkazu:

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

  4. Spuštěním následujícího příkazu Azure PowerShellu odstraňte skupinu prostředků, její obsah a přiřazení role:

    Remove-AzResourceGroup -Name ToyWebsite
    

    Po zobrazení výzvy k potvrzení zadejte y.

  5. Spuštěním následujícího příkazu odstraňte instanční objekt. Zástupný symbol APPLICATION_ID nahraďte ID aplikace, které jste zkopírovali v předchozím cvičení:

    Remove-AzADServicePrincipal -ApplicationId APPLICATION_ID
    

    Po zobrazení výzvy k potvrzení zadejte y.