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 eines Schlüsseltresors

  1. Melden Sie sich beim Azure-Portal an, und wählen Sie dann "Ressource erstellen" aus.

  2. Wählen Sie unter "Key Vault" die Option "Erstellen" aus, um einen neuen Azure Key Vault zu erstellen.

  3. Wählen Sie Im Dropdownmenü Ihr Abonnement aus, und wählen Sie dann eine vorhandene Ressourcengruppe aus, oder erstellen Sie eine neue. Geben Sie einen Schlüsseltresornamen ein, wählen Sie eine Region aus, wählen Sie eine Preisstufe und dann "Weiter" aus, wenn Sie zusätzliche Eigenschaften konfigurieren möchten. Wählen Sie andernfalls " Überprüfen+ erstellen " aus, um die Standardeinstellungen beizubehalten.

  4. Klicken Sie nach Abschluss der Bereitstellung auf Zu Ressource wechseln.

Authentifizierung einrichten

Erstellen einer benutzerseitig zugewiesenen verwalteten Identität

  1. Melden Sie sich bei der Azure-Portal an, und suchen Sie dann in der Suchleiste nach dem Dienst für verwaltete Identitäten.

  2. Wählen Sie "Erstellen" aus, und füllen Sie die erforderlichen Felder wie folgt aus:

    • Abonnement: Wählen Sie Ihr Abonnement im Dropdownmenü aus.
    • Ressourcengruppe: Wählen Sie eine vorhandene Ressourcengruppe aus, oder erstellen Sie eine neue.
    • Region: Wählen Sie im Dropdownmenü eine Region aus.
    • Name: Geben Sie einen Namen für Ihre vom Benutzer zugewiesene verwaltete Identität ein.
  3. Wenn Sie fertig sind, wählen Sie Überprüfen + Erstellen aus.

  4. Nachdem die Bereitstellung abgeschlossen ist, wählen Sie "Zur Ressource wechseln" aus, und kopieren Sie dann die Werte für Abonnement - und Client-ID , die in anstehenden Schritten verwendet werden sollen.

  5. Navigieren Sie zu "Einstellungseigenschaften>", und kopieren Sie den Mandanten-ID-Wert Ihrer verwalteten Identität zur späteren Verwendung.

Zugriffsrichtlinien für den Schlüsseltresor einrichten

  1. Navigieren Sie zu Azure-Portal, und verwenden Sie die Suchleiste, um den zuvor erstellten Schlüsseltresor zu finden.

  2. Wählen Sie Access-Richtlinien und dann " Erstellen" aus, um eine neue Richtlinie hinzuzufügen.

  3. Aktivieren Sie unter "Geheime Berechtigungen" die Kontrollkästchen "Abrufen" und "Auflisten".

  4. Wählen Sie "Weiter" aus, und fügen Sie dann die Client-ID der zuvor erstellten verwalteten Identität in die Suchleiste ein. Wählen Sie Verwaltete Identität aus.

  5. Wählen Sie "Weiter" und dann "Weiter" aus.

  6. Überprüfen Sie Ihre neuen Richtlinien, und wählen Sie dann " Erstellen" aus, wenn Sie fertig sind.

Erstellen einer Dienstverbindung

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

  2. Wählen Sie Projekteinstellungen>Serviceverbindungen, und wählen Sie dann Neue Serviceverbindung, um eine neue Serviceverbindung zu erstellen.

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

  4. Wählen Sie für den Identitätstyp im Dropdownmenü verwaltete Identität aus.

  5. Füllen Sie für Schritt 1: Details zur verwalteten Identität die Felder wie folgt aus:

    • Abonnement für verwaltete Identität: Wählen Sie das Abonnement aus, das Ihre verwaltete Identität enthält.

    • Ressourcengruppe für verwaltete Identität: Wählen Sie die Ressourcengruppe aus, die Ihre verwaltete Identität hosten soll.

    • Verwaltete Identität: Wählen Sie Ihre verwaltete Identität aus dem Dropdownmenü aus.

  6. Füllen Sie für Schritt 2: Azure Scope die Felder wie folgt aus:

    • Bereichsebene für die Dienstverbindung: Abonnement auswählen.

    • Abonnement für Dienstverbindung: Wählen Sie das Abonnement aus, auf das Ihre verwaltete Identität zugreift.

    • Ressourcengruppe für Dienstverbindung: (Optional) Geben Sie an, dass der Zugriff auf verwaltete Identitäten auf eine Ressourcengruppe beschränkt werden soll.

  7. Für Schritt 3: Dienstverbindungsdetails:

    • Dienstverbindungsname: Geben Sie einen Namen für Ihre Dienstverbindung an.

    • Dienstverwaltungsreferenz: (Optional) Kontextinformationen aus einer ITSM-Datenbank.

    • Beschreibung: (Optional) Fügen Sie eine Beschreibung hinzu.

  8. Aktivieren Sie in "Sicherheit" das Kontrollkästchen "Zugriffsberechtigung für alle Pipelines erteilen", damit alle Pipelines diese Dienstverbindung verwenden können. Wenn Sie diese Option nicht auswählen, müssen Sie manuell Zugriff auf jede Pipeline gewähren, die diese Dienstverbindung verwendet.

  9. Wählen Sie Speichern aus, um die Dienstverbindung zu überprüfen und zu erstellen.

    Screenshot, der zeigt, wie Sie eine Verbindung mit verwalteten Identitäts-ARM-Diensten 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: 'SERVICE_CONNECTION_NAME'
    KeyVaultName: 'KEY_VAULT_NAME'
    SecretsFilter: '*'

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

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".