Dela via


Autentisera Azure Spring Apps med Azure Key Vault i GitHub Actions

Kommentar

Azure Spring Apps är det nya namnet på Azure Spring Cloud-tjänsten. Även om tjänsten har ett nytt namn ser du det gamla namnet på vissa platser ett tag medan vi arbetar med att uppdatera tillgångar som skärmbilder, videor och diagram.

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-hemligheterenligt 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 Key Vault-instrumentpanelen i Azure-portalen, 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-portalen 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-portalen 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-instrumentpanelen . Ö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-portalen 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