Entfernen von Nur-Text-Geheimnissen
Die Offenlegung vertraulicher Informationen wie Kennwörter, API-Schlüssel oder Datenbankverbindungszeichenfolgen kann zu schwerwiegenden Sicherheitsrisiken wie Datenverletzungen, unbefugtem Zugriff auf Systeme oder sogar finanziellen Verlusten führen. Daher muss unbedingt sichergestellt werden, dass Nur-Text-Geheimnisse nicht unsicher gespeichert oder übertragen werden.
Das Entfernen von Nur-Text-Geheimnissen und das Ersetzen durch Variablen oder Token ist eine bewährte Methode, die es Teams ermöglicht, ihre vertraulichen Informationen sicher zu speichern und zu verwalten, während sie weiterhin in ihren Pipelines oder Anwendungen verwendet werden können.
Mithilfe sicherer Methoden wie FileTransform, Azure Key Vault oder anderer Tools können Teams gewährleisten, dass Pipelines und Anwendungen sicher und zuverlässig erstellt und bereitgestellt werden, während ihre vertraulichen Informationen vor neugierigen Blicken geschützt sind.
Es gibt viele Möglichkeiten, mit Azure Pipelines für jede Technologie und jeden Anwendungstyp eine sichere Anwendung zu erstellen.
In dieser Lerneinheit erfahren Sie, wie Sie Azure Pipelines verwenden, um eine sichere .NET-Anwendung zu erstellen. Sie erstellen Token für Datenbankverbindungen oder Variablen, erstellen eine YAML-Pipeline und entfernen Nur-Text-Geheimnisse.
Voraussetzungen
- Eine Azure DevOps-Organisation.
- Eine .NET-Anwendung oder eShopOnWeb aus Schritt 1.
- Visual Studio Community, VS Code oder eine andere IDE, die .NET Core unterstützt.
- Ein Azure-Abonnement.
Importieren von eShopOnWeb in Ihr Azure DevOps-Repository
Das Repository ist wie folgt organisiert:
- Der Ordner „.ado“ enthält Azure DevOps-YAML-Pipelines.
- Der Ordner „.devcontainer“ enthält ein Containersetup für die Entwicklung mithilfe von Containern (entweder lokal in VS Code oder über GitHub Codespaces).
- Der Ordner „.Azure“ enthält eine Bicep- und ARM-Vorlageninfrastruktur als Codevorlagen.
- Der Ordner „src“ enthält die .NET 6-Website, die in den Labszenarien verwendet wird.
Führen Sie die folgenden Schritte aus, um das Repository in Ihre Azure DevOps-Organisation zu importieren:
Wählen Sie in Ihrer Azure DevOps-Organisation das Projekt aus, in das Sie die eShopOnWeb-Anwendung importieren möchten.
Öffnen Sie die Registerkarte „Repositorys“, und klicken Sie auf „Repository importieren“.
Klicken Sie auf der Seite „Repository importieren“ auf den Link „Repository importieren“ (unter dem Seitentitel).
Fügen Sie die folgenden Informationen hinzu: „Repositorytyp: Git“, „Klon-URL: https://github.com/MicrosoftLearning/eShopOnWeb.git„, „Name: eShopOnWeb“
Klicken Sie auf „Importieren“, und warten Sie, bis Ihr Repository bereit ist.
Hinweis
Weitere Informationen zum Importieren eines Git-Repositorys finden Sie unter Importieren eines Git-Repositorys.
Erstellen von Tokens für Datenbankverbindungen oder Variablen
Der erste Schritt beim Erstellen einer sicheren Anwendung besteht darin, alle Geheimnisse aufzulisten, die Sie ersetzen möchten, z. B. Datenbankverbindungen oder Variablen mit vertraulichen Informationen, die sicher gespeichert sind und in Ihrem Code oder Ihrer Pipeline referenziert werden.
Öffnen Sie Ihre .NET-Anwendung in VS Code oder Visual Studio.
Suchen Sie die Geheimnisse, die Sie ersetzen möchten. Beispielsweise finden Sie die Datenbankverbindungszeichenfolge in der Datei
appsettings.json
im Webprojekt im Ordner „src“.Fügen Sie der JSON-Datei ihre Datenbankverbindungszeichenfolge oder andere vertrauliche Informationen im folgenden Format hinzu:
{ "ConnectionStrings": { "CatalogConnection": "Server=(localdb)\\mssqllocaldb;Integrated Security=true;Initial Catalog=Microsoft.eShopOnWeb.CatalogDb;", "IdentityConnection": "Server=(localdb)\\mssqllocaldb;Integrated Security=true;Initial Catalog=Microsoft.eShopOnWeb.Identity;" }, "ReleaseVersion": "1.0" }
Ersetzen Sie die vertraulichen Informationen durch Platzhalter.
{ "ConnectionStrings": { "CatalogConnection": "CatalogConnectionToken", "IdentityConnection": "IdentityConnectionToken" }, "ReleaseVersion": "ReleaseVersionToken" }
Wichtig
Sie können die tatsächlichen Informationen oder ein Token wie
ConnectionToken
oderReleaseVersion
als Wert verwenden. Dieser wird dann in der Pipeline ersetzt.Speichern Sie die Änderungen an der JSON-Datei, und übertragen Sie Ihre Änderungen per Commit oder Push in das Repository.
Erstellen einer neuen Variablengruppe
Der nächste Schritt besteht darin, eine neue Variablengruppe in Azure DevOps zu erstellen, um die Token zu speichern, die Sie in Schritt 1 erstellt haben.
- Öffnen Sie Azure DevOps, und wechseln Sie zu Ihrem Projekt.
- Klicken Sie auf „Bibliothek“ und dann auf „Variablengruppen“.
- Klicken Sie auf „Variablengruppe erstellen“, und fügen Sie die Variablen hinzu, die Sie sicher speichern und in Ihrer Datei
appsettings.json
ersetzen möchten:- Name: eShopOnWeb
- Variables:
- CatalogConnectionToken: Server=MYSERVER;Integrated Security=true;Initial Catalog=Microsoft.eShopOnWeb.CatalogDb;
- IdentityConnectionToken: Server=MYSERVER;Integrated Security=true;Initial Catalog=Microsoft.eShopOnWeb.Identity;
- ReleaseVersionToken: 1.1
- Klicken Sie unbedingt auf das Symbol „Sperren“, um die Variable zu sichern.
- Klicken Sie auf „Speichern“, um die Variablengruppe zu erstellen.
Erstellen einer YAML-Pipeline und Importieren der Variablengruppe
Der nächste Schritt besteht darin, eine YAML-Pipeline in Azure Pipelines zu erstellen oder vorhandene Definitionen zu verwenden. Diese Pipeline erstellt Ihre Anwendung und verweist auf die Token, die Sie in Schritt 1 erstellt haben.
Öffnen Sie Azure DevOps, und wechseln Sie zu Ihrem Projekt.
Klicken Sie auf „Pipelines“ und dann auf „Neue Pipeline“.
Wählen Sie Azure Repos Git als Quelle des Codes aus, und wählen Sie das Repository aus, das die Anwendung enthält. Sie können das in Schritt 1 importierte Repository „eShopOnWeb“ auswählen.
Wählen Sie „Vorhandene Azure Pipelines-YAML-Datei“ aus, wählen Sie im Ordner
.ado
die vorhandene Dateieshoponweb-ci.yml
aus, und klicken Sie auf „Weiter“.Importieren Sie im YAML-Editor die in Schritt 2 erstellte Variablengruppe, indem Sie am Anfang der Datei den folgenden Code hinzufügen:
variables: - group: eShopOnWeb - name: ConnectionStrings.CatalogConnection value: '$(CatalogConnectionToken)' - name: ConnectionStrings.IdentityConnection value: '$(IdentityConnectionToken)' - name: ReleaseVersion value: '$(ReleaseVersionToken)'
Wichtig
Sie müssen die richtigen Variablennamen beginnend mit dem Stammknotennamen angeben, in diesem Beispiel
ConnectionStrings.CatalogConnection
undConnectionStrings.IdentityConnection
. Sie finden die richtigen Namen in der Dateiappsettings.json
.Fügen Sie den Schritten den Code der FileTransform-Aufgabe hinzu:
variables: - group: eShopOnWeb - task: FileTransform@1 inputs: folderPath: '$(System.DefaultWorkingDirectory)/src/web' fileType: 'json' targetFiles: 'appsettings.json'
Klicken Sie auf „Speichern“, um die Pipelinedatei mit der neuen Aufgabe zu speichern, und führen Sie einen Commit aus.
Ausführen der Releasepipeline
Der letzte Schritt besteht darin, Ihre Releasepipeline auszuführen, um Ihre Anwendung zu erstellen und die Token durch die Werte zu ersetzen, die Sie in der Variablengruppe gespeichert haben.
Klicken Sie auf der Registerkarte „Pipelines“ auf „Pipelines“, und klicken Sie dann auf die Pipeline, die Sie in Schritt 3 erstellt haben.
Klicken Sie auf „Pipeline ausführen“, und klicken Sie dann auf „Ausführen“.
Sobald die Pipeline abgeschlossen ist, sehen Sie, dass die Token durch die Werte ersetzt wurden, die Sie in der Variablengruppe in der Datei
appsettings.json
gespeichert haben. Überprüfen Sie die Pipelineprotokollergebnisse, um zu sehen, dass die Token ersetzt wurden:Wichtig
In diesem Beispiel wurde die Variable
CatalogConnectionToken
nicht verschlüsselt, damit der Wert im Protokoll angezeigt wird. In einem realen Szenario müssen Sie die Variable verschlüsseln, um zu vermeiden, dass der Wert im Protokoll offengelegt wird.Öffnen Sie die Artefakte aus Ihren Pipelineausführungsergebnissen, und laden Sie die Datei
Web.zip
herunter.Entzippen Sie die Datei, und öffnen Sie die Datei
appsettings.json
. Sie können sehen, dass die Token durch die Werte ersetzt wurden, die Sie in der Variablengruppe gespeichert haben.
Weitere Informationen zur Dateitransformation und zur Variablenersetzung in YAML-Pipelines finden Sie unter: