Integrar o Azure Key Vault em um fluxo de trabalho do GitHub Actions

Integre o Azure Key Vault ao seu fluxo de trabalho de Ações do GitHub para gerenciar credenciais confidenciais com segurança em um só lugar. Essa abordagem reduz o risco de exposição acidental ou acesso não autorizado a dados confidenciais.

Este fluxo de trabalho de exemplo de Ações do GitHub demonstra como recuperar segredos com segurança do Cofre de Chaves do Azure usando a autenticação OpenID Connect (OIDC).

Pré-requisitos

  • Configure uma credencial de identidade federada em um aplicativo Microsoft Entra ou uma identidade gerenciada atribuída pelo usuário. Saiba como em Autenticar no Azure a partir de Ações do GitHub pelo OpenID Connect. Ao configurar sua credencial federada, armazene estes segredos no GitHub:
    • AZURE_CLIENT_ID: o ID do cliente da entidade de serviço do Azure.
    • AZURE_TENANT_ID: Sua ID de locatário do Azure AD.
    • AZURE_SUBSCRIPTION_ID: Sua ID de assinatura do Azure.
    • KEYVAULT_NAME: O nome do Cofre da Chave.
  • Conceder permissões: Verifique se a entidade de serviço tem acesso adequado ao Key Vault (por exemplo, função "Usuário de Segredos do Key Vault").
  • Substitua <SECRET_NAME> pelo nome secreto do Cofre da Chave.

Exemplo de fluxo de trabalho de ações do GitHub

O que o fluxo de trabalho faz:

  • Disparadores para envios ao ramo principal
  • Usa a autenticação OIDC para se conectar ao Azure (sem senhas armazenadas no GitHub)
  • Recupera um segredo do Azure Key Vault
  • Mascara o valor secreto com ::add-mask:: para impedir que apareça nos registos.
  • Torna o segredo disponível como uma variável de ambiente para etapas subsequentes
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 adicionais