Exercício - Criar uma identidade de carga de trabalho
Antes de implantar o site da sua empresa de brinquedos usando um fluxo de trabalho, você precisa habilitar seu fluxo de trabalho para se autenticar no Azure. Neste exercício, irá:
- Crie um grupo de recursos para seu site.
- Crie uma ID de carga de trabalho do Microsoft Entra 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 requer que você tenha permissões para criar aplicativos no diretório do Microsoft Entra. Se não conseguir cumprir este requisito com a sua conta atual do Azure, pode obter uma avaliação gratuita e criar uma nova subscrição e inquilino do Azure.
Importante
O exercício final deste módulo contém etapas de limpeza importantes. Certifique-se de seguir as etapas de limpeza, mesmo que não conclua este módulo.
Iniciar sessão no Azure
Para trabalhar com identidades de carga de trabalho no Azure, inicie sessão na sua conta do Azure a partir do terminal do Visual Studio Code. Certifique-se de ter instalado as ferramentas da CLI do Azure.
No menu Terminal, selecione Novo Terminal. A janela do terminal geralmente abre na metade inferior da tela.
O shell padrão é normalmente pwsh, como mostrado no lado direito da janela do terminal.
Selecione a lista suspensa Iniciar perfil e, em seguida, selecione Azure Cloud Shell (Bash).
Um novo shell se abre.
Entrar no Azure usando a CLI do Azure
No terminal do Visual Studio Code, execute o seguinte comando para entrar no Azure:
az login
No browser que se abre, inicie sessão na sua conta do Azure.
Para implantar esse modelo no Azure, entre em sua conta do Azure a partir do terminal do Visual Studio Code. Certifique-se de que instalou o Azure PowerShell e inicie sessão na mesma conta que utilizou para ativar a sandbox.
No menu Terminal, selecione Novo Terminal. A janela do terminal geralmente abre na metade inferior da tela.
O shell padrão é normalmente pwsh, como mostrado no lado direito da janela do terminal.
Selecione a lista suspensa Iniciar perfil e, em seguida, selecione Azure Cloud Shell (PowerShell).
Um novo shell se abre.
Iniciar sessão no Azure com o Azure PowerShell
No terminal do Visual Studio Code, execute o seguinte comando para entrar no Azure:
Connect-AzAccount
No browser que se abre, inicie sessão na sua conta do Azure.
Criar uma identidade de carga de trabalho
Gorjeta
Neste módulo, você criará uma identidade de carga de trabalho para seu fluxo de trabalho usar. O módulo Autenticar seu fluxo de trabalho de implantação do Azure usando identidades de carga de trabalho fornece uma explicação mais detalhada das identidades de carga de trabalho, incluindo como elas funcionam, bem como como você as cria, atribui funções e as gerencia.
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 preparar os segredos do GitHub.
Execute o código a seguir para definir variáveis para seu nome de usuário do GitHub e seu nome de repositório. Certifique-se de substituir
mygithubuser
pelo seu nome de usuário do GitHub, que você anotou na unidade de exercício anterior.githubOrganizationName='mygithubuser' githubRepositoryName='toy-website-workflow'
Execute o código a seguir, que cria uma identidade de carga de trabalho e a associa ao repositório 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 variáveis para seu nome de usuário do GitHub e seu nome de repositório. Certifique-se de substituir
mygithubuser
pelo seu nome de usuário do GitHub, que você anotou na unidade de exercício anterior.$githubOrganizationName = 'mygithubuser' $githubRepositoryName = 'toy-website-workflow'
Execute o código a seguir, que cria uma identidade de carga de trabalho e a associa ao repositório 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 da 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 da sua 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 código a seguir 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 nas Ações do GitHub para que seu fluxo de trabalho possa entrar usando a identidade da carga de trabalho.
No navegador, navegue até o repositório GitHub.
Selecione Configurações>Segredos e variáveis>Ações.
Selecione Novo segredo do repositório.
Nomeie o segredo AZURE_CLIENT_ID.
No campo Valor, cole o GUID da primeira linha da saída do terminal. Não inclua
AZURE_CLIENT_ID
, os dois pontos ou quaisquer espaços no valor.Selecione Add secret (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 sua lista de segredos agora mostra os três segredos.