Autenticare App Spring di Azure con Azure Key Vault in GitHub Actions
Nota
I piani Basic, Standard ed Enterprise saranno deprecati a partire dalla metà di marzo 2025, con un periodo di ritiro di 3 anni. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere l'annuncio di ritiro di Azure Spring Apps.
Il piano Standard a consumo e dedicato sarà deprecato a partire dal 30 settembre 2024, con un arresto completo dopo sei mesi. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere Eseguire la migrazione del consumo di Azure Spring Apps Standard e del piano dedicato alle app Azure Container.
Questo articolo si applica a: ✔️ Java ✔️ C#
Questo articolo si applica a: ✔️ Basic/Standard ✔️ Enterprise
Questo articolo illustra come usare Key Vault con un flusso di lavoro CI/CD per Azure Spring Apps con GitHub Actions.
L'insieme di credenziali delle chiavi è un luogo sicuro per archiviare le chiavi. Gli utenti aziendali devono archiviare le credenziali per gli ambienti CI/CD nell'ambito che controllano. La chiave per ottenere le credenziali nell'insieme di credenziali delle chiavi deve essere limitata all'ambito delle risorse. Ha accesso solo all'ambito dell'insieme di credenziali delle chiavi, non all'intero ambito di Azure. È come una chiave che può aprire solo una casella forte non una chiave master che può aprire tutte le porte in un edificio. È un modo per ottenere una chiave con un'altra chiave, utile in un flusso di lavoro CICD.
Generare credenziali
Per generare una chiave per accedere all'insieme di credenziali delle chiavi, eseguire il comando seguente nel computer locale:
az ad sp create-for-rbac --role contributor --scopes /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.KeyVault/vaults/<KEY_VAULT> --json-auth
L'ambito specificato dal --scopes
parametro limita l'accesso della chiave alla risorsa. Può accedere solo alla casella complessa.
Con i risultati:
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
"activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
"resourceManagerEndpointUrl": "https://management.azure.com/",
"sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
"galleryEndpointUrl": "https://gallery.azure.com/",
"managementEndpointUrl": "https://management.core.windows.net/"
}
Salvare quindi i risultati in segreti GitHub come descritto in Configurare il repository GitHub ed eseguire l'autenticazione con Azure.
Aggiungere criteri di accesso per le credenziali
Le credenziali create in precedenza possono ottenere solo informazioni generali sull'insieme di credenziali delle chiavi, non sul contenuto archiviato. Per ottenere i segreti archiviati nell'insieme di credenziali delle chiavi, è necessario impostare i criteri di accesso per le credenziali.
Passare al dashboard di Key Vault in portale di Azure, selezionare il menu Controllo di accesso, quindi aprire la scheda Assegnazioni di ruolo. Selezionare App per Tipo e This resource
per ambito. Le credenziali create nel passaggio precedente dovrebbero essere visualizzate:
Copiare il nome delle credenziali, azure-cli-2020-01-19-04-39-02
ad esempio . Aprire il menu Criteri di accesso , quindi selezionare il collegamento Aggiungi criteri di accesso. Selezionare Template (ModelloSecret Management
) e quindi Principal (Entità). Incollare il nome della credenziale nella casella di input Principal/Select (Seleziona input):
Selezionare il pulsante Aggiungi nella finestra di dialogo Aggiungi criteri di accesso e quindi selezionare Salva.
Generare credenziali di Azure con ambito completo
Questa è la chiave master per aprire tutte le porte dell'edificio. La procedura è simile al passaggio precedente, ma qui si modifica l'ambito per generare la chiave master:
az ad sp create-for-rbac --role contributor --scopes /subscriptions/<SUBSCRIPTION_ID> --json-auth
Anche in questo caso, risultati:
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
"activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
"resourceManagerEndpointUrl": "https://management.azure.com/",
"sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
"galleryEndpointUrl": "https://gallery.azure.com/",
"managementEndpointUrl": "https://management.core.windows.net/"
}
Copiare l'intera stringa JSON. Tornare al dashboard di Key Vault . Aprire il menu Segreti , quindi selezionare il pulsante Genera/Importa . Immettere il nome del segreto, ad esempio AZURE-CREDENTIALS-FOR-SPRING
. Incollare la stringa delle credenziali JSON nella casella Input Valore . È possibile notare che la casella di input del valore è un campo di testo a riga singola, anziché un'area di testo a più righe. È possibile incollare la stringa JSON completa.
Combinare le credenziali in GitHub Actions
Impostare le credenziali usate quando viene eseguita la pipeline CICD:
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }} # Strong box key you generated in the first step
- uses: Azure/get-keyvault-secrets@v1.0
with:
keyvault: "<Your Key Vault Name>"
secrets: "AZURE-CREDENTIALS-FOR-SPRING" # Master key to open all doors in the building
id: keyvaultaction
- uses: azure/login@v1
with:
creds: ${{ steps.keyvaultaction.outputs.AZURE-CREDENTIALS-FOR-SPRING }}
- name: Azure CLI script
uses: azure/CLI@v1
with:
azcliversion: 2.0.75
inlineScript: |
az extension add --name spring # Spring CLI commands from here
az spring list