Chi deve amministrare in modo automatico la propria infrastruttura su Azure, facendo uso delle GitHub Actions, si sarà sicuramente imbattuto nella necessità di autenticarsi con Azure stesso. Per farlo, seguendo la documentazione è necessario utilizzare delle credenziali di un utente o, meglio, di un service principal, che possono essere salvate come segreti all'interno del repository.
- name: Azure login uses: azure/login@v2 with: creds: ${{ secrets.AZURE_CREDENTIALS }}
Queste credenziali, non sono nient'altro che un file JSON contenente le informazioni necessarie per autenticarsi con Azure. Questo file può essere generato in diversi modi, ma il più semplice è quello di utilizzare il comando `az ad sp create-for-rbac` di Azure CLI, che ci restituirà un risultato simile al seguente:
{ "clientSecret": "******", "subscriptionId": "******", "tenantId": "******", "clientId": "******" }
Tuttavia, questa secret ha il problema di essere multilinea. Questo significa che se venisse esposta in un log tramite un altro step del workflow, potrebbe essere letta in chiaro da chiunque. Per evitare questo problema di sicurezza, è sufficiente utilizzare dei parametri diversi nella action di login, che prevede l'utilizzo di quattro secret separati, uno per ogni campo del file JSON.
- name: Azure login uses: azure/login@v2 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
.NET Aspire per applicazioni distribuite
Ordinare randomicamente una lista in C#
Potenziare la ricerca su Cosmos DB con Full Text Search
Anonimizzare i dati sensibili nei log di Azure Front Door
Recuperare l'ultima versione di una release di GitHub
Proteggere le risorse Azure con private link e private endpoints
Supportare la sessione affinity di Azure App Service con Application Gateway
Triggerare una pipeline su un altro repository di Azure DevOps
Ottenere un token di accesso per una GitHub App
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API