Uwierzytelnianie usługi Azure Spring Apps za pomocą usługi Azure Key Vault w funkcji GitHub Actions

Uwaga

Azure Spring Apps to nowa nazwa usługi Azure Spring Cloud. Mimo że usługa ma nową nazwę, stara nazwa będzie widoczna w niektórych miejscach przez pewien czas, ponieważ pracujemy nad aktualizowaniem zasobów, takich jak zrzuty ekranu, filmy wideo i diagramy.

Ten artykuł dotyczy: ✔️ Java ✔️ C#

Ten artykuł dotyczy: ✔️ Podstawowa/Standardowa ✔️ Enterprise

W tym artykule pokazano, jak używać usługi Key Vault z przepływem pracy ciągłej integracji/ciągłego wdrażania dla usługi Azure Spring Apps z funkcją GitHub Actions.

Magazyn kluczy to bezpieczne miejsce do przechowywania kluczy. Użytkownicy korporacyjni muszą przechowywać poświadczenia dla środowisk ciągłej integracji/ciągłego wdrażania w zakresie, który kontrolują. Klucz pobierania poświadczeń w magazynie kluczy powinien być ograniczony do zakresu zasobów. Ma dostęp tylko do zakresu magazynu kluczy, a nie całego zakresu platformy Azure. To jak klucz, który może otworzyć tylko silne pudełko nie klucz główny, który może otworzyć wszystkie drzwi w budynku. Jest to sposób uzyskania klucza za pomocą innego klucza, który jest przydatny w przepływie pracy CICD.

Generowanie poświadczeń

Aby wygenerować klucz umożliwiający dostęp do magazynu kluczy, wykonaj poniższe polecenie na komputerze lokalnym:

az ad sp create-for-rbac --role contributor --scopes /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.KeyVault/vaults/<KEY_VAULT> --json-auth

Zakres określony przez --scopes parametr ogranicza dostęp klucza do zasobu. Może ona uzyskać dostęp tylko do silnego pola.

Z wynikami:

{
    "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/"
}

Następnie zapisz wyniki w wpisach tajnych usługi GitHub zgodnie z opisem w temacie Konfigurowanie repozytorium GitHub i uwierzytelnianie za pomocą platformy Azure.

Dodawanie zasad dostępu dla poświadczeń

Poświadczenie utworzone powyżej może uzyskać tylko ogólne informacje o usłudze Key Vault, a nie zawartości przechowywanej przez nią. Aby uzyskać wpisy tajne przechowywane w usłudze Key Vault, należy ustawić zasady dostępu dla poświadczeń.

Przejdź do pulpitu nawigacyjnego usługi Key Vault w witrynie Azure Portal, wybierz menu Kontrola dostępu, a następnie otwórz kartę Przypisania ról. Wybierz pozycję Aplikacje dla pozycji Typ i This resource zakres. Powinny zostać wyświetlone poświadczenia utworzone w poprzednim kroku:

Zrzut ekranu witryny Azure Portal przedstawiający stronę Kontrola dostępu z wyróżnioną kartą Przypisania ról.

Skopiuj nazwę poświadczeń, na przykład azure-cli-2020-01-19-04-39-02. Otwórz menu Zasady dostępu, a następnie wybierz link Dodaj zasady dostępu. Wybierz Secret Management pozycję Szablon, a następnie wybierz pozycję Podmiot zabezpieczeń. Wklej nazwę poświadczeń w polu Principal Select input (Wybierz dane wejściowe podmiotu zabezpieczeń/):

Zrzut ekranu witryny Azure Portal przedstawiający stronę Dodawanie zasad dostępu z otwartym okienkiem Podmiot zabezpieczeń.

Wybierz przycisk Dodaj w oknie dialogowym Dodawanie zasad dostępu, a następnie wybierz pozycję Zapisz.

Generowanie poświadczeń platformy Azure w pełnym zakresie

Jest to klucz główny, aby otworzyć wszystkie drzwi w budynku. Procedura jest podobna do poprzedniego kroku, ale tutaj zmieniamy zakres, aby wygenerować klucz główny:

az ad sp create-for-rbac --role contributor --scopes /subscriptions/<SUBSCRIPTION_ID> --json-auth

Ponownie wyniki:

{
    "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/"
}

Skopiuj cały ciąg JSON. Wróć do pulpitu nawigacyjnego usługi Key Vault . Otwórz menu Wpisy tajne, a następnie wybierz przycisk Generuj/Importuj. Wprowadź nazwę wpisu tajnego, na przykład AZURE-CREDENTIALS-FOR-SPRING. Wklej ciąg poświadczeń JSON do pola Wprowadzanie wartości . Możesz zauważyć, że pole wprowadzania wartości jest polem tekstowym jednowierszowym, a nie wielowierszowym obszarem tekstowym. Możesz w tym miejscu wkleić pełny ciąg JSON.

Zrzut ekranu witryny Azure Portal przedstawiający stronę Tworzenie wpisu tajnego.

Łączenie poświadczeń w funkcji GitHub Actions

Ustaw poświadczenia używane podczas wykonywania potoku 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

Następne kroki