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
- Eine Azure DevOps-Organisation. Wenn Sie noch nicht über ein Projekt verfügen, erstellen Sie es kostenlos.
- Ihr Projekt. Erstellen Sie ein Projekt, wenn Sie noch keines haben.
- Ihr eigenes Repository. Erstellen Sie ein neues Git Repo , falls Sie noch keinen besitzen.
- Ein Azure-Abonnement. Erstellen Sie ein kostenloses Azure-Konto, wenn Sie noch keines besitzen.
Erstellen eines Schlüsseltresors
Melden Sie sich beim Azure-Portal an, und wählen Sie dann "Ressource erstellen" aus.
Wählen Sie unter "Key Vault" die Option "Erstellen" aus, um einen neuen Azure Key Vault zu erstellen.
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.
Klicken Sie nach Abschluss der Bereitstellung auf Zu Ressource wechseln.
Authentifizierung einrichten
Erstellen einer benutzerseitig zugewiesenen verwalteten Identität
Melden Sie sich bei der Azure-Portal an, und suchen Sie dann in der Suchleiste nach dem Dienst für verwaltete Identitäten.
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.
Wenn Sie fertig sind, wählen Sie Überprüfen + Erstellen aus.
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.
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
Navigieren Sie zu Azure-Portal, und verwenden Sie die Suchleiste, um den zuvor erstellten Schlüsseltresor zu finden.
Wählen Sie Access-Richtlinien und dann " Erstellen" aus, um eine neue Richtlinie hinzuzufügen.
Aktivieren Sie unter "Geheime Berechtigungen" die Kontrollkästchen "Abrufen" und "Auflisten".
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.
Wählen Sie "Weiter" und dann "Weiter" aus.
Überprüfen Sie Ihre neuen Richtlinien, und wählen Sie dann " Erstellen" aus, wenn Sie fertig sind.
Erstellen einer Dienstverbindung
Melden Sie sich bei Ihrer Azure DevOps-Organisation an, und navigieren Sie dann zu Ihrem Projekt.
Wählen Sie Projekteinstellungen>Serviceverbindungen, und wählen Sie dann Neue Serviceverbindung, um eine neue Serviceverbindung zu erstellen.
Wählen Sie Azure Resource Manager und dann "Weiter" aus.
Wählen Sie für den Identitätstyp im Dropdownmenü verwaltete Identität aus.
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.
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.
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.
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.
Wählen Sie Speichern aus, um die Dienstverbindung zu überprüfen und zu 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".