Ejercicio: Creación de una identidad de carga de trabajo

Completado

Para poder implementar el sitio web de la empresa de juguetes mediante un flujo de trabajo, debe habilitar el flujo de trabajo para que se autentique en Azure. En este ejercicio, aprenderá a:

  • Cree un grupo de recursos para el sitio web.
  • Cree un id. de carga de trabajo de Microsoft Entra y concédale acceso al grupo de recursos.
  • Cree secretos de GitHub para preparar el flujo de trabajo para usar la identidad de carga de trabajo.

Este ejercicio requiere que tenga permiso para crear aplicaciones en el directorio de Microsoft Entra. Si no puede cumplir este requisito con la cuenta de Azure actual, puede obtener una evaluación gratuita y crear una suscripción y un inquilino de Azure.

Importante

El último ejercicio de este módulo contiene pasos de limpieza importantes. Asegúrese de realizar los pasos de limpieza, aunque no haya completado este módulo.

Inicio de sesión en Azure

Para trabajar con identidades de carga de trabajo en Azure, inicie sesión en la cuenta de Azure desde el terminal de Visual Studio Code. Asegúrese de que ha instalado las herramientas de la CLI de Azure.

  1. En el menú Terminal, seleccione Nuevo terminal. Normalmente, la ventana de terminal se abre en la mitad inferior de la pantalla.

    El shell predeterminado suele ser pwsh, como se muestra en el lado derecho de la ventana del terminal.

    Recorte de pantalla de la ventana del terminal de Visual Studio Code, en la que pwsh se muestra como la opción del shell.

  2. Seleccione la lista desplegable Iniciar perfil y, después, Azure Cloud Shell (Bash).

    Recorte de pantalla de la ventana del terminal de Visual Studio Code. Se muestran la lista desplegable del shell del terminal y la opción de menú Azure Cloud Shell (Bash).

    Se abre un nuevo shell.

Inicio de sesión en Azure mediante la CLI de Azure

  1. En el terminal de Visual Studio Code, ejecute el siguiente comando para iniciar sesión en Azure:

    az login
    
  2. En el explorador que se abre, inicie sesión en su cuenta de Azure.

Para implementar esta plantilla en Azure, inicie sesión en la cuenta de Azure desde el terminal de Visual Studio Code. Asegúrese de haber instalado Azure PowerShell e inicie sesión en la misma cuenta con la que activó el espacio aislado.

  1. En el menú Terminal, seleccione Nuevo terminal. Normalmente, la ventana de terminal se abre en la mitad inferior de la pantalla.

    El shell predeterminado suele ser pwsh, como se muestra en el lado derecho de la ventana del terminal.

    Recorte de pantalla de la ventana del terminal de Visual Studio Code, en la que pwsh se muestra como la opción del shell.

  2. Seleccione la lista desplegable Perfil de inicio y, después, seleccione Azure Cloud Shell (PowerShell).

    Recorte de pantalla de la ventana del terminal de Visual Studio Code. Se muestran la lista desplegable del shell del terminal y la opción de menú Azure Cloud Shell (PowerShell).

    Se abre un nuevo shell.

Inicio de sesión en Azure mediante Azure PowerShell

  1. En el terminal de Visual Studio Code, ejecute el siguiente comando para iniciar sesión en Azure:

    Connect-AzAccount
    
  2. En el explorador que se abre, inicie sesión en su cuenta de Azure.

Creación de una identidad de carga de trabajo

Sugerencia

En este módulo, creará una entidad de identidad de carga de trabajo para que la use el flujo de trabajo. El módulo Autenticación del flujo de trabajo de implementación de Azure mediante identidades de carga de trabajo proporciona una explicación más detallada de las identidades de carga de trabajo, incluido cómo funcionan, así como cómo crearlas, asignarles roles y administrarlas.

Para crear la identidad de carga de trabajo, los comandos de la CLI de Azure usan jq para analizar los datos de la salida JSON. Si no tiene jq instalado, puede usar Bash en Azure Cloud Shell para crear la identidad de carga de trabajo, el grupo de recursos y la asignación de roles y preparar los secretos de GitHub.

  1. Ejecute el código siguiente para definir variables para el nombre de usuario de GitHub y el nombre del repositorio. Asegúrese de reemplazar mygithubuser por el nombre de usuario de GitHub, que anotó en la unidad del ejercicio anterior.

    githubOrganizationName='mygithubuser'
    githubRepositoryName='toy-website-workflow'
    
  2. Ejecute el código siguiente, que crea una identidad de carga de trabajo y la asocia al repositorio de 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\"]}"
    
  1. Ejecute el código siguiente para definir variables para el nombre de usuario de GitHub y el nombre del repositorio. Asegúrese de reemplazar mygithubuser por el nombre de usuario de GitHub, que anotó en la unidad del ejercicio anterior.

    $githubOrganizationName = 'mygithubuser'
    $githubRepositoryName = 'toy-website-workflow'
    
  2. Ejecute el código siguiente, que crea una identidad de carga de trabajo y la asocia al repositorio de 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"
    

Creación de un grupo de recursos en Azure y concesión del acceso a la identidad de la carga de trabajo

Para crear un nuevo grupo de recursos y concederle acceso a la identidad de carga de trabajo, ejecute este comando de la CLI de Azure en el terminal de 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 crear un grupo de recursos y concederle acceso a la identidad de carga de trabajo, ejecute este comando de Azure PowerShell en el terminal de 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

Preparación de secretos de GitHub

Ejecute el código siguiente para mostrar los valores que necesita crear como secretos de 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)"

Creación de secretos de GitHub

Ha creado un grupo de recursos y una identidad de carga de trabajo. A continuación, cree algunos secretos en Acciones de GitHub para que el flujo de trabajo pueda iniciar sesión mediante la identidad de carga de trabajo.

  1. En el explorador, vaya al repositorio de GitHub.

  2. Seleccione Configuración>Secretos y variables>Acciones.

  3. Seleccione New repository secret (Nuevo secreto del repositorio).

    Captura de pantalla de la interfaz de GitHub que muestra la página

  4. Asigne el nombre AZURE_CLIENT_ID_TEST al secreto.

  5. En el campo Valor, pegue el GUID de la primera línea de la salida del terminal. No incluya AZURE_CLIENT_ID, los dos puntos ni los espacios en el valor.

  6. Seleccione Add secret (Agregar secreto).

    Captura de pantalla de la interfaz de GitHub que muestra la página

  7. Repita el proceso para crear los secretos para AZURE_TENANT_ID y AZURE_SUBSCRIPTION_ID, copiando los valores de los campos correspondientes en la salida del terminal.

  8. Compruebe que en la lista de secretos se muestran ahora los tres secretos.

    Captura de pantalla de la interfaz de GitHub en la que se muestra la lista de secretos.