Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Azure Key Vault ist ein Clouddienst, der Entwicklern hilft, vertrauliche Informationen wie API-Schlüssel, Anmeldeinformationen und Zertifikate sicher zu speichern und zu verwalten. Key Vault unterstützt zwei Arten von Containern: Tresore und verwaltete HSM-Pools (Hardware Security Module, Hardwaresicherheitsmodul). Tresore können sowohl Software als auch HSM-gesicherte Schlüssel, geheime Schlüssel und Zertifikate speichern. Verwaltete HSM-Pools unterstützen ausschließlich HSM-gesicherte Schlüssel.
In diesem Artikel erfahren Sie, wie Sie einen Schlüsseltresor erstellen, einen geheimen Schlüssel hinzufügen, Zugriffsrichtlinien konfigurieren und diesen geheimen Schlüssel dann in Azure Pipelines verwenden. In diesem Tutorial wird ein Schlüsseltresor mit öffentlichem Netzwerkzugriff verwendet. Wenn Sie über Ihre Pipeline auf einen privaten Schlüsseltresor zugreifen müssen, lesen Sie Zugriff auf einen privaten Key Vault aus Ihrer Pipeline. Informationen zum Verknüpfen von Key Vault Geheimnissen mit Variablengruppen finden Sie unter Verknüpfen einer Variablengruppe mit Geheimnissen in Azure Key Vault.
Voraussetzungen
| Kategorie | Anforderungen |
|---|---|
| Azure DevOps | – Eine Azure DevOps-Organisation. – Ein Azure DevOps-Projekt. |
| Azure | Ein Azure-Abonnement. |
Code abrufen
Wenn Sie kein eigenes Projekt haben, importieren Sie das folgende Beispiel-Repository in Ihr Azure Repository:
Melden Sie sich bei Ihrer Azure DevOps-Organisation an, und wechseln Sie dann zu Ihrem Projekt.
Wählen Sie Repos und dann Importieren aus. Geben Sie die folgende Repository-URL ein, und wählen Sie dann "Importieren" aus.
https://github.com/MicrosoftDocs/pipelines-dotnet-core
Erstellen eines Schlüsseltresors
Führen Sie die folgenden Schritte aus, um einen neuen Key Vault in Azure mithilfe des Azure CLI zu erstellen:
Wechseln Sie zum portal Azure, und wählen Sie dann in der oberen rechten Ecke Azure Cloud Shell aus.
Wenn Ihr Konto mehreren Azure-Abonnements zugeordnet ist, legen Sie Ihr Standardabonnement fest.
az account set --subscription <YOUR_SUBSCRIPTION_NAME_OR_ID>Legen Sie eine Azure-Standardregion fest. Führen Sie
az account list-locationsaus, um eine Liste der verfügbaren Regionen anzuzeigen.az config set defaults.location=<YOUR_REGION>Eine neue Ressourcengruppe erstellen.
az group create --name <YOUR_RESOURCE_GROUP_NAME>Erstellen Sie einen neuen Schlüsseltresor.
az keyvault create \ --name <YOUR_KEY_VAULT_NAME> \ --resource-group <YOUR_RESOURCE_GROUP_NAME>Hinzufügen eines Geheimnisses zu Ihrem Key Vault.
az keyvault secret set \ --name <YOUR_SECRET_NAME> \ --value <YOUR_ACTUAL_SECRET> \ --vault-name <YOUR_KEY_VAULT_NAME>
Authentifizierung einrichten
Nachdem Sie Ihren Schlüsseltresor erstellt haben, besteht der nächste Schritt darin, die Authentifizierung einzurichten. Wählen Sie verwaltete Identität oder Dienstprinzipal aus, und folgen Sie den Anweisungen zum Konfigurieren der Authentifizierung.
Erstellen einer benutzerseitig zugewiesenen verwalteten Identität
Wechseln Sie zum portal Azure, und suchen Sie dann in der Suchleiste nach Managed Identities.
Wählen Sie "Erstellen" aus, und geben Sie die folgenden Informationen an:
- Abonnement: Wählen Sie Ihr Azure-Abonnement im Dropdownmenü aus.
- Ressourcengruppe: Wählen Sie eine vorhandene Ressourcengruppe aus, oder erstellen Sie eine neue.
- Region: Wählen Sie die Region aus, in der die verwaltete Identität erstellt wird.
- Name: Geben Sie einen Namen für die vom Benutzer zugewiesene verwaltete Identität ein.
Wählen Sie "Überprüfen" und "Erstellen" und dann " Erstellen" aus, um die Bereitstellung zu starten.
Nachdem die Bereitstellung abgeschlossen ist, wählen Sie "Zur Ressource wechseln" aus, und kopieren Sie die Werte "Abonnement-ID " und "Client-ID ". Sie benötigen diese Werte in späteren Schritten.
Wählen Sie unter "Einstellungen" die Option "Eigenschaften" aus, und kopieren Sie den Mandanten-ID-Wert Ihrer verwalteten Identität für die spätere Verwendung.
Zugriffsrichtlinien für den Key Vault einrichten
Wechseln Sie zum portal Azure, 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 "Liste" .
Wählen Sie Weiteraus. Fügen Sie die Client-ID der verwalteten Identität, die Sie zuvor erstellt haben, in die Suchleiste ein, und wählen Sie dann die verwaltete Identität aus.
Wählen Sie Weiter und dann erneut Weiter aus.
Überprüfen Sie die Zugriffsrichtliniendetails, und wählen Sie dann "Erstellen " aus, um die Richtlinie anzuwenden.
Erstellen einer Dienstverbindung
Melden Sie sich bei Azure DevOps an, und wechseln Sie dann zu Ihrem Projekt.
Wählen Sie Projekteinstellungen>Dienstverbindungen>Neue Dienstverbindung aus.
Wählen Sie Azure Resource Manager und dann Weiter aus.
Wählen Sie für den Identitätstypverwaltete Identität aus.
Geben Sie unter Schritt 1: Details zur verwalteten Identität die folgenden Informationen an:
- 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 der Dropdownliste aus.
Geben Sie für Schritt 2: Azure-Bereich die folgenden Informationen an:
- Bereichsebene für die Dienstverbindung: Abonnement auswählen.
- Abonnement für Dienstverbindung: Wählen Sie das Abonnement aus, auf das die verwaltete Identität zugreift.
- Ressourcengruppe für Dienstverbindung: (Optional) Geben Sie eine Ressourcengruppe an, um den Zugriff der verwalteten Identität auf eine Ressourcengruppe einzuschränken.
Geben Sie für Schritt 3: Dienstverbindungsdetails die folgenden Informationen an:
- Dienstverbindungsname: Geben Sie einen Namen für die Dienstverbindung ein.
- Dienstverwaltungsreferenz: (Optional) Schließen Sie Kontextinformationen aus einer ITSM-Datenbank ein.
- Beschreibung: (Optional) Geben Sie eine Beschreibung ein.
Unter "Sicherheit" ermöglicht die Option "Zugriffsberechtigung für alle Pipelines erteilen" allen Pipelines die Verwendung dieser Dienstverbindung. Diese Option wird nicht empfohlen. Autorisieren Sie stattdessen jede Pipeline einzeln, um die Dienstverbindung zu verwenden.
Wählen Sie Speichern aus, um die Dienstverbindung zu überprüfen und zu erstellen.
Zugriff auf wichtige Tresorgeheimnisse aus Ihrer Pipeline
Warnung
Dieses Tutorial dient nur zu Lernzwecken. Bewährte Methoden und Anleitungen zur sicheren Arbeit mit geheimen Schlüsseln finden Sie unter Verwalten von geheimen Schlüsseln in Ihren Server-Apps mit Azure Key Vault.
Melden Sie sich bei Azure DevOps an, und wechseln Sie dann zu Ihrem Projekt.
Wählen Sie Pipelines>Neue Pipeline aus.
Wählen Sie Azure Repos Git (YAML), und wählen Sie dann Ihr Repository.
Wählen Sie die Vorlage Startpipeline aus.
Die Standardpipeline enthält Beispiel-Echobefehle. Sie benötigen diese Befehle nicht, damit Sie sie entfernen können.
Fügen Sie Ihrer Pipeline die Azure Key Vault-Aufgabe hinzu. Ersetzen Sie die Platzhalter durch den Namen der Dienstverbindung, die Sie zuvor erstellt haben, und Ihren Kea Vault Namen. Ihre YAML-Datei sollte dem folgenden Beispiel ähneln:
trigger: - main pool: vmImage: ubuntu-latest steps: - task: AzureKeyVault@2 displayName: Azure Key Vault inputs: azureSubscription: 'SERVICE_CONNECTION_NAME' KeyVaultName: 'KEY_VAULT_NAME' SecretsFilter: '*' RunAsPreJob: falseFügen Sie die folgenden Aufgaben hinzu, um den geheimen Schlüssel zu kopieren und zu veröffentlichen. Dieses Beispiel dient nur zu Demonstrationszwecken. Verwenden Sie es nicht in einer Produktionsumgebung.
trigger: - main pool: vmImage: ubuntu-latest steps: - task: AzureKeyVault@2 displayName: Azure Key Vault inputs: azureSubscription: 'SERVICE_CONNECTION_NAME' KeyVaultName: 'KEY_VAULT_NAME' SecretsFilter: '*' RunAsPreJob: false - task: CmdLine@2 displayName: Create file inputs: script: 'echo $(SECRET_NAME) > secret.txt' - task: CopyFiles@2 displayName: Copy file inputs: Contents: secret.txt targetFolder: '$(Build.ArtifactStagingDirectory)' - task: PublishBuildArtifacts@1 displayName: Publish Artifact inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: 'drop' publishLocation: 'Container'Wählen Sie Speichern und ausführen, und wählen Sie es dann noch einmal, um Ihre Änderungen zu bestätigen und die Pipeline zu starten. Wenn Sie dazu aufgefordert werden, wählen Sie "Zulassen ", um die Pipelinezugriff auf Azure-Ressourcen zu gewähren.
Nachdem die Pipeline gestartet wurde, wählen Sie die CmdLine-Aufgabe aus, um die Protokolle anzuzeigen.
Wenn die Pipelineausführung abgeschlossen ist, kehren Sie zur Pipeline-Zusammenfassung zurück und wählen Sie das veröffentlichte Artefakt aus.
Wählen Sie drop>secret.txt aus, um die Datei herunterzuladen.
Öffnen Sie die heruntergeladene Textdatei. Er sollte den geheimen Schlüssel enthalten, der aus Ihrem Schlüsseltresor abgerufen wurde.
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, erfahren Sie , wie Sie Ihre Organisation löschen. Löschen Sie andernfalls Das Projekt.
Alle azure-Ressourcen, die während dieses Lernprogramms erstellt wurden, werden in einer einzelnen Ressourcengruppe gehostet. Führen Sie den folgenden Befehl aus, um die Ressourcengruppe und alle zugehörigen Ressourcen zu löschen.
az group delete --name <YOUR_RESOURCE_GROUP_NAME>
Problembehandlung
Fehler: "Der Benutzer oder die Gruppe verfügt nicht über die Berechtigung "Geheime Liste"
Dieser Fehler tritt auf, wenn der von Ihrer Pipeline verwendete Dienstprinzipal oder die verwaltete Identität nicht berechtigt ist, Geheimnisse im Key Vault auflisten zu können. Um dieses Problem zu beheben, stellen Sie sicher, dass die Identität über die Berechtigungen " Abrufen " und "Auflisten " für geheime Schlüssel verfügt. Führen Sie die folgenden Befehle aus, um dem Dienstprinzipal die erforderlichen Berechtigungen zu erteilen:
az login
az account set --subscription <YOUR_SUBSCRIPTION_ID>
$spnObjectId = az ad sp show --id <YOUR_SERVICE_PRINCIPAL_ID>
az keyvault set-policy --name <YOUR_KEY_VAULT_NAME> --object-id $spnObjectId --secret-permissions get list