Упражнение. Создание удостоверения рабочей нагрузки
Прежде чем можно будет развернуть веб-сайт компании по продаже игрушек с помощью рабочего процесса, необходимо включить проверку подлинности в Azure для этого рабочего процесса. В этом упражнении вы выполните следующие действия.
- Создайте группу ресурсов для веб-сайта.
- Создайте Идентификация рабочей нагрузки Microsoft Entra и предоставьте ему доступ к группе ресурсов.
- Создайте секреты GitHub, которые потребуются рабочему процессу для использования удостоверения рабочей нагрузки.
В этом упражнении требуется разрешение на создание приложений в каталоге Microsoft Entra. Если вы не можете получить это разрешение для своей текущей учетной записи Azure, то можно использовать бесплатную пробную версию и создать новую подписку Azure и клиента.
Внимание
Последнее упражнение в этом модуле содержит важные действия по очистке. Следуйте инструкциям по очистке, даже если этот модуль не завершен.
Вход в Azure
Для работы с удостоверениями рабочей нагрузки в Azure войдите в свою учетную запись Azure из терминала Visual Studio Code. Убедитесь, что средства Azure CLI установлены.
В меню Терминал выберите Новый терминал. Окно терминала обычно открывается в нижней половине экрана.
Оболочка по умолчанию обычно pwsh, как показано в правой части окна терминала.
Выберите раскрывающийся список "Профиль запуска" и выберите Azure Cloud Shell (Bash).
Откроется новая оболочка.
Вход в Azure с помощью Azure CLI
В терминале Visual Studio Code выполните указанную ниже команду, чтобы войти в Azure.
az login
В открывшемся браузере войдите в свою учетную запись Azure.
Чтобы развернуть этот шаблон в Azure, войдите в свою учетную запись Azure из терминала Visual Studio Code. Убедитесь, что вы установили Azure PowerShell, и войдите в ту же учетную запись, с которой была активирована песочница.
В меню Терминал выберите Новый терминал. Окно терминала обычно открывается в нижней половине экрана.
Оболочка по умолчанию обычно pwsh, как показано в правой части окна терминала.
Выберите раскрывающийся список "Профиль запуска", а затем выберите Azure Cloud Shell (PowerShell).
Откроется новая оболочка.
Вход в Azure с помощью Azure PowerShell
В терминале Visual Studio Code выполните указанную ниже команду, чтобы войти в Azure.
Connect-AzAccount
В открывшемся браузере войдите в свою учетную запись Azure.
Создание удостоверения рабочей нагрузки
Совет
В этом модуле вы создадите удостоверение рабочей нагрузки, которое будет использовать ваш рабочий процесс. Модуль Проверка подлинности рабочего процесса развертывания Azure с помощью удостоверений рабочей нагрузки предоставляет более подробное описание удостоверений рабочей нагрузки, включая особенности их работы, процессы создания, назначения ролей и управления удостоверениями.
Чтобы создать удостоверение рабочей нагрузки, команды Azure CLI используются jq
для анализа данных из выходных данных JSON. Если вы еще не jq
установили, можно использовать Bash в Azure Cloud Shell для создания удостоверения рабочей нагрузки, группы ресурсов и назначения ролей и подготовки секретов GitHub.
Выполните следующий код, чтобы определить переменные для имени пользователя GitHub и имени репозитория. Не забудьте заменить
mygithubuser
именем пользователя GitHub, которое вы записали ранее в предыдущем упражнении.githubOrganizationName='mygithubuser' githubRepositoryName='toy-website-workflow'
Выполните следующий код, который создает удостоверение рабочей нагрузки и связывает его с репозиторием 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\"]}"
Выполните следующий код, чтобы определить переменные для имени пользователя GitHub и имени репозитория. Не забудьте заменить
mygithubuser
именем пользователя GitHub, которое вы записали ранее в предыдущем упражнении.$githubOrganizationName = 'mygithubuser' $githubRepositoryName = 'toy-website-workflow'
Выполните следующий код, который создает удостоверение рабочей нагрузки и связывает его с репозиторием 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"
Создание группы ресурсов в Azure и предоставление доступа к удостоверению рабочей нагрузки
Чтобы создать группу ресурсов и предоставить удостоверению рабочей нагрузки доступ к этой группе, выполните следующую команду Azure CLI в терминале 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
Чтобы создать группу ресурсов и предоставить удостоверению рабочей нагрузки доступ к этой группе, выполните следующую команду Azure PowerShell в терминале 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
Подготовка секретов GitHub
Выполните следующий код, чтобы отобразить значения, которые необходимо создать в виде секретов GitHub:
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)"
Создавайте секреты GitHub
Итак, вы создали группу ресурсов и удостоверение рабочей нагрузки. Затем создайте секреты в GitHub Actions, чтобы рабочий процесс мог использовать удостоверение рабочей нагрузки для входа.
В браузере перейдите к своему репозиторию GitHub.
Выберите "Параметры секретов>" и "Действия переменных".>
Нажмите Создать секрет репозитория.
Присвойте секрету имя AZURE_CLIENT_ID.
В поле Значение вставьте GUID из первой строки выходных данных терминала. Не включайте в значение
AZURE_CLIENT_ID
, двоеточие или пробелы.Выберите Добавить секрет.
Повторите процесс, чтобы создать секреты для AZURE_TENANT_ID и AZURE_SUBSCRIPTION_ID, копируя значения из соответствующих полей в выходных данных терминала.
Убедитесь, что в списке секретов теперь отображаются все три секрета.