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

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

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: Sie testen die Version Ihres Workloads, die Sie auch bereitstellen, und die Bereitstellung erfolgt stets konsistent. Sie externalisieren die Konfiguration Ihres Workloads, wodurch die Bereitstellung in verschiedenen Umgebungen ohne Änderungen leichter möglich wird. Sie nutzen das kryptografische Signieren Ihrer Softwarepakete, um sicherzustellen, dass sich zwischen den Umgebungen nichts ändert.

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

Um eine robuste und zuverlässige Anwendungsinfrastruktur aufrechtzuerhalten, sollten Sie sichere und automatisierte Bereitstellungsverfahren einführen. Dies beinhaltet das Entfernen von permanentem menschlichem Zugriff aus Produktionsumgebungen, die Verwendung von CI/CD-Tools für Bereitstellungen und die Externalisierung von umgebungsspezifischen Konfigurationsdaten. Mit diesem Ansatz können Sie die Sicherheit erhöhen, das Risiko menschlicher Fehler verringern und den Bereitstellungsprozess optimieren.

Sie können Ihre AWS-Kontostruktur so aufbauen, dass ein permanenter menschlicher Zugriff auf Produktionsumgebungen nicht mehr möglich ist. Durch diese Vorgehensweise wird das Risiko unbefugter oder versehentlicher Änderungen minimiert und so die Integrität Ihrer Produktionssysteme verbessert. Anstatt direkten menschlichen Zugriff zu gewähren, können Sie CI/CD-Tools wie AWS CodeBuildund AWS CodePipeline für Bereitstellungen verwenden. Mit diesen Services können Sie die Erstellungs-, Test- und Bereitstellungsprozesse automatisieren. Es sind dann weniger manuelle Eingriffe notwendig und es kann eine größere Konsistenz erzielt werden.

Um die Sicherheit und Rückverfolgbarkeit weiter zu verbessern, können Sie Ihre Anwendungspakete nach dem Testen signieren und diese Signaturen während der Bereitstellung validieren. Verwenden Sie hierfür kryptografische Tools wie AWS Signer oder AWS Key Management Service (AWS KMS). Durch das Signieren und Überprüfen von Paketen können Sie sicherstellen, dass Sie nur autorisierten und validierten Code in Ihren Umgebungen bereitstellen.

Darüber hinaus kann Ihr Team Ihren Workload so gestalten, dass umgebungsspezifische Konfigurationsdaten aus einer externen Quelle wie AWS Systems Manager Parameter Store abgerufen werden. Bei dieser Vorgehensweise wird der Anwendungscode von den Konfigurationsdaten getrennt, sodass Sie Konfigurationen unabhängig verwalten und aktualisieren können, ohne den Anwendungscode selbst ändern zu müssen.

Um die Bereitstellung und Verwaltung der Infrastruktur zu optimieren, sollten Sie die Verwendung von Infrastructure as Code (IaC)-Tools wie AWS CloudFormation oder AWS CDK in Betracht ziehen. Sie können diese Tools verwenden, um Ihre Infrastruktur als Code zu definieren und so eine bessere Konsistenz und Wiederholbarkeit von Bereitstellungen in verschiedenen Umgebungen zu erreichen.

Erwägen Sie Canary-Bereitstellungen, um die erfolgreiche Bereitstellung Ihrer Software zu validieren. Bei Canary-Bereitstellungen werden Änderungen an einer Teilmenge der Instances oder Benutzer vorgenommen, bevor sie in der gesamten Produktionsumgebung bereitgestellt werden. Sie können dann die Auswirkungen der Änderungen überwachen und bei Bedarf ein Rollback durchführen, wodurch das Risiko weit verbreiteter Probleme minimiert wird.

Folgen Sie den Empfehlungen im Whitepaper Ihre AWS-Umgebung mit mehreren Konten organisieren. Dieses Whitepaper enthält Anleitungen zum Aufteilen von Umgebungen (z. B. Entwicklung, Staging und Produktion) auf verschiedene AWS-Konten, wodurch eine noch bessere Sicherheit und Isolierung erzielt werden kann.

Implementierungsschritte

  1. Richten Sie die AWS-Kontostruktur ein:

    • Folgen Sie den Anweisungen im Whitepaper Ihre AWS-Umgebung mit mehreren Konten organisieren, um separate AWS-Konten für verschiedene Umgebungen zu erstellen (z. B. Entwicklung, Staging und Produktion).

    • Konfigurieren Sie die entsprechenden Zugriffskontrollen und Berechtigungen für jedes Konto, um den direkten menschlichen Zugriff auf Produktionsumgebungen einzuschränken.

  2. Implementieren Sie eine CI/CD-Pipeline:

    • Richten Sie eine CI/CD-Pipeline mithilfe von Services wie AWS CodeBuild und AWS CodePipeline ein.

    • Konfigurieren Sie die Pipeline so, dass Ihr Anwendungscode automatisch erstellt, getestet und in den jeweiligen Umgebungen bereitgestellt wird.

    • Integrieren Sie Code-Repositorys in die CI/CD-Pipeline für die Versions- und Codeverwaltung.

  3. Signieren und verifizieren Sie Anwendungspakete:

    • Verwenden Sie AWS Signer oder AWS Key Management Service (AWS KMS), um Ihre Anwendungspakete zu signieren, nachdem sie getestet und validiert wurden.

    • Konfigurieren Sie den Bereitstellungsprozess so, dass die Signaturen der Anwendungspakete überprüft werden, bevor Sie diese in den Zielumgebungen bereitstellen.

  4. Externalisieren Sie Konfigurationsdaten:

    • Speichern Sie umgebungsspezifische Konfigurationsdaten in AWS Systems Manager Parameter Store.

    • Ändern Sie Ihren Anwendungscode, um während der Bereitstellung oder Laufzeit Konfigurationsdaten aus dem Parameter Store abzurufen.

  5. Implementieren Sie Infrastructure as Code (IaC):

    • Verwenden Sie IaC-Tools wie AWS CloudFormation oder AWS CDK, um Ihre Infrastruktur als Code zu definieren und zu verwalten.

    • Erstellen Sie CloudFormation-Vorlagen oder CDK-Skripts, um die erforderlichen AWS-Ressourcen für Ihre Anwendung bereitzustellen und zu konfigurieren.

    • Integrieren Sie IaC in Ihre CI/CD-Pipeline, um Infrastrukturänderungen zusammen mit Änderungen des Anwendungscodes automatisch bereitzustellen.

  6. Implementieren Sie Canary-Bereitstellungen:

    • Konfigurieren Sie Ihren Bereitstellungsprozess so, dass er Canary-Bereitstellungen unterstützt, bei denen Änderungen auf eine Teilmenge der Instances oder Benutzer angewendet werden, bevor Sie sie in der gesamten Produktionsumgebung bereitstellen.

    • Verwenden Sie Services wie AWS CodeDeploy oder AWS ECS, um Canary-Bereitstellungen zu verwalten und die Auswirkungen von Änderungen zu überwachen.

    • Implementieren Sie Rollback-Mechanismen, um zur vorherigen stabilen Version zurückzukehren, falls während der Canary-Bereitstellung Probleme festgestellt werden.

  7. Überwachen und prüfen Sie den Prozess:

    • Richten Sie Überwachungs- und Protokollierungsmechanismen ein, um Bereitstellungen, die Anwendungsleistung und Infrastrukturänderungen zu verfolgen.

    • Verwenden Sie Services wie Amazon CloudWatch und AWS CloudTrail, um Protokolle und Metriken zu sammeln und zu analysieren.

    • Führen Sie Audits und Compliance-Prüfungen ein, um die Einhaltung bewährter Methoden für die Sicherheit und regulatorischer Anforderungen zu überprüfen.

  8. Führen Sie kontinuierliche Verbesserungen ein:

    • Überprüfen und aktualisieren Sie Ihre Bereitstellungspraktiken regelmäßig und berücksichtigen Sie dabei Feedback und Erfahrungen aus früheren Bereitstellungen.

    • Automatisieren Sie den Bereitstellungsprozess so weit wie möglich, um manuelle Eingriffe und potenzielle menschliche Fehler zu reduzieren.

    • Arbeiten Sie mit funktionsübergreifenden Teams (beispielsweise den Betriebs- oder Sicherheitsteams) zusammen, um die Bereitstellungspraktiken abzustimmen und kontinuierlich zu verbessern.

Wenn Sie diese Schritte befolgen, können Sie sichere und automatisierte Bereitstellungspraktiken in Ihrer AWS-Umgebung implementieren und so die Sicherheit erhöhen, das Risiko menschlicher Fehler verringern und den Bereitstellungsprozess optimieren.

Ressourcen

Zugehörige bewährte Methoden:

Zugehörige Dokumente:

Zugehörige Videos:

Zugehörige Beispiele: