Verwenden von Geheimnissen aus Azure Key Vault in Azure Pipelines
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Mit Azure Key Vault können Entwickler*innen Geheimnisse wie API-Schlüssel, Anmeldeinformationen oder Zertifikate sicher speichern und verwalten. Der Azure Key Vault-Dienst unterstützt zwei Arten von Containern: Tresore und verwaltete Pools mit HSMs (Hardwaresicherheitsmodulen). Tresore unterstützen das Speichern von Software und von mit HSM gesicherten Schlüsseln, Geheimnissen und Zertifikaten, während verwaltete HSM-Pools nur HSM-gesicherte Schlüssel unterstützen.
In diesem Tutorial lernen Sie Folgendes:
- Erstellen einer Azure Key Vault-Instanz mithilfe der Azure CLI
- Hinzufügen eines Geheimnisses und Konfigurieren des Zugriffs auf Azure Key Vault
- Verwenden von Geheimnissen in Ihrer Pipeline
Voraussetzungen
- Eine Azure DevOps-Organisation. Wenn Sie noch keines besitzen, können Sie es kostenlos erstellen.
- Ein Azure-Abonnement. Erstellen Sie kostenlos ein Azure-Konto, wenn Sie noch keines besitzen.
Erstellen einer Azure Key Vault-Instanz
Melden Sie sich beim Azure-Portal an, und wählen Sie dann in der oberen rechten Ecke die Schaltfläche Cloud Shell aus.
Wenn Ihrem Konto mehrere Azure-Abonnements zugeordnet sind, verwenden Sie den folgenden Befehl, um ein Standardabonnement anzugeben. Sie können
az account list
verwenden, um eine Liste Ihrer Abonnements zu generieren.az account set --subscription <your_subscription_name_or_ID>
Legen Sie Ihre Azure-Standardregion fest. Sie können
az account list-locations
verwenden, um eine Liste Ihrer verfügbaren Regionen zu generieren.az config set defaults.location=<your_region>
Mit diesem Befehl wird beispielsweise die Region westus2 ausgewählt:
az config set defaults.location=westus2
Erstellen Sie eine neue Ressourcengruppe. Eine Ressourcengruppe ist ein Container, der verwandte Ressourcen für eine Azure-Lösung enthält.
az group create --name <your-resource-group>
Erstellen Sie einen neuen Schlüsseltresor.
az keyvault create \ --name <your-key-vault> \ --resource-group <your-resource-group>
Erstellen Sie einen neuen Geheimnisses in Ihrer Azure Key Vault-Instanz.
az keyvault secret set \ --name "Password" \ --value "mysecretpassword" \ --vault-name <your-key-vault-name>
Erstellen eines Projekts
Melden Sie sich bei Ihrer Azure DevOps-Organisation an.
Sollten in Ihrer Organisation noch keine Projekte vorhanden sein, wählen Sie Erstellen Sie als ersten Schritt ein Projekt. aus. Wählen Sie andernfalls in der oberen rechten Ecke Neues Projekt aus.
Erstellen eines Repositorys
Wir verwenden YAML, um unsere Pipeline zu erstellen, aber zuerst müssen wir ein neues Repository erstellen.
Melden Sie sich bei Ihrer Azure DevOps-Organisation an, und navigieren Sie zu Ihrem Projekt.
Wählen Sie Repositorys und dann Initialisieren aus, um ein neues Repository mit einer Infodatei zu initialisieren.
Erstellen einer neuen Pipeline
Wählen Sie Pipelines und dann Neue Pipeline aus.
Wählen Sie Azure Repos Git (YAML) aus.
Wählen Sie das Repository aus, das Sie im vorherigen Schritt erstellt haben.
Wählen Sie die Vorlage Startpipeline aus.
Die Standardpipeline enthält einige Skripts, die Echobefehle ausführen. Diese werden nicht benötigt, sie können also gelöscht werden. Die neue YAML-Datei sollte wie folgt aussehen:
trigger: - main pool: vmImage: 'ubuntu-latest' steps:
Wählen Sie Assistent anzeigen aus, um den Assistentenbereich zu erweitern. Dieser Bereich bietet eine bequeme und durchsuchbare Liste der Pipelineaufgaben.
Suchen Sie nach Tresor, und wählen Sie die Aufgabe Azure Key Vault aus.
Wählen Sie das Azure-Abonnement und dann Autorisieren aus. Wählen Sie im Dropdownmenü Ihren Schlüsseltresor und dann Hinzufügen aus, um die Aufgabe Ihrer YAML-Pipeline hinzuzufügen.
Hinweis
Das Feature Geheimnisse für ganze Aufträge verfügbar machen wird in Azure DevOps Server 2019 und 2020 nicht unterstützt.
Ihre YAML-Datei sollte folgendermaßen aussehen:
trigger: - main pool: vmImage: ubuntu-latest steps: - task: AzureKeyVault@2 inputs: azureSubscription: 'Your-Azure-Subscription' KeyVaultName: 'Your-Key-Vault-Name' SecretsFilter: '*' RunAsPreJob: false - task: CmdLine@2 inputs: script: 'echo $(Your-Secret-Name) > secret.txt' - task: CopyFiles@2 inputs: Contents: secret.txt targetFolder: '$(Build.ArtifactStagingDirectory)' - task: PublishBuildArtifacts@1 inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: 'drop' publishLocation: 'Container'
Speichern oder schieben Sie Ihre Pipeline noch nicht in die Warteschlange. Zuerst müssen wir unserer Pipeline die richtigen Berechtigungen für den Zugriff auf Azure Key Vault erteilen. Lassen Sie die Registerkarte Ihres Browsers geöffnet. Wir fahren mit den verbleibenden Schritte fort, sobald wir die Schlüsseltresorberechtigungen eingerichtet haben.
Einrichten von Azure Key Vault-Zugriffsrichtlinien
Um auf unsere Azure-Key Vault-Instanz zugreifen zu können, müssen wir zunächst einen Dienstprinzipal einrichten, um Zugriff auf Azure Pipelines zu gewähren. Befolgen Sie diese Anleitung, um Ihren Dienstprinzipal zu erstellen, und fahren Sie dann mit den nächsten Schritten in diesem Abschnitt fort.
Navigieren Sie zum Azure-Portal.
Verwenden Sie die Suchleiste, um nach dem Schlüsseltresor zu suchen, den Sie zuvor erstellt haben.
Klicken Sie unter Einstellungen auf Zugriffsrichtlinien.
Wählen Sie Zugriffsrichtlinie hinzufügen aus, um eine neue Richtlinie hinzuzufügen.
Wählen Sie für die Geheimnisberechtigungen die Optionen Get und List aus.
Wählen Sie die Option zum Auswählen eines Dienstprinzipals aus, und suchen Sie nach dem Dienstprinzipal, den Sie am Anfang dieses Abschnitts erstellt haben. Ein Sicherheitsprinzipal ist ein Objekt, das Benutzer, Gruppen, Dienste oder Anwendungen darstellt, die Zugriff auf Azure-Ressourcen anfordern.
Wählen Sie Hinzufügen aus, um die Zugriffsrichtlinie zu erstellen, und wählen Sie dann Speichern aus, wenn Sie fertig sind.
Hinweis
Azure Key Vaults, die die rollenbasierte Zugriffssteuerung von Azure (Azure RBAC) verwenden, werden nicht unterstützt.
Ausführen und Überprüfen der Pipeline
Kehren Sie zur vorherigen Registerkarte zurück, bei der wir aufgehört haben.
Wählen Sie Speichern und dann erneut Speichern aus, um Ihre Änderungen zu committen und die Pipeline auszulösen. Möglicherweise werden Sie aufgefordert, der Pipeline den Zugriff auf Azure-Ressourcen zu gewähren. Wählen Sie bei entsprechender Aufforderung Zulassen aus. Sie müssen Ihre Pipeline nur einmal genehmigen.
Wählen Sie die CmdLine-Aufgabe aus, um die Protokolle anzuzeigen.
Kehren Sie zur Pipelinezusammenfassung zurück, und wählen Sie das veröffentlichte Artefakt aus.
Wählen Sie das secret.txt-Artefakt aus, um es zu öffnen.
Die Textdatei sollte unser Geheimnis enthalten: mysecretpassword.
Warnung
Dieses Tutorial dient nur zu Lernzwecken. Informationen zu bewährten Sicherheitsmethoden und zum sicheren Arbeiten mit Geheimnissen finden Sie unter Verwalten von Geheimnissen in Ihren Server-Apps mit Azure Key Vault.
Bereinigen von Ressourcen
Führen Sie die folgenden Schritte aus, um die von Ihnen erstellten Ressourcen zu löschen:
Wenn Sie eine neue Organisation zum Hosten Ihres Projekts erstellt haben, lesen Sie den Artikel Löschen Ihrer Organisation oder Löschen Ihres Projekts durch.
Alle Azure-Ressourcen, die während dieses Tutorials erstellt wurden, werden unter einer einzelnen Ressourcengruppe, PipelinesKeyVaultResourceGroup, gehostet. Führen Sie die folgenden Befehle aus, um die Ressourcengruppe und alle dazugehörigen Ressourcen zu löschen.
az group delete --name PipelinesKeyVaultResourceGroup
Häufig gestellte Fragen
F: Ich erhalte die folgende Fehlermeldung: „Der Benutzer oder die Gruppe verfügt nicht über die Berechtigung für die Geheimnisliste.“ Was soll ich tun?
A: Wenn ein Fehler auftritt, der angibt, dass der Benutzer oder die Gruppe nicht über die Berechtigung für die Geheimnisliste für einen Schlüsseltresor verfügt, führen Sie die folgenden Befehle aus, um Ihre Anwendung für den Zugriff auf den Schlüssel oder das Geheimnis im Azure Key Vault zu autorisieren.
$ErrorActionPreference="Stop";
$Credential = Get-Credential;
Connect-AzAccount -SubscriptionId <YOUR_SUBSCRIPTION_ID> -Credential $Credential;
$spn=(Get-AzureRmADServicePrincipal -SPN <YOUR_SERVICE_PRINCIPAL_ID>);
$spnObjectId=$spn.Id;
Set-AzureRmKeyVaultAccessPolicy -VaultName key-vault-tutorial -ObjectId $spnObjectId -PermissionsToSecrets get,list;
Nächste Schritte
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für