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
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:
-
Accelerate deployments on AWS with effective governance
(Beschleunigen von Bereitstellungen auf AWS mit effektiver Governance) -
Automating safe, hands-off deployments
(Automatisierung sicherer, vollautomatischer Bereitstellungen) -
Code signing using AWS Certificate Manager Private CA and AWS Key Management Service asymmetric keys
(Codesignatur mithilfe von AWS Certificate Manager Private CA und asymmetrischen Schlüsseln von AWS Key Management Service) -
Code Signing, a Trust and Integrity Control for AWS Lambda
(Codesignatur, eine Vertrauens- und Integritätskontrolle für AWS Lambda)
Zugehörige Videos:
-
Hands-off: Automating continuous delivery pipelines at Amazon
(Vollständige Automatisierung: Automatisieren der Pipelines für kontinuierliche Bereitstellung bei Amazon)
Zugehörige Beispiele:
-
Blue/Green deployments with AWS Fargate
(Blau/Grün-Bereitstellungen mit AWS Fargate)