Упражнение: создание субъекта-службы и ключа

Завершено

Внимание

Для выполнения этого упражнения вам нужна собственная подписка Azure. При этом с вас может взиматься плата. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.

Прежде чем создать конвейер развертывания для веб-сайта вашей компании, необходимо создать субъект-службу и предоставить ему доступ к вашей среде Azure. В этом упражнении вы создадите субъект-службу, который будете использовать для конвейера развертывания.

В процессе вы:

  • Создайте приложение, субъект-службу и ключ с помощью одной операции.
  • Безопасно обработайте ключ.
  • Убедитесь, что субъект-служба работает, войдя в Azure с его учетными данными.

В этом упражнении требуется разрешение на создание приложений и субъектов-служб в каталоге Microsoft Entra. Если вы не можете получить это разрешение для своей текущей учетной записи Azure, то можно использовать бесплатную пробную версию и создать новую подписку Azure и клиента. Кроме того, вы можете пропустить это упражнение.

Вход в Azure

Чтобы работать с субъектами-службами в Azure, необходимо войти в свою учетную запись Azure из терминала Visual Studio Code.

  1. В меню Терминал выберите Новый терминал. Окно терминала обычно открывается в нижней половине экрана.

    Оболочка по умолчанию обычно pwsh, как показано в правой части окна терминала.

    Снимок экрана: окно терминала Visual Studio Code, в котором pwsh отображается как параметр оболочки.

  2. Выберите раскрывающийся список "Профиль запуска" и выберите Azure Cloud Shell (Bash).

    Снимок экрана: окно терминала Visual Studio Code. Отображается раскрывающийся список оболочки терминала и пункт меню Azure Cloud Shell (Bash).

    Откроется новая оболочка.

Вход в Azure с помощью Azure CLI

  1. В окне терминала Visual Studio Code войдите в Azure, выполнив следующую команду:

    az login
    
  2. В открывшемся браузере войдите в свою учетную запись Azure.

Чтобы развернуть этот шаблон в Azure, войдите в свою учетную запись Azure из терминала Visual Studio Code.

  1. В меню Терминал выберите Новый терминал. Окно терминала обычно открывается в нижней половине экрана.

    Оболочка по умолчанию обычно pwsh, как показано в правой части окна терминала.

    Снимок экрана: окно терминала Visual Studio Code, в котором pwsh отображается как параметр оболочки.

  2. Выберите раскрывающийся список "Профиль запуска", а затем выберите Azure Cloud Shell (PowerShell).

    Снимок экрана: окно терминала Visual Studio Code. Отображается раскрывающийся список оболочки терминала и пункт меню Azure Cloud Shell (PowerShell).

    Откроется новая оболочка.

Вход в Azure с помощью Azure PowerShell

  1. В окне терминала Visual Studio Code войдите в Azure, выполнив следующую команду:

    Connect-AzAccount
    
  2. В открывшемся браузере войдите в свою учетную запись Azure.

Создание субъекта-службы и ключа

  1. Чтобы создать субъект-службу, выполните эту команду Azure CLI в терминале Visual Studio Code:

    az ad sp create-for-rbac --name ToyWebsitePipeline
    

    Если в Azure CLI отображается сообщение об ошибке о том, что другое приложение имеет то же отображаемое имя, это означает, что другой пользователь, использующий клиент Microsoft Entra, создал субъект-службу с тем же именем. Измените значение параметра --name так, чтобы оно стало уникальным. Это никак не повлияет на выполнение остальных упражнений.

  2. Просмотрите выходные данные JSON предыдущей команды. Они включают следующие свойства:

    • appId — идентификатор приложения субъекта-службы;
    • password — ключ субъекта-службы;
    • tenant: идентификатор клиента Microsoft Entra.

    Скопируйте эти значения в безопасное место. Они понадобятся чуть позже.

  1. Чтобы создать субъект-службу, выполните эти команды Azure PowerShell в терминале Visual Studio Code:

    $servicePrincipal = New-AzADServicePrincipal `
      -DisplayName ToyWebsitePipeline
    
  2. Выполните следующую команду, чтобы получить ключ субъекта-службы:

    $servicePrincipalKey = $servicePrincipal.PasswordCredentials.SecretText
    
  3. Выполните следующую команду, чтобы отобразить идентификатор приложения субъекта-службы, ключ и идентификатор клиента Microsoft Entra:

    Write-Output "Service principal application ID: $($servicePrincipal.AppId)"
    Write-Output "Service principal key: $servicePrincipalKey"
    Write-Output "Your Azure AD tenant ID: $((Get-AzContext).Tenant.Id)"
    

    Скопируйте эти значения в безопасное место. Они понадобятся чуть позже.

Предупреждение

Выходные данные предыдущих команд содержат ключ вашего субъекта-службы. Будьте внимательны при выполнении этих команд. Например, не запускайте их в среде, где кто-то может их просматривать.

Проверка субъекта-службы

Теперь, когда субъект-служба был создан, вы можете войти с помощью учетных данных, чтобы убедиться, что он был создан успешно.

  1. Чтобы войти с учетными данными субъекта-службы, выполните эту команду Azure CLI в терминале Visual Studio Code. На место заполнителей поставьте значения, скопированные в предыдущем шаге.

    az login --service-principal \
      --username APPLICATION_ID \
      --password PASSWORD \
      --tenant TENANT_ID \
      --allow-no-subscriptions
    

    Обратите внимание на аргумент --allow-no-subscriptions. Обычно при выполнении команды az login Azure CLI ищет подписки Azure, к которым вы можете получить доступ. У этого субъекта-службы еще нет никакого доступа, и аргумент --allow-no-subscriptions предотвращает проверку Azure CLI списка подписок и отображение ошибки.

  2. Убедитесь, что выходные данные предыдущей команды являются объектом JSON, который включает свойство user с идентификатором приложения субъекта-службы. Если это так, значит субъект-служба успешно выполнил вход.

  3. Выйдите из учетной записи субъекта-службы с помощью следующей команды:

    az logout
    
  1. Чтобы безопасно запросить учетные данные вашего субъекта-службы, выполните эту команду Azure PowerShell в терминале Visual Studio Code. Используйте идентификатор приложения и ключ субъекта-службы из предыдущего шага в качестве имени пользователя и пароля соответственно.

    $credential = Get-Credential
    
  2. Чтобы войти с учетными данными субъекта-службы, выполните эту команду Azure PowerShell в терминале Visual Studio Code.

    Connect-AzAccount -ServicePrincipal `
      -Credential $credential `
      -Tenant TENANT_ID
    
  3. Убедитесь, что выходные данные предыдущей команды включают свойство Account с идентификатором приложения субъекта-службы и пустое значение SubscriptionName. Если это так, значит субъект-служба успешно выполнил вход.

  4. Выйдите из учетной записи субъекта-службы с помощью следующей команды:

    Logout-AzAccount
    

Теперь, когда у вас есть рабочий субъект-служба, можно переходить к следующему этапу: его авторизация для доступа к среде Azure.