Freigeben über


Authentifizieren von Azure Spring Apps mit Azure Key Vault in GitHub Actions

Hinweis

Die Pläne Basic, Standard und Enterprise gelten ab Mitte März 2025 als veraltet und werden über einen Zeitraum von 3 Jahren eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie in der Ankündigung zur Einstellung von Azure Spring Apps.

Der Standardverbrauchs- und dedizierte Plan wird ab dem 30. September 2024 als veraltet gekennzeichnet und nach sechs Monaten vollständig eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie unter Migrieren vom Standardverbrauchs- und dedizierten Plan von Azure Spring Apps zu Azure Container Apps.

Dieser Artikel gilt für: ✔️ Java ✔️ C#

Dieser Artikel gilt für: ✔️ Basic/Standard ✔️ Enterprise

In diesem Artikel erfahren Sie, wie Sie Key Vault mit einen CI/CD-Workflow für Azure Spring Apps mit GitHub Actions verwenden.

Ein Schlüsseltresor ist ein sicherer Ort zum Speichern von Schlüsseln. Unternehmensbenutzer müssen Anmeldeinformationen für CI/CD-Umgebungen im von ihnen kontrollierten Bereich speichern. Der Schlüssel zum Abrufen von Anmeldeinformationen im Schlüsseltresor muss auf den Ressourcenbereich beschränkt sein. Er ermöglicht nur den Zugriff auf den Schlüsseltresorbereich und nicht auf den gesamten Azure-Bereich. Somit ist er vergleichbar mit einem Schlüssel, der nur ein bestimmtes Schließfach öffnet (im Gegensatz zu einem Hauptschlüssel, mit dem sämtliche Türen in einem Gebäude geöffnet werden können). Er ermöglicht das Abrufen eines Schlüssels mithilfe eines anderen Schlüssels, was in einem CI/CD-Workflow hilfreich ist.

Generieren von Anmeldeinformationen

Führen Sie auf Ihrem lokalen Computer den folgenden Befehl aus, um den Schlüssel für den Zugriff auf den Schlüsseltresor zu generieren:

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

Der durch den Parameter --scopes angegebene Bereich beschränkt den Schlüsselzugriff auf die Ressource. Er kann nur auf das Schließfach zugreifen.

Ergebnisse:

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

Speichern Sie die Ergebnisse in GitHub-Geheimnissen, wie unter Einrichten des GitHub-Repositorys und Durchführen der Authentifizierung beschrieben.

Hinzufügen von Zugriffsrichtlinien für die Anmeldeinformationen

Mit den oben erstellten Anmeldeinformationen können nur allgemeine Informationen zur Key Vault-Instanz abgerufen werden, aber nicht der darin gespeicherte Inhalt. Zum Abrufen von in der Key Vault-Instanz gespeicherten Geheimnissen müssen Zugriffsrichtlinien für die Anmeldeinformationen festgelegt werden.

Navigieren Sie im Azure-Portal zum Dashboard Key Vault, wählen Sie das Menü Zugriffssteuerung aus, und öffnen Sie dann die Registerkarte Rollenzuweisungen. Wählen Sie Apps für Typ und This resource für Bereich aus. Daraufhin sollten die im vorherigen Schritt erstellten Anmeldeinformationen angezeigt werden:

Screenshot des Azure-Portals, der die Seite „Zugriffssteuerung“ mit hervorgehobener Registerkarte „Rollenzuweisungen“ zeigt.

Kopieren Sie den Anmeldeinformationsnamen (beispielsweise azure-cli-2020-01-19-04-39-02). Öffnen Sie das Menü Zugriffsrichtlinien, und klicken Sie auf den Link Zugriffsrichtlinie hinzufügen. Wählen Sie unter Vorlage die Option Secret Management und anschließend Prinzipal aus. Fügen Sie den Anmeldeinformationsnamen in das Eingabefeld unter Prinzipal/Auswählen ein:

Screenshot des Azure-Portals, der die Seite „Zugriffsrichtlinie hinzufügen“ mit geöffnetem Hauptbereich zeigt.

Klicken Sie im Dialogfeld Zugriffsrichtlinie hinzufügen auf die Schaltfläche Hinzufügen, und klicken Sie anschließend auf Speichern.

Generieren von Azure-Anmeldeinformationen für den gesamten Bereich

Dies ist der Hauptschlüssel, mit dem alle Türen im Gebäude geöffnet werden können. Die Vorgehensweise ähnelt dem vorherigen Schritt. In diesem Fall ändern wir aber den Bereich, um den Hauptschlüssel zu generieren:

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

Ergebnisse:

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

Kopieren Sie die gesamte JSON-Zeichenfolge. Kehren Sie zum Dashboard Key Vault zurück. Öffnen Sie das Menü Geheimnisse, und wählen Sie dann die Schaltfläche Generieren/Importieren aus. Geben Sie den Namen des Geheimnisses ein (beispielsweise AZURE-CREDENTIALS-FOR-SPRING). Fügen Sie die JSON-Anmeldeinformationszeichenfolge in das Eingabefeld Wert ein. Wie Sie sehen, ist das Eingabefeld für den Wert kein Textbereich mit mehreren Zeilen, sondern ein einzeiliges Textfeld. Dort können Sie die gesamte JSON-Zeichenfolge einfügen.

Screenshot des Azure-Portals, der die Seite „Geheimnis erstellen“ zeigt.

Kombinieren von Anmeldeinformationen in GitHub Actions

Legen Sie die Anmeldeinformationen fest, die beim Ausführen der CI/CD-Pipeline verwendet werden:

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ächste Schritte