Freigeben über


Verwenden von Geheimnissen aus Azure Key Vault in Ihrer Pipeline

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Mit Azure Key Vault können Sie Ihre vertraulichen Informationen wie Kennwörter, API-Schlüssel, Zertifikate usw. sicher speichern und verwalten. Mit Azure Key Vault können Sie ganz einfach Verschlüsselungsschlüssel erstellen und verwalten, um Ihre Daten zu verschlüsseln. Azure Key Vault kann auch zum Verwalten von Zertifikaten für alle Ihre Ressourcen verwendet werden. In diesem Artikel lernen Sie Folgendes:

  • Erstellen Sie eine Azure Key Vault-Instanz.
  • Konfigurieren Sie Ihre Key Vault-Berechtigungen.
  • Erstellen Sie eine neue Dienstverbindung.
  • Fragen Sie geheime Schlüssel aus Ihrer Azure-Pipeline ab.

Voraussetzungen

Erstellen einer Azure Key Vault-Instanz

  1. Navigieren Sie zum Azure-Portal.

  2. Wählen Sie links im Navigationsbereich Ressource erstellen aus.

    Screenshot zum Erstellen einer neuen Ressource in Azure-Portal.

  3. Suchen Sie nach Key Vault, und klicken Sie dann auf die EINGABETASTE.

    Screenshot, der zeigt, wie Sie in Azure-Portal nach Azure Key Vault suchen.

  4. Wählen Sie Erstellen aus, um einen neuen Azure Key Vault zu erstellen.

    Screenshot, der zeigt, wie Sie in Azure-Portal einen neuen Azure Key Vault erstellen.

  5. Wählen Sie Ihr Abonnement aus , und fügen Sie dann eine neue Ressourcengruppe hinzu. Geben Sie einen Schlüsseltresornamen ein, und wählen Sie eine Region und einen Tarif aus. Wenn Sie fertig sind, wählen Sie Überprüfen + Erstellen aus.

    Screenshot mit den Schritten zum Erstellen eines neuen Schlüsseltresors in Azure-Portal.

  6. Wählen Sie Zu Ressource wechseln aus, wenn die Bereitstellung Ihrer neuen Ressource abgeschlossen ist.

    Screenshot, der zeigt, wie Sie in Azure-Portal zu Ihrer Ressource navigieren.

Erstellen eines Dienstprinzipals

In diesem Schritt erstellen wir einen neuen Dienstprinzipal in Azure, sodass wir unseren Azure Key Vault aus Azure-Pipelines abfragen können.

  1. Navigieren Sie zum Azure-Portal.

  2. Wählen Sie in der Menüleiste das Symbol >_ aus, um die Cloud Shell zu öffnen.

  3. Wählen Sie PowerShell aus, oder belassen Sie es bei Bash, je nachdem, was Sie bevorzugen.

  4. Führen Sie den folgenden Befehl aus, um einen neuen Dienstprinzipal zu erstellen:

    az ad sp create-for-rbac --name YOUR_SERVICE_PRINCIPAL_NAME
    
  5. Die Ausgabe sollte mit dem folgenden Beispiel übereinstimmen. Kopieren Sie unbedingt die Ausgabe des Befehls, da sie zum Erstellen der Dienstverbindung im nächsten Schritt erforderlich ist.

    {
      "appId": "p951q3e2-8e5r-z697-e9q52aviu8a2",
      "displayName": "MyServicePrincipal",
      "password": "***********************************",
      "tenant": "85wes2u6-63sh-95zx-2as3-qw58wex269df"
    }
    

Key Vault-Zugangsberechtigungen konfigurieren

  1. Navigieren Sie zum Azure-Portal.

  2. Der Namen des im vorherigen Schritt erstellten Schlüsseltresors.

  3. Klicken Sie auf Zugriffsrichtlinien.

    Screenshot, der zeigt, wie Sie in Azure-Portal zu Ihren Zugriffsrichtlinien für den Schlüsseltresor navigieren.

  4. Wählen Sie Zugriffsrichtlinie hinzufügen aus, um eine neue Richtlinie hinzuzufügen.

  5. Fügen Sie die Berechtigungen Get und List zu Geheimnis hinzu.

    Screenshot, der zeigt, wie Sie Ihrem Schlüsseltresor in Azure-Portal Get- und List-Berechtigungen hinzufügen.

  6. Wählen Sie unter Prinzipal auswählen die Option aus, um einen Dienstprinzipal hinzuzufügen, und wählen Sie den aus, den Sie zuvor erstellt haben.

  7. Wählen Sie Speichern aus, wenn Sie fertig sind.

Hinweis

Azure Key Vaults, die die rollenbasierte Zugriffssteuerung (Azure RBAC) verwenden, werden nicht unterstützt.

Erstellen einer neuen Dienstverbindung

  1. Melden Sie sich bei Ihrer Azure DevOps-Organisation an, und navigieren Sie dann zu Ihrem Projekt.

  2. Wählen Sie zahnradsymbol "Projekteinstellungen" und dann "Dienstverbindungen" aus.

  3. Wenn Sie zum ersten Mal eine Dienstverbindung in Ihrem Projekt einrichten, wählen Sie Dienstverbindung erstellen aus. Wenn Sie bereits zuvor Dienstverbindungen hergestellt haben, wählen Sie "Neue Dienstverbindung aus.

  4. Wählen Sie Azure Resource Manager und dann Weiter aus.

  5. Wählen Sie Dienstprinzipal (manuell) und dann Weiter aus.

  6. Wählen Sie Abonnement für dieBereichsebene aus, und füllen Sie die erforderlichen Felder mit Informationen aus dem zuvor erstellten Dienstprinzipal aus. Wählen Sie Überprüfen aus, wenn Sie fertig sind:

    • Dienstprinzipal-ID: Ihre Dienstprinzipal-App-Id.
    • Dienstprinzipalschlüssel: Ihr Dienstprinzipalkennwort.
    • Mandanten-ID: Ihr Dienstprinzipalmandant.
  7. Geben Sie einen Namen für Ihre Dienstverbindung ein, und aktivieren Sie dann das Kontrollkästchen Allen Pipelines die Zugriffsberechtigung gewähren.

  8. Wählen Sie Überprüfen und Speichern aus, wenn Sie fertig sind.

    Screenshot, der zeigt, wie Sie eine neue manuelle Dienstprinzipaldienstverbindung erstellen.

Abfragen und Verwenden von Geheimnissen in Ihrer Pipeline

Mithilfe der Azure Key Vault-Aufgabe können wir den Wert unseres Geheimnisses abrufen und in nachfolgenden Aufgaben in unserer Pipeline verwenden. Beachten Sie unter anderem, dass Geheimnisse explizit der env-Variablen zugeordnet werden müssen, wie im folgenden Beispiel gezeigt.

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: AzureKeyVault@1
  inputs:
    azureSubscription: 'repo-kv-demo'                    ## YOUR_SERVICE_CONNECTION_NAME
    KeyVaultName: 'kv-demo-repo'                         ## YOUR_KEY_VAULT_NAME
    SecretsFilter: 'secretDemo'                          ## YOUR_SECRET_NAME. Default value: *
    RunAsPreJob: false                                   ## Make the secret(s) available to the whole job

- task: DotNetCoreCLI@2
  inputs:
    command: 'build'
    projects: '**/*.csproj'

- task: DotNetCoreCLI@2
  inputs:
    command: 'run'
    projects: '**/*.csproj'
  env:
    mySecret: $(secretDemo)

- bash: |
    echo "Secret Found! $MY_MAPPED_ENV_VAR"        
  env:
    MY_MAPPED_ENV_VAR: $(mySecret)

Die Ausgabe dieses Befehls sollte wie folgt aussehen:

Secret Found! ***

Hinweis

Wenn Sie mehrere Geheimnisse aus Ihrem Azure-Key Vault abfragen möchten, verwenden Sie das SecretsFilter Argument, um eine durch Trennzeichen getrennte Liste von Geheimnisnamen zu übergeben: "secret1, secret2".