SEC11-BP06 Software programmgesteuert bereitstellen - Säule „Sicherheit“

SEC11-BP06 Software programmgesteuert bereitstellen

Führen Sie Bereitstellungen von Software möglichst programmgesteuert durch. Dieser Ansatz verringert die Wahrscheinlichkeit eines Bereitstellungsfehlers oder der Einführung eines unerwarteten Problem aufgrund eines menschlichen Fehlers.

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

Wenn Sie sich nicht auf Menschen verlassen müssen, um Software bereitzustellen, bietet dies den Vorteil, dass Sie mehr Vertrauen darin haben 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, um in unterschiedlichen Umgebungen zu funktionieren. Mithilfe der Prinzipien der 12-Faktor-Anwendungsentwicklung, insbesondere dem Externalisieren der Konfiguration, können Sie denselben Code ohne Änderungen in mehreren Umgebungen bereitstellen. Das kryptografische Signieren von Softwarepaketen ist eine gute Möglichkeit, zu verifizieren, 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 manuell in die Produktion bereitstellen.

  • Manuelle Änderungen an Software durchführen, um unterschiedliche Umgebungen zu bedienen.

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.

  • Die Möglichkeit, kryptografisch zu beweisen, 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 den fortlaufenden menschlichen Zugriff über Umgebungen zu verhindern und CI/CD-Tools zum Durchführen von Bereitstellungen zu verwenden. Entwerfen Sie Ihre Anwendungen so, dass umgebungsspezifische Konfigurationsdaten von externen Quellen gewonnen werden, wie AWS Systems Manager Parameter Store. 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 Canaries, 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

  • Entwicklen Sie gut definierte CI/CD-Pipelines, um den Bereitstellungsprozess zu optimieren.

  • Die Verwendung von AWS CodeBuild und AWS Code Pipeline, um die CI/CD-Funktionalität zu bieten, vereinfacht das Integrieren von Sicherheitstesten in Ihre Pipelines.

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

  • Verifzieren Sie, dass es keinen fortlaufenden Zugriff durch Personen auf Umgebungen gibt, in welchen Produktions-Workloads ausgeführt werden.

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

  • Ziehen Sie eine Bereitstellung mithilfe eines Blau/Grün-Modells in Betracht.

  • Setzen Sie Canaries ein, 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: