SEC11-BP06 Programmatisches Bereitstellen von Software - AWS Well-Architected Framework

SEC11-BP06 Programmatisches Bereitstellen von Software

Führen Sie Bereitstellungen von Software nach Möglichkeit programmatisch durch. Dieser Ansatz verringert die Wahrscheinlichkeit eines Bereitstellungsfehlers oder der Einführung eines unerwarteten Problems aufgrund eines menschlichen Fehlers.

Gewünschtes Ergebnis: Menschen von Daten fernzuhalten ist eines der Prinzipien für sicheres Entwickeln in der AWS Cloud. Dieses Prinzip beinhaltet, wie Sie Ihre Software bereitstellen.

Wenn Sie sich bei der Softwarebereitstellung nicht auf Menschen verlassen, hat das den Vorteil, dass Sie stärker darauf vertrauen können, dass das, was getestet wird, auch das ist, was bereitgestellt wird, und dass die Bereitstellung jedes Mal konsistent durchgeführt wird. Die Software sollte nicht geändert werden müssen, damit sie in unterschiedlichen Umgebungen funktioniert. Mithilfe der Prinzipien der 12-Faktor-Anwendungsentwicklung, insbesondere dem Externalisieren der Konfiguration, können Sie den gleichen Code ohne Änderungen in mehreren Umgebungen bereitstellen. Durch kryptografisches Signieren von Softwarepaketen können Sie sich vergewissern, dass sich zwischen den Umgebungen nichts geändert hat. Das Gesamtergebnis dieses Ansatzes ist die Risikoverringerung bei Ihrem Änderungsprozess und die Verbesserung der Konsistenz von Softwareveröffentlichungen.

Typische Anti-Muster:

  • Software wird manuell in der Produktion bereitgestellt.

  • An Software werden manuell Änderungen vorgenommen, um unterschiedlichen Umgebungen gerecht zu werden.

Vorteile der Nutzung dieser bewährten Methode:

  • Gesteigertes Vertrauen in den Prozess der Softwareveröffentlichung

  • Verringertes Risiko, dass eine fehlgeschlagene Änderung die Geschäftsfunktionen beeinträchtigt

  • Erhöhte Veröffentlichungsfrequenz aufgrund eines geringeren Änderungsrisikos

  • Automatische Rollback-Funktion für unerwartete Ereignisse während der Bereitstellung

  • Möglichkeit, kryptografisch nachzuweisen, dass es sich bei der getesteten Software um die bereitgestellte Software handelt

Risikostufe, wenn diese bewährte Methode nicht eingeführt wird: Hoch

Implementierungsleitfaden

Entwickeln Sie Ihre AWS-Konto-Struktur, um dauerhaften menschlichen Zugriff aus Umgebungen zu beseitigen und CI/CD-Tools zur Durchführung von Bereitstellungen zu verwenden. Entwerfen Sie Ihre Anwendungen so, dass umgebungsspezifische Konfigurationsdaten aus externen Quellen wie AWS Systems Manager Parameter Store abgerufen werden. Signieren Sie Pakete, nachdem sie getestet wurden, und validieren Sie diese Signaturen während der Bereitstellung. Konfigurieren Sie Ihre CI/CD-Pipelines, um den Anwendungscode zu übertragen, und verwenden Sie Canarys, um die erfolgreiche Bereitstellung zu bestätigen. Verwenden Sie Tools wie AWS CloudFormation oder AWS CDK, um Ihre Infrastruktur zu definieren, und verwenden Sie dann AWS CodeBuild und AWS CodePipeline, um CI/CD-Vorgänge durchzuführen.

Implementierungsschritte

  • Entwickeln Sie klar definierte CI/CD-Pipelines, um den Bereitstellungsprozess zu optimieren.

  • Die Verwendung von AWS CodeBuild und AWS Code Pipeline zur Bereitstellung von CI/CD-Funktionen vereinfacht die Integration von Sicherheitstests in Ihre Pipelines.

  • Befolgen Sie die Anweisungen für die Trennung von Umgebungen im Whitepaper Organisation Ihrer AWS-Umgebung mit mehreren Konten.

  • Verifizieren Sie, dass es keinen dauerhaften menschlichen Zugriff auf Umgebungen gibt, in denen Produktions-Workloads ausgeführt werden.

  • Entwickeln Sie Ihre Anwendungen so, dass sie die Externalisierung von Konfigurationsdaten unterstützen.

  • Ziehen Sie die Verwendung eines Modells für die Blau/Grün-Bereitstellung in Betracht.

  • Implementieren Sie Canarys, um die erfolgreiche Bereitstellung der Software zu validieren.

  • Verwenden Sie kryptografische Tools wie AWS Signer oder AWS Key Management Service (AWS KMS), um die Softwarepakete, die Sie bereitstellen, zu signieren und zu verifizieren.

Ressourcen

Zugehörige bewährte Methoden:

Zugehörige Dokumente:

Zugehörige Videos:

Zugehörige Beispiele: