Uwierzytelnianie usługi Azure Spring Apps za pomocą usługi Azure Key Vault w funkcji GitHub Actions
Uwaga
Plany Podstawowa, Standardowa i Enterprise zostaną wycofane od połowy marca 2025 r. z 3-letnim okresem emerytalnym. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu usługi Azure Spring Apps.
Zużycie standardowe i dedykowany plan zostaną wycofane od 30 września 2024 r. z całkowitym zamknięciem po sześciu miesiącach. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz Migrowanie użycia usługi Azure Spring Apps w warstwie Standardowa i dedykowanego planu do usługi Azure Container Apps.
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:
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ń/):
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.
Łą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