Autenticare App Spring di Azure con Azure Key Vault in GitHub Actions
Nota
Azure Spring Apps è il nuovo nome del servizio Azure Spring Cloud. Anche se il servizio ha un nuovo nome, il nome precedente verrà visualizzato in alcune posizioni per un po' mentre si lavora per aggiornare gli asset, ad esempio screenshot, video e diagrammi.
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