Nutzen Sie die Third Party Software-Artefakte in Ihrer Lieferkette nur, wenn sie durch gut definierte Prozesse überprüft und als sicher für die Verwendung gekennzeichnet sind. Dieses Muster ist ein operatives Sidecar zum Entwicklungsprozess. Der Verbraucher dieses Musters ruft diesen Prozess auf, um die Verwendung von Software zu überprüfen und zu blockieren, die potenziell Sicherheitsrisiken auslösen könnte.
Kontext und Problem
Cloudlösungen verwenden häufig Software von Drittanbietern, die aus externen Quellen abgerufen wird. Open-Source-Binärdateien, öffentliche Containerimages, Anbieter-Betriebssystemimages sind einige Beispiele für diese Art von Artefakten. Alle solchen externen Artefakte müssen als nicht vertrauenswürdig behandelt werden.
In einem typischen Workflow wird das Artefakt aus einem Speicher außerhalb des Lösungsbereichs abgerufen und dann in die Bereitstellungspipeline integriert. Es gibt einige mögliche Probleme bei diesem Ansatz. Die Quelle ist möglicherweise nicht vertrauenswürdig, das Artefakt stellt möglicherweise ein Sicherheitsrisiko dar, oder es ist für die Entwicklerumgebung auf eine andere Weise nicht geeignet.
Wenn diese Probleme nicht gelöst werden, können die Garantien für Datenintegrität und Vertraulichkeit der Lösung beeinträchtigt werden oder durch Inkompatibilität mit anderen Komponenten zu Instabilität führen.
Einige dieser Sicherheitsprobleme können vermieden werden, indem Sie jedem Artefakt Überprüfungen hinzufügen.
Lösung
Führen Sie einen Prozess aus, der die Software auf Sicherheit überprüft, bevor Sie sie in Ihre Workload einführen. Während des Prozesses wird jedes Artefakt einer gründlichen operativen Prüfung unterzogen, bei der es auf bestimmte Bedingungen hin überprüft wird. Erst nachdem das Artefakt diese Bedingungen erfüllt, kennzeichnet der Prozess es als vertrauenswürdig.
Der Quarantäneprozess ist eine Sicherheitsmaßnahme, die aus einer Reihe von Prüfpunkten besteht, die verwendet werden, bevor ein Artefakt verbraucht wird. Diese Sicherheitsprüfpunkte stellen sicher, dass ein Artefakt von einem nicht vertrauenswürdigen Status zu einem vertrauenswürdigen Status wechselt.
Es ist wichtig zu beachten, dass der Quarantäneprozess die Zusammensetzung des Artefakts nicht ändert. Der Prozess ist unabhängig vom Softwareentwicklungszyklus und wird bei Bedarf von Verbrauchern aufgerufen. Als Verbraucher des Artefakts blockieren Sie die Verwendung von Artefakten, bis sie die Quarantäne passiert haben.
Hier ist ein typischer Quarantäneworkflow:
Der Verbraucher signalisiert seine Absicht, gibt die Eingabequelle des Artefakts an und blockiert seine Verwendung.
Der Quarantäneprozess überprüft den Ursprung der Anforderung und ruft die Artefakte aus dem angegebenen Speicher ab.
Ein benutzerdefinierter Überprüfungsprozess wird als Teil der Quarantäne durchgeführt, einschließlich der Überprüfung der Eingabeeinschränkungen und der Überprüfung der Attribute, der Quelle und des Typs anhand etablierter Standards.
Einige dieser Sicherheitsüberprüfungen können sicherheitsrelevante Überprüfungen, Schadsoftwareerkennung usw. für jedes übermittelte Artefakt sein.
Die tatsächlichen Prüfungen hängen vom Artefakt ab. Die Auswertung eines Betriebssystemimages unterscheidet sich beispielsweise von der Auswertung eines NuGet-Pakets.
Wenn der Überprüfungsprozess erfolgreich abgeschlossen wird, wird das Artefakt in einem sicheren Speicher mit klaren Anmerkungen veröffentlicht. Andernfalls steht es dem Verbraucher weiterhin nicht zur Verfügung.
Der Veröffentlichungsprozess kann einen kumulativen Bericht enthalten, der den Nachweis der Überprüfung und die Kritikalität jeder Prüfung zeigt. Fügen Sie in den Bericht eine Gültigkeitsdauer ein, nach der der Bericht ungültig sein sollte und das Artefakt als unsicher gilt.
Der Prozess markiert das Ende der Quarantäne, indem er ein Ereignis mit Statusinformationen und einem Bericht signalisiert.
Basierend auf den Informationen können die Verbraucher Maßnahmen ergreifen, um das vertrauenswürdige Artefakt zu verwenden. Diese Aktionen liegen außerhalb des Quarantänemusters.
Probleme und Überlegungen
Stellen Sie als Team, das Drittanbieterartefakte nutzt, sicher, dass diese von einer vertrauenswürdigen Quelle abgerufen werden. Ihre Wahl muss mit den von der Organisation genehmigten Standards für Artefakte, die von Drittanbietern bezogen werden, übereinstimmen. Die Anbieter müssen in der Lage sein, die Sicherheitsanforderungen Ihrer Workload (und Ihrer Organisation) zu erfüllen. Stellen Sie beispielsweise sicher, dass der Plan des Anbieters zur verantwortungsvollen Offenlegung den Sicherheitsanforderungen Ihres Unternehmens entspricht.
Erstellen Sie eine Segmentierung zwischen Ressourcen, die vertrauenswürdige und nicht vertrauenswürdige Artefakte speichern. Verwenden Sie Identitäts- und Netzwerksteuerelemente, um den Zugriff auf autorisierte Benutzer einzuschränken.
Wählen Sie eine zuverlässige Methode zum Aufrufen des Quarantäneprozesses aus. Stellen Sie sicher, dass das Artefakt nicht versehentlich verwendet wird, bis es als vertrauenswürdig gekennzeichnet wurde. Die Signalisierung sollte automatisiert werden. Beispielsweise Aufgaben im Zusammenhang mit der Benachrichtigung der zuständigen Parteien, wenn ein Artefakt in die Entwicklerumgebung aufgenommen wird, Übertragung von Änderungen an einem GitHub-Repository, Hinzufügen eines Images zu einer privaten Registry usw.
Eine Alternative zur Implementierung eines Quarantänemusters besteht darin, es auszulagern. Es gibt Quarantänepraktiker, die sich auf die Validierung öffentlicher Vermögenswerte als Geschäftsmodell spezialisiert haben. Bewerten Sie sowohl die finanziellen als auch die Betriebskosten der Musterimplementierung im Vergleich zum Outsourcing der Zuständigkeiten. Wenn Ihre Sicherheitsanforderungen mehr Kontrolle benötigen, wird die Implementierung Ihres eigenen Prozesses empfohlen.
Automatisieren Sie die Prozesse zur Artefaktaufnahme und -veröffentlichung. Da Validierungsaufgaben Zeit in Anspruch nehmen können, muss der Automatisierungsprozess bis zum Abschluss aller Aufgaben in der Lage sein.
Das Muster dient als erste vorläufige Gelegenheitsüberprüfung. Das erfolgreiche Bestehen der Quarantäne stellt nicht sicher, dass das Artefakt auf unbestimmte Zeit vertrauenswürdig bleibt. Das Artefakt muss weiterhin einer kontinuierlichen Überprüfung, Pipeline-Validierung und anderen routinemäßigen Sicherheitsprüfungen unterzogen werden, die als letzte Möglichkeit zur Validierung vor der Freigabe dienen.
Das Muster kann von zentralen Teams einer Organisation oder einem einzelnen Workload-Team implementiert werden. Wenn es viele Instanzen oder Variationen des Quarantäneprozesses gibt, sollten diese Vorgänge von der Organisation standardisiert und zentralisiert werden. In diesem Fall teilen Workload-Teams den Prozess und profitieren von der Abladung der Prozessverwaltung.
Verwendung dieses Musters
Verwenden Sie dieses Muster in folgenden Fällen:
Die Workload integriert ein Artefakt, das außerhalb des Zuständigkeitsbereichs des Workload-Teams entwickelt wurde. Häufige Beispiele sind:
Ein Open Container Initiative-(OCI-)Artefakt aus öffentlichen Registrys wie DockerHub, GitHub-Containerregistrierung, Microsoft Container Registry
Eine Softwarebibliothek oder ein Paket aus öffentlichen Quellen, z. B. nuGet Gallery, Python Package Index, Apache Maven-Repository
Ein externes Infrastructure-as-Code-(IaC-)Paket wie Terraform-Module, Community Chef Cookbooks, Azure Verified Modules
Ein vom Hersteller bereitgestelltes Betriebssystemimage
Das Workload-Team betrachtet das Artefakt als ein Risiko, das es zu mindern gilt. Das Team versteht die negativen Folgen der Integration kompromittierter Artefakte und des Werts der Quarantäne bei der Sicherstellung einer vertrauenswürdigen Umgebung.
Das Team verfügt über ein klares und gemeinsames Verständnis der Gültigkeitsprüfungsregeln, die auf ein Artefakt angewendet werden sollen. Ohne Konsens ist das Muster möglicherweise nicht wirksam.
Wenn beispielsweise jedes Mal, wenn ein Betriebssystemimage in Quarantäne aufgenommen wird, eine andere Gruppe von Überprüfungen angewendet wird, wird der allgemeine Überprüfungsprozess für Betriebssystemimages inkonsistent.
Dieses Muster ist in folgenden Fällen möglicherweise nicht geeignet:
Das Softwareartefakt wird vom Workload-Team oder einem vertrauenswürdigen Partnerteam erstellt.
Das Risiko, das Artefakt nicht zu überprüfen, ist weniger kostspielig als die Kosten für den Aufbau und die Pflege des Quarantäneverfahrens.
Workloadentwurf
Ein Architekt und das Workload-Tam sollten bewerten, wie das Quarantänemuster als Teil der DevSecOps-Verfahren der Workload verwendet werden kann. Die zugrunde liegenden Prinzipien werden in den Säulen des Azure Well-Architected Framework behandelt.
Säule | So unterstützt dieses Muster die Säulenziele |
---|---|
Sicherheitsdesignentscheidungen tragen dazu bei, die Vertraulichkeit, Integrität und Verfügbarkeit der Daten und Systeme Ihrer Workload sicherzustellen. | Die erste Aufgabe der Sicherheitsvalidierung wird durch das Quarantänemuster erfüllt. Die Überprüfung eines externen Artefakts wird in einer segmentierten Umgebung durchgeführt, bevor sie vom Entwicklungsprozess genutzt wird. - SE:02 Gesicherter Entwicklungslebenszyklus - SE:11 Prüfung und Validierung |
Operational Excellence unterstützt die Workloadqualität durch standardisierte Prozesse und Teamzusammenhalt. | Das Quarantänemuster unterstützt sichere Bereitstellungsmethoden (SDP), indem sichergestellt wird, dass kompromittierte Artefakte nicht von der Workload verbraucht werden, was zu Sicherheitsverletzungen bei progressiven Expositionsbereitstellungen führen kann. - OE:03 Praktiken der Softwareentwicklung - OE:11 Prüfung und Validierung |
Berücksichtigen Sie wie bei jeder Designentscheidung alle Kompromisse im Hinblick auf die Ziele der anderen Säulen, die mit diesem Muster eingeführt werden könnten.
Beispiel
In diesem Beispiel wird der Lösungsworkflow auf ein Szenario angewendet, in dem das Workload-Team OCI-Artefakte aus öffentlichen Registrys in eine Azure Container Registry (ACR)-Instanz integrieren möchte, die dem Workload-Team gehört. Das Team behandelt diese Instanz als vertrauenswürdigen Artefaktspeicher.
Die Workloadumgebung verwendet Azure Policy for Kubernetes, um die Governance zu erzwingen. Sie schränkt ein, dass Container nur von ihrer vertrauenswürdigen Registry-Instanz abgerufen werden. Darüber hinaus sind Azure Monitor-Warnungen so eingerichtet, dass beliebige Importe in diese Registry aus unerwarteten Quellen erkannt werden.
Eine Anforderung für ein externes Image wird vom Workload-Team über eine benutzerdefinierte Anwendung erstellt, die in Azure Web-Apps gehostet wird. Die Anwendung sammelt die erforderlichen Informationen nur von autorisierten Benutzern.
Sicherheitsprüfpunkt: Die Identität des Anforderers, die Zielcontainerregistrierung und die angeforderte Imagequelle werden überprüft.
Die Anforderung wird in Azure Cosmos DB gespeichert.
Sicherheitsprüfpunkt: Ein Überwachungspfad wird in der Datenbank verwaltet, wobei die Herkunft und die Überprüfungen des Images nachverfolgt werden. Dieser Weg wird auch für historische Berichte verwendet.
Die Anforderung wird von einem Workflow-Orchestrator verarbeitet, bei dem es sich um eine dauerhafte Azure Function handelt. Der Orchestrator verwendet einen Scatter-Gather-Ansatz zum Ausführen aller Überprüfungen.
Sicherheitsprüfpunkt: Der Orchestrator verfügt über eine verwaltete Identität mit gerade genügend Zugriff, um die Überprüfungsaufgaben auszuführen.
Der Orchestrator sendet eine Anforderung, das Image in die Azure Container Registry (ACR) in Quarantäne zu importieren, die als nicht vertrauenswürdiger Speicher gilt.
Der Importvorgang in der Quarantäneregistrierung ruft das Image aus dem nicht vertrauenswürdigen externen Repository ab. Wenn der Import erfolgreich ist, verfügt die Quarantäneregistrierung über eine lokale Kopie des Images, um Überprüfungen auszuführen.
Sicherheitsprüfpunkt: Die Quarantäneregistrierung schützt während des Überprüfungsprozesses vor Manipulationen und Workload-Verbrauch.
Der Orchestrator führt alle Überprüfungsaufgaben für die lokale Kopie des Images aus. Zu den Aufgaben gehören Prüfungen wie die Erkennung von CVE-Schwachstellen (Common Vulnerabilities and Exposures), die Bewertung von Software-Stücklisten (SBOM), die Erkennung von Malware, die Signierung von Images und andere.
Der Orchestrator entscheidet über die Art der Prüfungen, die Reihenfolge der Ausführung und den Zeitpunkt der Ausführung. In diesem Beispiel wird Azure Container Instance als Aufgabenausführer verwendet, und die Ergebnisse befinden sich in der Cosmos DB-Überwachungsdatenbank. Alle Vorgänge können erhebliche Zeit in Anspruch nehmen.
Sicherheitsprüfpunkt: Dieser Schritt ist der Kern des Quarantäneprozesses, der alle Überprüfungen durchführt. Die Art der Überprüfungen kann benutzerdefinierte, Open Source-Lösungen oder vom Hersteller erworbene Lösungen sein.
Der Orchestrator trifft eine Entscheidung. Wenn das Image alle Überprüfungen besteht, wird das Ereignis in der Überwachungsdatenbank angegeben, das Image wird an die vertrauenswürdige Registry gesendet, und die lokale Kopie wird aus der Quarantäneregistrierung gelöscht. Andernfalls wird das Image aus der Quarantäneregistrierung gelöscht, um die unbeabsichtigte Verwendung zu verhindern.
Sicherheitsprüfpunkt: Der Orchestrator verwaltet die Segmentierung zwischen vertrauenswürdigen und nicht vertrauenswürdigen Ressourcenspeicherorten.
Hinweis
Anstatt die Entscheidung vom Orchestrator treffen zu lassen, kann diese Aufgabe auch vom Workload-Team übernommen werden. Bei dieser Option veröffentlicht der Orchestrator die Validierungsergebnisse über eine API und behält das Image in der Quarantäneregistrierung für einen bestimmten Zeitraum bei.
Das Workload-Team trifft die Entscheidung nach der Überprüfung der Ergebnisse. Wenn die Ergebnisse ihrer Risikotoleranz entsprechen, rufen sie das Image aus dem Quarantäne-Repository in ihre Containerinstanz ab. Dieses Abrufmodell ist praktischer, wenn dieses Muster verwendet wird, um mehrere Workload-Teams mit unterschiedlichen Sicherheitsrisikotoleranzen zu unterstützen.
Alle Containerregistrierungen werden von Microsoft Defender for Containers abgedeckt, der kontinuierlich nach neu gefundenen Problemen sucht. Diese Probleme werden im Microsoft Defender-Sicherheitsrisikomanagement angezeigt.
Nächste Schritte
Die folgenden Informationen sind unter Umständen bei der Implementierung dieses Musters relevant:
Empfehlungen zum Sichern eines Entwicklungslebenszyklus bietet Anleitungen zur Verwendung vertrauenswürdiger Codeeinheiten über alle Phasen des Entwicklungslebenszyklus hinweg.
Bewährte Methoden für eine sichere Software-Lieferkette werden empfohlen, wenn Sie NuGet-Abhängigkeiten in Ihrer Anwendung haben.
Die Dokumentation zu Azure Artifacts ist eine Bibliothek mit Informationen zum Verwalten von Softwarepaketen mit Azure Artifacts.