SEC11-BP05 Services für Pakete und Abhängigkeiten zentralisieren
Stellen Sie zentralisierte Services für Entwicklungsteams bereit, sodass sie Softwarepakete und andere Abhängigkeiten erhalten können. Dadurch können Pakete validiert werden, bevor sie in die von Ihnen geschriebene Software integriert werden, und es kann eine Datenquelle für die Analyse der Software bereitgestellt werden, die in Ihrer Organisation verwendet wird.
Gewünschtes Ergebnis: Software besteht aus einem Set aus anderen Softwarepaketen zusätzlich zum Code, der geschrieben wird. Dadurch wird die Implementierung von häufig verwendeten Funktionen vereinfacht, wie einem JSON-Parser oder einer Verschlüsselungsbibliothek. Das logische Zentralisieren der Quellen und Abhängigkeiten für diese Pakete bietet einen Mechanismus für Sicherheitsteams, damit diese die Eigenschaften der Pakete validieren können, bevor sie verwendet werden. Dieser Ansatz verringert auch das Risiko, dass ein unerwartetes Problem durch die Änderung eines vorhandenen Pakets verursacht wird oder dass Entwicklungsteams beliebige Pakete direkt aus dem Internet einbeziehen. Verwenden Sie diesen Ansatz zusammen mit manuellem und automatischem Testen, um das Vertrauen in die Qualität der entwickelten Software zu steigern.
Typische Anti-Muster:
-
Pakete aus beliebigen Repositorys im Internet abrufen.
-
Neue Pakete nicht testen, bevor sie für Entwickler verfügbar gemacht werden.
Vorteile der Nutzung dieser bewährten Methode:
-
Besseres Verständnis darüber, welche Pakete in der entwickelten Software verwendet werden.
-
Benachrichtigung von Workload-Teams, wenn ein Paket aktualisiert werden muss – basierend auf dem Verständnis davon, wer was verwendet.
-
Geringeres Risiko, dass ein Paket mit Problemen in Ihrer Software enthalten ist.
Risikostufe, wenn diese bewährte Methode nicht eingeführt wird: mittel
Implementierungsleitfaden
Stellen Sie zentralisierte Services für Pakete und Abhängigkeiten so bereit, dass sie von Entwicklern einfach verwendet werden können. Zentralisierte Services können logisch zentral sein, anstatt als monolithisches System implementiert zu werden. Mit diesem Ansatz können Sie Services anbieten, die die Anforderungen Ihrer Entwickler erfüllen. Sie sollten eine effiziente Möglichkeit zum Hinzufügen von Paketen zum Repository implementieren, wenn Updates erfolgen oder neue Anforderungen aufkommen. Mithilfe von AWS-Services wie AWS CodeArtifact
Implementierungsschritte:
Implementieren Sie einen logisch zentralisierten Repository-Service, der in allen Umgebungen, in welchen die Software entwickelt wird, verfügbar ist.
Fügen Sie den Zugriff auf das Repository als Teil des AWS-Konto-Vergabeprozesses hinzu.
Entwickeln Sie eine Automatisierung zum Testen von Paketen, bevor diese in einem Repository veröffentlicht werden.
Pflegen Sie Metriken der am häufigsten verwendeten Pakete, Sprachen und Teams mit den häufigsten Änderungen.
-
Stellen Sie Entwicklungsteams einen automatisierten Mechanismus bereit, damit sie neue Pakete anfordern und Feedback abgeben können.
-
Scannen Sie regelmäßig Pakete in Ihrem Repository, um die Auswirkungen von kürzlich entdecken Problemen zu identifizieren.
Ressourcen
Zugehörige bewährte Methoden:
Zugehörige Dokumente:
-
Accelerate deployments on AWS with effective governance
(Beschleunigen von Bereitstellungen auf AWS mit effektiver Governance) -
Tighten your package security with CodeArtifact Package Origin Control toolkit
(Erhöhen Ihrer Paketsicherheit mit dem Toolkit von CodeArtifact Package Origin Control) -
Detecting security issues in logging with Amazon CodeGuru Reviewer
(Erkennen von Sicherheitsproblemen beim Protokollieren mit Amazon CodeGuru Reviewer) -
Supply chain Levels for Software Artifacts (SLSA)
(Lieferkettenebenen für Software-Artefakte)
Zugehörige Videos:
-
Proactive security: Considerations and approaches
(Proaktive Sicherheit: Überlegungen und Ansätze) -
The AWS Philosophy of Security (re:Invent 2017)
(Die AWS-Philosophie zu Sicherheit) -
When security, safety, and urgency all matter: Handling Log4Shell
(Wenn Sicherheit und Dringlichkeit von Bedeutung sind: Umgang mit Log4Shell)
Zugehörige Beispiele:
-
Multi Region Package Publishing Pipeline
(Mehrregions-Veröffentlichungs-Pipeline für Pakete) (GitHub) -
Publishing Node.js Modules on AWS CodeArtifact using AWS CodePipeline
(Node.js-Module auf AWS CodeArtifact mithilfe von AWS CodePipeline veröffentlichen) (GitHub) -
AWS CDK Java CodeArtifact Pipeline Sample
(Beispiel für eine Java-CodeArtifact-Pipeline) (GitHub) -
Distribute private .NET NuGet packages with AWS CodeArtifact
(Verteilen von privaten .NET-NuGet-Pakete mit AWS CodeArtifact) (GitHub)