Compartir a través de


Integración de Azure Key Vault en un flujo de trabajo de Acciones de GitHub

Integre Azure Key Vault en el flujo de trabajo de Acciones de GitHub para administrar de forma segura las credenciales confidenciales en un solo lugar. Este enfoque reduce el riesgo de exposición accidental o acceso no autorizado a datos confidenciales.

Este flujo de trabajo de ejemplo de Acciones de GitHub muestra cómo recuperar de forma segura secretos de Azure Key Vault mediante la autenticación de OpenID Connect (OIDC).

Prerrequisitos

  • Configure una credencial de identidad federada en una aplicación de Microsoft Entra o en una identidad administrada asignada por el usuario. Obtenga información sobre cómo autenticarse en Azure desde Acciones de GitHub mediante OpenID Connect. Al configurar la credencial federada, almacene estos secretos en GitHub:
    • AZURE_CLIENT_ID: el identificador de cliente de la entidad de servicio principal de Azure.
    • AZURE_TENANT_ID: identificador de inquilino de Azure AD.
    • AZURE_SUBSCRIPTION_ID: Su ID de suscripción de Azure.
    • KEYVAULT_NAME: el nombre de su almacén de claves.
  • Conceder permisos: asegúrese de que el principal de servicio tenga el acceso adecuado al Key Vault (por ejemplo, el rol "Usuario de secretos de Key Vault").
  • Reemplace <SECRET_NAME> por el nombre del secreto del almacén de claves.

Ejemplo de flujo de trabajo de Acciones de GitHub

Qué hace el flujo de trabajo:

  • Se activa con las inserciones en la rama principal
  • Usa la autenticación OIDC para conectarse a Azure (sin contraseñas almacenadas en GitHub)
  • Recupera un secreto de Azure Key Vault
  • Enmascara el valor del secreto con ::add-mask:: para evitar que aparezca en los registros.
  • Hace que el secreto esté disponible como una variable de entorno para los pasos posteriores.
name: Access Azure Key Vault and pass secret to workflow

on:
  push:
    branches:
      - main

permissions:
  id-token: write
  contents: read

jobs:
  get-secret:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Azure Login
        uses: azure/login@v1
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

      - name: Retrieve secret from Key Vault
        id: keyvault
        uses: azure/CLI@v1
        with:
          inlineScript: |
            SECRET_VALUE=$(az keyvault secret show --name <SECRET_NAME> --vault-name ${{ secrets.KEYVAULT_NAME }} --query value -o tsv)
            echo "::add-mask::$SECRET_VALUE"
            echo "SECRET_VALUE=$SECRET_VALUE" >> $GITHUB_ENV
      - name: Use retrieved secret
        run: echo "The secret is successfully retrieved!"

      - name: Use SECRET_VALUE in deployment
        run: |
          ./deploy.sh
        env:
          SECRET_VALUE: ${{ env.SECRET_VALUE }}

Recursos adicionales