Упражнение: создание субъекта-службы и ключа
Внимание
Для выполнения этого упражнения вам нужна собственная подписка Azure. При этом с вас может взиматься плата. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.
Прежде чем создать конвейер развертывания для веб-сайта вашей компании, необходимо создать субъект-службу и предоставить ему доступ к вашей среде Azure. В этом упражнении вы создадите субъект-службу, который будете использовать для конвейера развертывания.
В процессе вы:
- Создайте приложение, субъект-службу и ключ с помощью одной операции.
- Безопасно обработайте ключ.
- Убедитесь, что субъект-служба работает, войдя в Azure с его учетными данными.
В этом упражнении требуется разрешение на создание приложений и субъектов-служб в каталоге Microsoft Entra. Если вы не можете получить это разрешение для своей текущей учетной записи Azure, то можно использовать бесплатную пробную версию и создать новую подписку Azure и клиента. Кроме того, вы можете пропустить это упражнение.
Вход в Azure
Чтобы работать с субъектами-службами в Azure, необходимо войти в свою учетную запись Azure из терминала Visual Studio Code.
В меню Терминал выберите Новый терминал. Окно терминала обычно открывается в нижней половине экрана.
Оболочка по умолчанию обычно pwsh, как показано в правой части окна терминала.
Выберите раскрывающийся список "Профиль запуска" и выберите Azure Cloud Shell (Bash).
Откроется новая оболочка.
Вход в Azure с помощью Azure CLI
В окне терминала Visual Studio Code войдите в Azure, выполнив следующую команду:
az login
В открывшемся браузере войдите в свою учетную запись Azure.
Чтобы развернуть этот шаблон в Azure, войдите в свою учетную запись Azure из терминала Visual Studio Code.
В меню Терминал выберите Новый терминал. Окно терминала обычно открывается в нижней половине экрана.
Оболочка по умолчанию обычно pwsh, как показано в правой части окна терминала.
Выберите раскрывающийся список "Профиль запуска", а затем выберите Azure Cloud Shell (PowerShell).
Откроется новая оболочка.
Вход в Azure с помощью Azure PowerShell
В окне терминала Visual Studio Code войдите в Azure, выполнив следующую команду:
Connect-AzAccount
В открывшемся браузере войдите в свою учетную запись Azure.
Создание субъекта-службы и ключа
Чтобы создать субъект-службу, выполните эту команду Azure CLI в терминале Visual Studio Code:
az ad sp create-for-rbac --name ToyWebsitePipeline
Если в Azure CLI отображается сообщение об ошибке о том, что другое приложение имеет то же отображаемое имя, это означает, что другой пользователь, использующий клиент Microsoft Entra, создал субъект-службу с тем же именем. Измените значение параметра
--name
так, чтобы оно стало уникальным. Это никак не повлияет на выполнение остальных упражнений.Просмотрите выходные данные JSON предыдущей команды. Они включают следующие свойства:
-
appId
— идентификатор приложения субъекта-службы; -
password
— ключ субъекта-службы; -
tenant
: идентификатор клиента Microsoft Entra.
Скопируйте эти значения в безопасное место. Они понадобятся чуть позже.
-
Чтобы создать субъект-службу, выполните эти команды Azure PowerShell в терминале Visual Studio Code:
$servicePrincipal = New-AzADServicePrincipal ` -DisplayName ToyWebsitePipeline
Выполните следующую команду, чтобы получить ключ субъекта-службы:
$servicePrincipalKey = $servicePrincipal.PasswordCredentials.SecretText
Выполните следующую команду, чтобы отобразить идентификатор приложения субъекта-службы, ключ и идентификатор клиента 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)"
Скопируйте эти значения в безопасное место. Они понадобятся чуть позже.
Предупреждение
Выходные данные предыдущих команд содержат ключ вашего субъекта-службы. Будьте внимательны при выполнении этих команд. Например, не запускайте их в среде, где кто-то может их просматривать.
Проверка субъекта-службы
Теперь, когда субъект-служба был создан, вы можете войти с помощью учетных данных, чтобы убедиться, что он был создан успешно.
Чтобы войти с учетными данными субъекта-службы, выполните эту команду 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 списка подписок и отображение ошибки.Убедитесь, что выходные данные предыдущей команды являются объектом JSON, который включает свойство
user
с идентификатором приложения субъекта-службы. Если это так, значит субъект-служба успешно выполнил вход.Выйдите из учетной записи субъекта-службы с помощью следующей команды:
az logout
Чтобы безопасно запросить учетные данные вашего субъекта-службы, выполните эту команду Azure PowerShell в терминале Visual Studio Code. Используйте идентификатор приложения и ключ субъекта-службы из предыдущего шага в качестве имени пользователя и пароля соответственно.
$credential = Get-Credential
Чтобы войти с учетными данными субъекта-службы, выполните эту команду Azure PowerShell в терминале Visual Studio Code.
Connect-AzAccount -ServicePrincipal ` -Credential $credential ` -Tenant TENANT_ID
Убедитесь, что выходные данные предыдущей команды включают свойство
Account
с идентификатором приложения субъекта-службы и пустое значениеSubscriptionName
. Если это так, значит субъект-служба успешно выполнил вход.Выйдите из учетной записи субъекта-службы с помощью следующей команды:
Logout-AzAccount
Теперь, когда у вас есть рабочий субъект-служба, можно переходить к следующему этапу: его авторизация для доступа к среде Azure.