Konfigurieren der Pipeline und der Anwendung für die Verwendung der Tokenisierung

Abgeschlossen

Azure Key Vault ist ein sicherer Geheimnis-, Schlüssel- und Zertifikatspeicher. Azure Key Vault kann sicherstellen, dass Ihre Token und Geheimnisse sicher gespeichert werden und Ihre Pipelines einfach darauf zugreifen können, ohne sie als Klartext offenzulegen. Azure Pipelines bietet integrierte Aufgaben, mit denen Sie während der Pipelineausführung Geheimnisse aus Azure Key Vault abrufen können.

In dieser Lerneinheit erfahren Sie, wie Sie Azure Key Vault mit YAML-Pipelines für die Verwaltung von Sicherheitstoken und Geheimnissen verwenden können.

Voraussetzungen

Azure Key Vault, Dienstprinzipal und YAML-Pipeline. Führen Sie die hier beschriebenen Schritte aus, um die Ressourcen zu erstellen: Verwenden von Azure Key Vault zum Sichern von Geheimnissen.

Verweisen auf Azure Key Vault in einer Variablengruppe

Eine Möglichkeit zur Verwendung von Azure Key Vault mit YAML-Pipelinevorlagen besteht darin, eine Variablengruppe zu erstellen, die auf die Key Vault-Instanz verweist. Gehen Sie wie folgt vor:

  1. Klicken Sie in Azure DevOps unter „Pipelines“ auf „Bibliothek“.
  2. Erstellen Sie eine neue Variablengruppe, oder verwenden Sie vorhandene Gruppen.
  3. Geben Sie einen Namen und eine Beschreibung für die Variablengruppe ein.
  4. Fügen Sie unter „Variablen“ eine neue Variable hinzu, und legen Sie ihren Wert auf $(keyVaultSecret) fest. Verwenden Sie diese Variable, um das Geheimnis aus Azure Key Vault abzurufen.
  5. Verknüpfen Sie unter „Geheimnisse verknüpfen“ die Variablengruppe mit Ihrer Azure Key Vault-Instanz, und gewähren Sie Lesezugriff auf den Dienstprinzipal, der für den Zugriff auf die Key Vault-Instanz verwendet wird.
  6. Speichern Sie die Variablengruppe.

Jetzt können Sie in Ihren YAML-Pipelinevorlagen mit der folgenden Syntax auf die Variablengruppe verweisen:

variables:
- group: <variable group name>

steps:
- task: AzureKeyVault@2
  inputs:
    azureSubscription: '<Azure subscription service connection>'
    KeyVaultName: '<Key Vault name>'
    SecretsFilter: '*'
    RunAsPreJob: true

Übergeben eines Azure Key Vault-Geheimnisses als Parameter

Eine weitere Möglichkeit zur Verwendung von Azure Key Vault mit YAML-Pipelinevorlagen besteht darin, ein Geheimnis als Parameter an die Vorlage zu übergeben.

  1. Erstellen Sie in Azure DevOps eine neue Pipeline, und wählen Sie „YAML“ aus.

  2. Definieren Sie in der Pipeline einen Parameter für das Geheimnis:

    parameters:
      - name: keyVaultSecret
        type: string
    
  3. Verwenden Sie in der Pipeline die AzureKeyVault-Aufgabe, um das Geheimnis abzurufen:

    steps:
    - task: AzureKeyVault@2
      inputs:
        azureSubscription: '<Azure subscription service connection>'
        KeyVaultName: '<Key Vault name>'
        SecretsFilter: '$(keyVaultSecret)'
    
  4. Übergeben Sie in der Pipeline das Geheimnis als Parameter an die Vorlage:

    - template: template.yaml
      parameters:
        keyVaultSecret: $(keyVaultSecret)
    

Ersetzen Sie <Azure subscription service connection> und <Key Vault name> durch Ihre eigenen Werte.

Verwenden von Azure Key Vault mit Variablen und Token

Eine dritte Möglichkeit zur Verwendung von Azure Key Vault mit YAML-Pipelinevorlagen besteht darin, Variablen, Token und Azure Key Vault zu kombinieren.

  1. Legen Sie den Wert der Variable auf $(keyVaultSecret) fest, und markieren Sie die Variable als Geheimnis. Verwenden Sie die Variable, um das Geheimnis aus Azure Key Vault abzurufen.

  2. Verwenden Sie die Variable $(keyVaultSecret) in Ihrer YAML-Pipelinevorlage, um das Geheimnis aus Azure Key Vault abzurufen:

    steps:
    - task: AzureKeyVault@2
      inputs:
        azureSubscription: '<Azure subscription service connection>'
        KeyVaultName: '<Key Vault name>'
        SecretsFilter: '$(keyVaultSecret)'
    
  3. Um den Wert des Geheimnisses zu tokenisieren, verwenden Sie die Variable $(keyVaultSecret) in Ihrer Pipeline:

    steps:
    - script: |
        echo $(keyVaultSecret)
    

    Damit wird der Wert des Geheimnisses zur Laufzeit ausgegeben.

  4. Wenn Sie das Geheimnis als Umgebungsvariable in Ihrer Pipeline verwenden möchten, können Sie die Umgebungsvariable in einem Skriptschritt festlegen:

    steps:
    - task: AzureKeyVault@2
      inputs:
        azureSubscription: '<Azure subscription service connection>'
        KeyVaultName: '<Key Vault name>'
        SecretsFilter: '$(keyVaultSecret)'
    - script: |
        export MY_SECRET=$(keyVaultSecret)    
    

    Damit wird die Umgebungsvariable MY_SECRET auf den Wert des Geheimnisses festgelegt.

Best Practices für die Verwendung von Azure Key Vault mit YAML-Pipelines

  1. Verwenden Sie für jede Umgebung eine separate Key Vault-Instanz. Verwenden Sie beispielsweise eine Key Vault-Instanz für Produktionsgeheimnisse und eine andere für Entwicklungsgeheimnisse.
  2. Weisen Sie dem Dienstprinzipal, der auf die Key Vault-Instanz zugreift, nur die mindestens erforderlichen Berechtigungen zu.
  3. Verwenden Sie die neueste Version der AzureKeyVault-Aufgabe in Ihrer Pipeline.
  4. Stellen Sie sicher, dass das vorläufige Löschen in Azure Key Vault aktiviert ist, um zu verhindern, dass Geheimnisse und Schlüssel versehentlich gelöscht werden.

Probieren Sie es aus!

Erstellen Sie eine neue YAML-Pipeline, die eine Azure Resource Manager-Vorlage bereitstellt, die auf ein in Azure Key Vault gespeichertes Geheimnis verweist. Verwenden Sie die AzureKeyVault-Aufgabe, um das Geheimnis abzurufen und als Parameter an die Vorlage zu übergeben. Vergewissern Sie sich, dass die Pipeline die Vorlage erfolgreich bereitstellen kann, ohne das Geheimnis als Klartext offenzulegen.

Empfohlenes Lab: Integrieren von Azure Key Vault in Azure DevOps

Weitere Informationen zu Azure Key Vault und YAML-Pipelines finden Sie hier: