Dela via


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:

Skärmbild av Azure Portal som visar sidan Åtkomstkontroll med fliken Rolltilldelningar markerad.

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):

Skärmbild av Azure Portal som visar sidan Lägg till åtkomstprincip med fönstret Huvudnamn öppet.

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.

Skärmbild av Azure Portal som visar sidan Skapa en hemlighet.

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

Nästa steg