Exercício – Criar uma identidade de carga de trabalho
Antes de implantar o site da empresa de brinquedos usando um fluxo de trabalho, você precisará habilitar seu fluxo de trabalho para autenticar no Azure. Neste exercício, você vai:
- Crie um grupo de recursos para o site da Web.
- Crie uma Carga de Trabalho do Microsoft Entra ID e conceda-lhe acesso ao grupo de recursos.
- Crie segredos do GitHub para preparar seu fluxo de trabalho para usar a identidade da carga de trabalho.
Este exercício exige permissão para criar aplicativos em seu diretório do Microsoft Entra. Se você não puder atender a esse requisito com sua conta atual do Azure, obtenha uma avaliação gratuita e crie uma assinatura e um locatário do Azure.
Importante
O exercício final deste módulo contém etapas de limpeza importantes. Siga as etapas de limpeza mesmo que não conclua este módulo.
Entrar no Azure
Para trabalhar com identidades de carga de trabalho no Azure, entre na sua conta do Azure usando o terminal do Visual Studio Code. Verifique se você instalou as ferramentas da CLI do Azure.
No menu Terminal, selecione Novo Terminal. A janela do terminal geralmente é aberta na metade inferior da tela.
O shell padrão normalmente é pwsh, conforme mostrado no lado direito da janela do terminal.
Selecione a lista suspensa Perfil de Inicialização e, em seguida, selecione Azure Cloud Shell (Bash).
Um novo shell é aberto.
Entrar no Azure usando a CLI do Azure
No terminal no Visual Studio Code, execute o seguinte comando para entrar no Azure:
az login
No navegador que é aberto, entre em sua conta do Azure.
Para implantar esse modelo no Azure, entre na sua conta do Azure por meio do terminal do Visual Studio Code. Verifique se você instalou o Azure PowerShell e entre na mesma conta que você usou para ativar a área restrita.
No menu Terminal, selecione Novo Terminal. A janela do terminal geralmente é aberta na metade inferior da tela.
O shell padrão normalmente é pwsh, conforme mostrado no lado direito da janela do terminal.
Selecione a lista suspensa Perfil de Inicialização e, em seguida, selecione Azure Cloud Shell (PowerShell).
Um novo shell é aberto.
Entrar no Azure usando o Azure PowerShell
No terminal no Visual Studio Code, execute o seguinte comando para entrar no Azure:
Connect-AzAccount
No navegador que é aberto, entre em sua conta do Azure.
Criar uma identidade de carga de trabalho
Dica
Neste módulo, você criará uma identidade de carga de trabalho para seu fluxo de trabalho usar. O módulo Autenticar o fluxo de trabalho de implantação do Azure usando as identidades de carga de trabalho fornece uma explicação mais detalhada das identidades de carga de trabalho, incluindo como elas funcionam e como fazer para criá-las, atribuir funções a elas e gerenciá-las.
Para criar a identidade da carga de trabalho, os comandos da CLI do Azure usam jq
para analisar dados da saída JSON. Se você não tiver jq
instalado, poderá usar o Bash no Azure Cloud Shell para criar a identidade da carga de trabalho, o grupo de recursos e a atribuição de função e para preparar os segredos do GitHub.
Execute o código a seguir para definir as variáveis do nome de usuário e do nome do repositório do GitHub. Substitua
mygithubuser
pelo nome de usuário do GitHub, que você anotou na unidade de exercício anteriormente.githubOrganizationName='mygithubuser' githubRepositoryName='toy-website-workflow'
Execute o seguinte código, que cria uma identidade de carga de trabalho e a associa ao repositório do 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\"]}"
Execute o código a seguir para definir as variáveis do nome de usuário e do nome do repositório do GitHub. Substitua
mygithubuser
pelo nome de usuário do GitHub, que você anotou na unidade de exercício anteriormente.$githubOrganizationName = 'mygithubuser' $githubRepositoryName = 'toy-website-workflow'
Execute o seguinte código, que cria uma identidade de carga de trabalho e a associa ao repositório do 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"
Criar um grupo de recursos no Azure e conceder acesso à identidade da carga de trabalho
Para criar um novo grupo de recursos e conceder acesso à identidade de carga de trabalho a ele, execute este comando da CLI do Azure no terminal do 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
Para criar um grupo de recursos e conceder acesso à identidade de carga de trabalho a ele, execute este comando do Azure PowerShell no terminal do 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
Preparar segredos do GitHub
Execute o seguinte código para mostrar os valores que você precisa criar como segredos do 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)"
Criar segredos do GitHub
Você criou um grupo de recursos e uma identidade de carga de trabalho. Em seguida, crie alguns segredos no GitHub Actions para que seu fluxo de trabalho possa entrar usando a identidade da carga de trabalho.
No navegador, navegue até o repositório do GitHub.
Selecione Configurações>Segredos e variáveis>Ações.
Selecione Novo segredo de repositório.
Nomeie o segredo como AZURE_CLIENT_ID.
No campo Valor, cole o GUID da primeira linha da saída do terminal. Não inclua
AZURE_CLIENT_ID
, dois-pontos ou espaços no valor.Selecione Adicionar segredo.
Repita o processo para criar os segredos para AZURE_TENANT_ID e AZURE_SUBSCRIPTION_ID, copiando os valores dos campos correspondentes na saída do terminal.
Verifique se a lista de segredos agora mostra os três segredos.