Ćwiczenie — autoryzowanie jednostki usługi na potrzeby wdrożeń

Ukończone

W poprzednim ćwiczeniu utworzono jednostkę usługi dla potoku wdrażania witryny internetowej i przetestowano, że można się zalogować przy użyciu jego klucza. Teraz możesz udzielić jednostce usługi dostępu do środowiska platformy Azure. W tym ćwiczeniu utworzysz przypisanie roli dla jednostki usługi, a następnie wdrożysz plik Bicep przy użyciu jednostki usługi.

Podczas tego procesu wykonasz następujące czynności:

  • Zaloguj się na swoje konto użytkownika.
  • Utwórz grupę zasobów dla firmowej witryny internetowej.
  • Utwórz przypisanie roli, aby umożliwić jednostce usługi wdrażanie zasobów w grupie zasobów.
  • Zaloguj się jako główna usługa i wdróż plik Bicep, który tworzy zasoby witryny internetowej Twojej firmy.
  • Zweryfikuj wdrożenie.
  • Wyczyść grupę zasobów i jednostkę usługi.

Zaloguj się na swoje konto użytkownika

W poprzednim ćwiczeniu zalogowałeś się, używając zasady usługi, a następnie wylogowałeś się. Musisz ponownie zalogować się na swoje konto użytkownika, aby móc wykonać kolejne kroki opisane w tym ćwiczeniu.

  1. W terminalu usługi Azure Cloud Shell (bash) programu Visual Studio Code zaloguj się na platformie Azure, uruchamiając następujące polecenie:

    az login
    
  2. W przeglądarce, która zostanie otwarta, zaloguj się do konta platformy Azure.

  1. W terminalu usługi Azure Cloud Shell (PowerShell) programu Visual Studio Code zaloguj się do platformy Azure, uruchamiając następujące polecenie:

    Connect-AzAccount
    
  2. W przeglądarce, która zostanie otwarta, zaloguj się do konta platformy Azure.

Tworzenie grupy zasobów

Teraz utworzysz grupę zasobów, która będzie zawierać zasoby witryny internetowej firmy zabawek.

  1. Uruchom to polecenie interfejsu wiersza polecenia platformy Azure w terminalu programu Visual Studio Code, aby utworzyć grupę zasobów:

    az group create --name ToyWebsite --location eastus
    
  2. Spójrz na dane wyjściowe JSON z poprzedniego polecenia. Zawiera właściwość o nazwie id, która jest identyfikatorem grupy zasobów. Skopiuj to gdzieś bezpiecznie. Wkrótce go użyjesz.

  1. Uruchom to polecenie programu Azure PowerShell w terminalu programu Visual Studio Code, aby utworzyć grupę zasobów:

    New-AzResourceGroup -Name ToyWebsite -Location eastus
    
  2. Przyjrzyj się danych wyjściowych z poprzedniego polecenia. Zawiera właściwość o nazwie ResourceId, która jest identyfikatorem grupy zasobów. Skopiuj to gdzieś bezpiecznie. Wkrótce go użyjesz.

Utwórz przypisanie roli

W przypadku pipeline'u wdrożeniowego strony internetowej decydujesz się utworzyć przypisanie roli z następującymi szczegółami:

  • Assignee: jednostka usługi utworzona w poprzednim ćwiczeniu.
  • rola: wbudowana rola Współtwórca.
  • zakres: grupa zasobów utworzona w poprzednim kroku.

Uruchom następujące polecenie Azure CLI w terminalu Visual Studio Code, aby utworzyć przypisanie roli. Zastąp symbole zastępcze wartościami skopiowanymi wcześniej.

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

Uruchom następujące polecenie Azure CLI w terminalu Visual Studio Code, aby utworzyć przypisanie roli. Zastąp symbole zastępcze wartościami skopiowanymi wcześniej.

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

Tworzenie pliku Bicep

Wcześniej utworzono plik Bicep, który wdraża zasoby witryny internetowej. W tym miejscu zapiszesz ten plik, aby można go było przetestować przy użyciu jednostki usługi.

  1. Utwórz nowy plik o nazwie main.bicep.

  2. Dodaj następującą zawartość do pliku main.bicep. Wkrótce wdrożysz szablon.

    @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. Zapisz zmiany w pliku. Możesz wybrać plik>Zapisz jako lub wybrać Ctrl+S w systemie Windows (⌘+S w systemie macOS). Pamiętaj, gdzie został zapisany plik. Na przykład możesz utworzyć folder skrypty, aby w nim zapisać.

Wdróż plik Bicep przy użyciu zasady usługi

Obecnie nie masz wdrożeniowej ścieżki potoku, więc zasymulujesz, jak potok działa, aby wdrożyć plik Bicep.

  1. Uruchom następujące polecenie interfejsu wiersza polecenia platformy Azure w terminalu programu Visual Studio Code, aby zalogować się przy użyciu poświadczeń jednostki usługi. Zastąp symbole zastępcze wartościami skopiowanymi w poprzednim ćwiczeniu.

    az login --service-principal \
      --username APPLICATION_ID \
      --password SERVICE_PRINCIPAL_KEY \
      --tenant TENANT_ID
    
  2. Wdróż plik Bicep, uruchamiając następujące polecenie Azure CLI:

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

    Wdrożenie może potrwać minutę lub dwie, a następnie zobaczysz pomyślne wdrożenie.

  1. Uruchom następujące polecenie Azure PowerShell w terminalu Visual Studio Code, aby bezpiecznie poprosić o podanie poświadczeń jednostki usługi. Użyj identyfikatora aplikacji i klucza jednostki usługi z poprzedniego ćwiczenia, odpowiednio dla nazwy użytkownika i hasła.

    $credential = Get-Credential
    
  2. Uruchom następujące polecenie programu Azure PowerShell w terminalu programu Visual Studio Code, aby zalogować się przy użyciu poświadczeń jednostki usługi. Zastąp symbol zastępczy TENANT_ID wartością skopiowaną wcześniej.

    Connect-AzAccount -ServicePrincipal `
      -Credential $credential `
      -Tenant TENANT_ID
    
  3. Wdróż plik Bicep, uruchamiając następujące polecenie programu Azure PowerShell:

    New-AzResourceGroupDeployment -ResourceGroupName ToyWebsite -TemplateFile main.bicep
    

    Wdrożenie może potrwać minutę lub dwie, a następnie zobaczysz pomyślne wdrożenie.

Weryfikowanie wdrożenia

Użyj witryny Azure Portal, aby sprawdzić wdrożone zasoby i sprawdzić wyniki wdrożenia.

  1. Przejdź do witryny Azure Portal.

  2. W okienku po lewej stronie wybierz pozycję Grupy zasobów.

  3. Wybierz ToyWebsite.

  4. Wybierz pozycję Wdrożenia, aby wyświetlić udane wdrożenie.

    Zrzut ekranu przedstawiający okienko Wdrożenia grupy zasobów w portalu Azure, pokazujące pomyślne zakończenie wdrożenia.

    Możesz także zobaczyć wdrożenie o nazwie Failure-Anomalies-Alert-Rule-Deployment. Usługa Application Insights automatycznie tworzy to wdrożenie.

  5. Wybierz główne wdrożenie , aby zobaczyć, jakie zasoby zostały wdrożone, a następnie rozwiń Szczegóły wdrożenia.

    W tym przypadku zostanie wyświetlony plan usługi App Service, aplikacja i wystąpienie usługi Application Insights.

    Zrzut ekranu przedstawiający okienko przeglądu wdrożeń w Portalu Azure dla głównego wdrożenia, z planem usługi App Service, aplikacją oraz wystąpieniem usługi Application Insights.

    Zwróć uwagę, że nie ma nic niezwykłego w tym wdrożeniu. Nawet jeśli została zainicjowana przez jednostkę usługi, jest dokładnie taka sama jak każde inne wdrożenie Bicep.

Usuń grupę zasobów i podmiot usługi

Pomyślnie utworzono obiekt główny usługi i przypisanie roli, a zasoby twojej witryny internetowej zostały wdrożone przy użyciu pliku Bicep. Teraz możesz usunąć utworzone zasoby.

  1. Wyloguj się z konta głównego użytkownika usługi przy użyciu następującego polecenia:

    az logout
    
  2. Zaloguj się ponownie na platformie Azure przy użyciu własnego konta użytkownika, uruchamiając następujące polecenie:

    az login
    
  3. W przeglądarce, która zostanie otwarta, zaloguj się do konta platformy Azure.

  4. Uruchom następujące polecenie interfejsu wiersza polecenia platformy Azure, aby usunąć grupę zasobów, jej zawartość i przypisanie roli:

    az group delete --name ToyWebsite
    

    Po wyświetleniu monitu o potwierdzenie wprowadź y.

  5. Uruchom następujące polecenie, aby usunąć service principal. Zastąp zastępnik APPLICATION_ID identyfikatorem aplikacji skopiowanym w poprzednim ćwiczeniu.

    az ad sp delete --id APPLICATION_ID
    
  1. Wyloguj się z konta głównego serwisu przy użyciu następującego polecenia:

    Logout-AzAccount
    
  2. Zaloguj się ponownie na platformie Azure przy użyciu własnego konta użytkownika, uruchamiając następujące polecenie:

    Connect-AzAccount
    
  3. W przeglądarce, która zostanie otwarta, zaloguj się do konta platformy Azure.

  4. Uruchom następujące polecenie programu Azure PowerShell, aby usunąć grupę zasobów, jej zawartość i przypisanie roli:

    Remove-AzResourceGroup -Name ToyWebsite
    

    Po wyświetleniu monitu o potwierdzenie wprowadź y.

  5. Uruchom następujące polecenie, aby usunąć główną usługę. Zastąp symbol zastępczy APPLICATION_ID identyfikatorem aplikacji skopiowanym w poprzednim ćwiczeniu.

    Remove-AzADServicePrincipal -ApplicationId APPLICATION_ID
    

    Po wyświetleniu monitu o potwierdzenie wprowadź y.