Autentisera Azure Spring Apps med Azure Key Vault i GitHub Actions
Kommentar
Basic-, Standard- och Enterprise-planerna kommer att vara inaktuella från och med mitten av mars 2025, med en 3-årig pensionsperiod. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i meddelandet om azure Spring Apps-pensionering.
Standardförbrukningen och den dedikerade planen kommer att vara inaktuell från och med den 30 september 2024, med en fullständig avstängning efter sex månader. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i Migrera Azure Spring Apps Standard-förbrukning och dedikerad plan till Azure Container Apps.
Den här artikeln gäller för:✅ Java ✅ C#
Den här artikeln gäller för:✅ Basic/Standard ✅ Enterprise
Den här artikeln visar hur du använder Key Vault med ett CI/CD-arbetsflöde för Azure Spring Apps med GitHub Actions.
Nyckelvalv är en säker plats för lagring av nycklar. Företagsanvändare måste lagra autentiseringsuppgifter för CI/CD-miljöer i det omfång som de styr. Nyckeln för att hämta autentiseringsuppgifter i nyckelvalvet bör begränsas till resursomfånget. Den har endast åtkomst till nyckelvalvsomfånget, inte hela Azure-omfånget. Det är som en nyckel som bara kan öppna en stark låda, inte en huvudnyckel som kan öppna alla dörrar i en byggnad. Det är ett sätt att få en nyckel med en annan nyckel, vilket är användbart i ett CICD-arbetsflöde.
Generera autentiseringsuppgifter
Om du vill generera en nyckel för åtkomst till nyckelvalvet kör du kommandot nedan på den lokala datorn:
az ad sp create-for-rbac --role contributor --scopes /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.KeyVault/vaults/<KEY_VAULT> --json-auth
Omfånget som anges av parametern --scopes
begränsar nyckelåtkomsten till resursen. Den kan bara komma åt den starka rutan.
Med resultat:
{
"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/"
}
Spara sedan resultatet på GitHub-hemligheter enligt beskrivningen i Konfigurera din GitHub-lagringsplats och autentisera med Azure.
Lägg till åtkomstprinciper för autentiseringsuppgifterna
Autentiseringsuppgifterna som du skapade ovan kan bara hämta allmän information om Nyckelvalvet, inte innehållet som lagras. För att få hemligheter lagrade i Key Vault behöver du ange åtkomstprinciper för autentiseringsuppgifterna.
Gå till Instrumentpanelen för Key Vault i Azure Portal, välj menyn Åtkomstkontroll och öppna sedan fliken Rolltilldelningar. Välj Appar för Typ och This resource
omfång. Du bör se de autentiseringsuppgifter som du skapade i föregående steg:
Kopiera autentiseringsuppgiftens namn, till exempel azure-cli-2020-01-19-04-39-02
. Öppna menyn Åtkomstprinciper och välj sedan länken Lägg till åtkomstprincip. Välj Secret Management
mall och välj sedan Huvudnamn. Klistra in autentiseringsuppgiftens namn i rutan Principal Select input (Huvudnamn/välj indata):
Välj knappen Lägg till i dialogrutan Lägg till åtkomstprincip och välj sedan Spara.
Generera azure-autentiseringsuppgifter med fullständigt omfång
Det här är huvudnyckeln för att öppna alla dörrar i byggnaden. Proceduren liknar föregående steg, men här ändrar vi omfånget för att generera huvudnyckeln:
az ad sp create-for-rbac --role contributor --scopes /subscriptions/<SUBSCRIPTION_ID> --json-auth
Återigen resultat:
{
"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/"
}
Kopiera hela JSON-strängen. Gå tillbaka till Key Vault-instrumentpanel. Öppna menyn Hemligheter och välj sedan knappen Generera/importera. Ange det hemliga namnet, till exempel AZURE-CREDENTIALS-FOR-SPRING
. Klistra in JSON-autentiseringssträngen i rutan Värdeindata . Du kanske ser att värdeinmatningsrutan är ett textfält med en rad i stället för ett textområde med flera rader. Du kan klistra in den fullständiga JSON-strängen där.
Kombinera autentiseringsuppgifter i GitHub Actions
Ange de autentiseringsuppgifter som används när CICD-pipelinen körs:
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