Verwenden von Azure Key Vault Secrets in Ihrer Pipeline

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

Entwickler können Azure Schlüsseltresor verwenden, um vertrauliche Informationen wie Kennwörter, API-Schlüssel und Zertifikate sicher zu speichern und zu verwalten. In diesem Artikel erfahren Sie, wie Sie Geheimnisse aus einem Azure Key Vault in Ihrer Pipeline abfragen und verwenden.

Voraussetzungen

Product Anforderungen
Azure DevOps - Ein Azure DevOps-Projekt.
-Berechtigungen:
    – Um Zugriff auf alle Pipelines im Projekt zu gewähren: Sie müssen Mitglied der Gruppe "Projektadministratoren" sein.
    – Um Dienstverbindungen zu erstellen: Sie müssen über die Rolle "Administrator" oder "Ersteller" für Dienstverbindungen verfügen.
GitHub – Ein GitHub-Konto und ein GitHub-Repository.
– Eine GitHub-Dienstverbindung zum Autorisieren von Azure Pipelines.
Azure – Ein Azure-Abonnement.

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 VaultCreate aus, um eine neue Azure key vault zu erstellen.

  3. Wählen Sie Ihr Abonnement im Dropdownmenü 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 ein Preisniveau und dann "Weiter" aus, wenn Sie weitere Eigenschaften konfigurieren möchten. Wählen Sie andernfalls " Überprüfen+ erstellen " aus, um die Standardeinstellungen beizubehalten.

  4. Wählen Sie nach Abschluss der Bereitstellung die Option Zu Ressource wechseln.

Authentifizierung einrichten

Erstellen einer benutzerseitig zugewiesenen verwalteten Identität

  1. Melden Sie sich beim portal Azure an, und suchen Sie dann in der Suchleiste nach dem Dienst Managed Identities.

  2. Wählen Sie "Erstellen" aus, und füllen Sie dann die erforderlichen Felder 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. Wählen Sie "Überprüfen" und "Erstellen" aus, nachdem Sie fertig sind.

  4. Wählen Sie nach Abschluss der Bereitstellung die Option Zu Ressource wechseln. Kopieren Sie das Abonnement und die Client-ID, da Sie sie in den nächsten Schritten benötigen.

  5. Wechseln Sie zu Einstellungen>Eigenschaften, und kopieren Sie Ihre Mandanten-ID der verwalteten Identität, um sie später zu verwenden.

Zugriffsrichtlinien für den Schlüsseltresor einrichten

  1. Wechseln Sie zum Azure-Portal, und suchen Sie mithilfe der Suchleiste den zuvor erstellten Key Vault.

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

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

  5. Wählen Sie Ihre verwaltete Identität aus, wählen Sie "Weiter" und dann erneut "Weiter" aus.

  6. Überprüfen Sie Ihre neue Richtlinie, und wählen Sie dann "Erstellen" aus, nachdem Sie fertig sind.

Erstellen einer Dienstverbindung

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

  2. Wählen Sie "Project settings>Service connections" und dann "Neue Dienstverbindung" aus.

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

  4. Wählen Sie unter "Identitätstyp" im Dropdownmenü "Verwaltete Identität " aus.

  5. Füllen Sie für Schritt 1: Details zur verwalteten Identität die Felder 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, in der Ihre verwaltete Identität gehostet wird.
    • Verwaltete Identität: Wählen Sie Ihre verwaltete Identität im Dropdownmenü aus.
  6. Füllen Sie für Schritt 2: Azure-Bereich die Felder 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 dieses Element an, wenn Sie den Zugriff auf eine bestimmte Ressourcengruppe einschränken möchten.
  7. Füllen Sie für Schritt 3: Dienstverbindungsdetails die Felder aus:

    • Dienstverbindungsname: Geben Sie einen Namen für Ihre Dienstverbindung ein.
    • Dienstverwaltungsreferenz: (Optional) Schließen Sie Kontextinformationen aus einer ITSM-Datenbank ein.
    • Beschreibung: (Optional) Fügen Sie eine Beschreibung hinzu.
  8. Aktivieren Sie unter "Sicherheit" das Kontrollkästchen "Zugriffsberechtigung für alle Pipelines erteilen", damit alle Pipelines diese Dienstverbindung verwenden können. Wenn Sie dieses Kontrollkästchen leer lassen, müssen Sie den Zugriff für jede Pipeline manuell gewähren.

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

    Screenshot, der zeigt, wie Sie eine verwaltete Identität Azure Resource Manager Dienstverbindung erstellen.

Abfragen und Verwenden von Geheimnissen in Ihrer Pipeline

Mit der aufgabe Azure Key Vault können Sie jetzt geheime Schlüssel aus Ihrem Schlüsseltresor abfragen und abrufen und diese in nachfolgenden Aufgaben in Ihrer Pipeline verwenden. Geheime Schlüssel müssen explizit Umgebungsvariablen zugeordnet werden, wie im folgenden Beispiel gezeigt:

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: AzureKeyVault@2                                # Download Azure Key Vault secrets.
  inputs:
    azureSubscription: 'SERVICE_CONNECTION_NAME'       # Name of the service connection. Alias: ConnectedServiceName.
    KeyVaultName: 'KEY_VAULT_NAME'                     # Name of the key vault.
    SecretsFilter: '*'                                 # Secrets filter. Default: *.

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

Die Ausgabe des letzten Bash-Schritts sollte wie in diesem Beispiel aussehen:

Secret Found! ***

Hinweis

Um mehrere geheime Schlüssel aus Ihrem Schlüsseltresor abzufragen, verwenden Sie die SecretsFilter Eingabe, und stellen Sie eine durch Trennzeichen getrennte Liste mit geheimen Namen bereit, z. B. "secret1, secret2".