In ADDF integrierte Sicherheitsfeatures - AWS Präskriptive Leitlinien

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.

In ADDF integrierte Sicherheitsfeatures

Das Autonomous Driving Data Framework (ADDF) verfügt über verschiedene eingebaute Sicherheitsfeatures. Standardmäßig sollen diese Features Ihnen bei der Einrichtung eines sicheren Frameworks helfen und Ihrer Organisation dabei unterstützen, die allgemeinen Sicherheitsanforderungen von Unternehmen zu erfüllen.

Im Folgenden sind die integrierten Sicherheitsfeatures aufgeführt:

Geringste Berechtigung für ADDF-Modulcode

Geringste Berechtigung ist die bewährte Methode, die für die Ausführung einer Aufgabe erforderlichen Mindestberechtigungen zu gewähren. Weitere Informationen finden Sie unter Anwendung von geringsten Berechtigungen. Von ADDF bereitgestellte Module folgen in ihrem Code und den bereitgestellten Ressourcen strikt dem Prinzip der geringsten Berechtigung, und zwar wie folgt:

  • Alle für ein ADDF-Modul erstellten AWS Identity and Access Management (IAM)-Richtlinien haben die für den Anwendungsfall erforderlichen Mindestberechtigungen. 

  • AWS-Services sind nach dem Prinzip der geringsten Berechtigung konfiguriert und eingesetzt. Von ADDF bereitgestellte Module verwenden nur die Services und Service-Features, die für den jeweiligen Anwendungsfall erforderlich sind.

Infrastructure as Code

ADDF ist als Framework darauf ausgelegt, ADDF-Module als Infrastructure as Code (IaC) bereitzustellen. IaC macht manuelle Bereitstellungsprozesse überflüssig und hilft, Fehler und Fehlkonfigurationen zu vermeiden, die sich aus manuellen Prozessen ergeben können. 

ADDF wurde für die Orchestrierung und Bereitstellung von Modulen mithilfe eines beliebigen gängigen IaC-Frameworks entwickelt. Dies enthält, ist aber nicht beschränkt auf: 

Sie können verschiedene IaC-Frameworks verwenden, um verschiedene Module zu schreiben, und dann ADDF verwenden, um sie bereitzustellen.

Das Standard-IaC-Framework, das von ADDF-Modulen verwendet wird, ist AWS CDK. AWS CDK ist eine objektorientierte Abstraktion auf hoher Ebene, die Sie verwenden können, um AWS-Ressourcen zwingend zu definieren. AWS CDK erzwingt bereits standardmäßig bewährte Methoden Sicherheit für verschiedene Services und Szenarien. Durch die Verwendung von AWS CDK wird das Risiko von Sicherheitsfehlkonfigurationen reduziert.

Automatisierte Sicherheitsprüfungen für IaC

Das Open-Source-Hilfsprogramm cdk-nag (GitHub) ist in ADDF integriert. Dieses Tool überprüft automatisch ADDF-Module, die auf AWS CDK basieren für die Einhaltung der allgemeinen und sicherheitstechnischen bewährten Methoden. Das Hilfsprogramm cdk-nag verwendet Regeln und Regelpakete, um Code zu erkennen und zu melden, der gegen bewährte Methoden verstößt. Weitere Informationen zu den Regeln und eine umfassende Liste finden Sie unter cdk-nag-Regeln (GitHub).

Benutzerdefinierte Richtlinie mit den geringsten Berechtigungen für die AWS CDK-Bereitstellungs-Rolle

ADDF nutzt in großem Umfang AWS CDK v2. Es ist erforderlich, dass Sie alle ADDF AWS-Konten zu AWS CDK bootstrappen. Weitere Informationen finden Sie unter Bootstrappen (AWS CDK-Dokumentation).

Standardmäßig weist AWS CDK die permissive AWS-verwaltete Richtlinie AdministratorAccess der AWS CDK-Bereitstellungsrolle zu, die in Bootstrap-Konten erstellt wurde. Der vollständige Name dieser Rolle lautet cdk-[CDK_QUALIFIER]-cfn-exec-role-[AWS_ACCOUNT_ID]-[REGION]. AWS CDK verwendet diese Rolle, um Ressourcen im Bootstrapped AWS-Konto bereitzustellen als Teil des AWS CDK-Bereitstellungsprozesses.

Abhängig von den Sicherheitsanforderungen Ihrer Organisation ist die AdministratorAccess-Richtlinie ist möglicherweise zu freizügig. Im Rahmen des AWS CDK-Bootstrap-Prozesses können Sie die Richtlinien und Berechtigungen an Ihre Bedürfnisse anpassen. Sie können die Richtlinie ändern, indem Sie das Konto mit einer neu definierten Richtlinie neu bootstrappen, indem Sie den --cloudformation-execution-policies-Parameter verwenden. Weitere Informationen finden Sie unter Bootstrapping anpassen (AWS CDK-Dokumentation).

Anmerkung

Obwohl dieses Sicherheitsfeature nicht spezifisch für ADDF ist, wird es in diesem Abschnitt aufgeführt, da es die allgemeine Sicherheit Ihrer ADDF-Bereitstellung erhöhen kann.

Richtlinie mit den geringsten Berechtigungen für die Deployspec-Datei des Moduls

Jedes Modul enthält eine Datei mit Bereitstellungsspezifikationen namens deployspec.yaml. Diese Datei definiert die Bereitstellungsanweisungen für das Modul. CodeSeeder verwendet sie, um das definierte Modul im Zielkonto unter Verwendung von AWS CodeBuild bereitzustellen. CodeSeeder weist CodeBuild eine Standard-Servicerolle zu, um die Ressourcen bereitzustellen, wie in der Datei mit den Bereitstellungsspezifikationen beschrieben. Diese Servicerolle ist nach dem Prinzip der geringsten Berechtigung konzipiert. Sie enthält alle erforderlichen Berechtigungen für die Bereitstellung von AWS CDK-Anwendungen, da alle von ADDF bereitgestellten Module als AWS CDK-Anwendungen erstellt werden.

Wenn Sie jedoch Stage-Befehle außerhalb von AWS CDK ausführen müssen, müssen Sie eine benutzerdefinierte IAM-Richtlinie erstellen, anstatt die Standard-Servicerolle für CodeBuild zu verwenden. Wenn Sie beispielsweise ein anderes IaC-Bereitstellungsframework verwenden als AWS CDK, wie z. B. Terraform, müssen Sie eine IAM-Richtlinie erstellen, die ausreichende Berechtigungen gewährt, damit dieses spezielle Framework funktioniert. Ein anderes Szenario, das eine spezielle IAM-Richtlinie erfordert, ist, wenn Sie AWS Command Line Interface (AWS CLI)-Aufrufe zu anderen AWS-Services in die install-, pre_build-, build-, oder post_build-Stage-Befehle einbeziehen. Sie benötigen zum Beispiel eine benutzerdefinierte Richtlinie, wenn Ihr Modul einen Amazon Simple Storage Service (Amazon S3)-Befehl zum Hochladen von Dateien in ein S3-Bucket enthält. Die benutzerdefinierte IAM-Richtlinie bietet eine detaillierte Kontrolle für jeden AWS-Befehl außerhalb der AWS CDK-Bereitstellung. Ein Beispiel für eine benutzerdefinierte IAM-Richtlinie finden Sie unter ModuleStack (SeedFarmer-Dokumentation). Wenn Sie eine benutzerdefinierte IAM-Richtlinie für Ihr ADDF-Modul erstellen, stellen Sie sicher, dass Sie geringste Berechtigungen anwenden.

Datenverschlüsselung

ADDF speichert und verarbeitet potenziell sensible Daten. Um diese Daten zu schützen, verschlüsseln die von SeedFarmer, CodeSeeder und von ADDF bereitgestellten Module Daten im Ruhezustand und bei der Übertragung für alle verwendeten AWS-Services (sofern nicht ausdrücklich anders angegeben für Module im demo-only-Ordner).

Speicherung von Anmeldeinformationen mit Secrets Manager

ADDF verwaltet verschiedene Geheimnisse für verschiedene Services wie Docker Hub, JupyterHub und Amazon Redshift. ADDF verwendet AWS Secrets Manager, um alle ADDF-bezogenen Geheimnisse zu speichern. Dies hilft Ihnen, sensible Daten aus dem Quellcode zu entfernen.

Secrets-Manager-Geheimnisse werden nur in den Zielkonten gespeichert, soweit dies für die ordnungsgemäße Funktion dieses Kontos erforderlich ist. Standardmäßig enthält das Toolchain-Konto keine Geheimnisse.

Sicherheitsüberprüfungen von SeedFarmer und CodeSeeder

SeedFarmer und CodeSeeder (GitHub-Repositorien) werden für die Bereitstellung von ADDF und seinen ADDF-Modulen verwendet. Diese Open-Source-Projekte durchlaufen denselben regelmäßigen AWS-internen Sicherheitsüberprüfungsprozess wie ADDF, wie in ADDF-Prozess der Sicherheitsüberprüfung beschrieben.

Unterstützung der Berechtigungsgrenzen für die AWS CodeBuild-Rolle für CodeSeeder

IAM-Berechtigungsgrenzen sind ein allgemeiner Sicherheitsmechanismus, der die maximalen Berechtigungen definiert, die eine auf einer Identität basierende Richtlinie einer IAM-Entität erlauben kann. SeedFarmer und CodeSeeder unterstützen für jedes Zielkonto einen Anhang der IAM-Berechtigungsgrenze. Die Berechtigungsgrenze begrenzt die maximalen Berechtigungen aller Servicerollen, die von CodeBuild verwendet werden, wenn CodeSeeder Module bereitstellt. Die IAM-Berechtigungsgrenzen müssen außerhalb von ADDF von einem Sicherheitsteam erstellt werden. Anhänge für IAM-Berechtigungsgrenzen werden als Attribut in der ADDF-Bereitstellungsmanifestdatei akzeptiert, deployment.yaml. Weitere Informationen finden Sie unter Unterstützung von Berechtigungsgrenzen (SeedFarmer-Dokumentation).

Der Workflow ist wie folgt:

  1. Ihr Sicherheitsteam definiert und erstellt eine IAM-Berechtigungsgrenze entsprechend Ihren Sicherheitsanforderungen. Die IAM-Berechtigungsgrenze muss in jedem ADDF-AWS-Konto individuell erstellt werden. Die Ausgabe ist eine Liste von Berechtigungsgrenzen-Richtlinien für Amazon-Ressourcennamen (ARN).

  2. Das Sicherheitsteam teilt die ARN-Liste der Richtlinien mit Ihrem ADDF-Entwicklerteam.

  3. Das ADDF-Entwicklerteam integriert die ARN-Liste der Richtlinien in die Manifestdatei. Ein Beispiel für diese Integration finden Sie unter sample-permissionboundary.yaml (GitHub) und Bereitstellungsmanifest (SeedFarmer-Dokumentation).

  4. Nach erfolgreicher Bereitstellung wird die Berechtigungsgrenze allen Servicerollen zugewiesen, die CodeBuild zur Bereitstellung von Modulen verwendet.

  5. Das Sicherheitsteam überwacht, ob die Berechtigungsgrenzen wie gewünscht angewendet werden.

AWS-Architektur mit mehreren Konten

Wie in der Sicherheitssäule des AWS Well-Architected Framework definiert, wird es als bewährte Methode angesehen, Ressourcen und Workloads in mehrere AWS-Konten aufzuteilen, basierend auf den Anforderungen Ihrer Organisation. Das liegt daran, dass ein AWS-Konto als Isolationsgrenze fungiert. Weitere Informationen finden Sie unter AWS-Konto-Kontenverwaltung und Trennung. Die Umsetzung dieses Konzepts wird als Architektur mit mehreren Konten bezeichnet. Eine richtig konzipierte AWS-Multi-Konto-Architektur bietet eine Kategorisierung des Workloads und reduziert den Umfang der Auswirkungen im Falle eines Sicherheitsverstoßes im Vergleich zu einer Einzel-Konto-Architektur.

ADDF unterstützt nativ AWS-Multi-Konto-Architekturen. Sie können Ihre ADDF-Module auf beliebig viele AWS-Konten verteilen, je nach den Anforderungen Ihrer Organisation in Bezug auf Sicherheit und Aufgabentrennung. Sie können ADDF in einem einzigen AWS-Konto bereitstellen und die Funktionen der Toolchain und des Zielkontos kombinieren. Alternativ können Sie individuelle Zielkonten für ADDF-Module oder Modulgruppen erstellen.

Die einzige Einschränkung, die Sie berücksichtigen müssen, besteht darin, dass ein ADDF-Modul jeweils die kleinste Bereitstellungseinheit für jedes AWS-Konto darstellt.

Für Produktionsumgebungen wird empfohlen, eine Architektur mit mehreren Konten zu verwenden, die aus einem Toolchain-Konto und mindestens einem Zielkonto besteht. Weitere Informationen finden Sie unter ADDF-Architektur.

Berechtigungen mit den geringsten Berechtigungen für Bereitstellungen mit mehreren Konten

Wenn Sie eine Architektur mit mehreren Konten verwenden, muss SeedFarmer auf die Zielkonten zugreifen, um die folgenden drei Aktionen durchzuführen:

  1. Die Metadaten des ADDF-Moduls in das Toolchain-Konto und die Zielkonten schreiben.

  2. Die aktuellen ADDF-Modul-Metadaten aus dem Toolchain-Konto und den Zielkonten lesen.

  3. Initiierung von AWS CodeBuild-Aufträgen in den Zielkonten, um Module zu verteilen oder zu aktualisieren.

Die folgende Abbildung zeigt die kontenübergreifenden Beziehungen, einschließlich der Operationen, bei denen davon ausgegangen wird, dass sie ADDF-spezifische AWS Identity and Access Management (IAM)-Rollen sind.

IAM-Rollen in einer AWS-Architektur mit mehreren Konten, die über ein Toolchain-Konto und Zielkonten verfügt.

Diese kontenübergreifenden Aktionen werden mithilfe klar definierter Operationen mit Rollenübernahme erreicht.

  • Die IAM-Rolle der ADDF-Toolchain wird im Toolchain-Konto bereitgestellt. SeedFarmer übernimmt diese Rolle. Diese Rolle hat die Rechte zur Ausführung einer iam:AssumeRole-Aktion und kann in jedem Zielkonto die IAM-Rolle für die ADDF-Bereitstellung übernehmen. Darüber hinaus kann die ADDF-Toolchain-IAM-Rolle lokale AWS Systems Manager-Parameterspeichervorgänge ausführen.

  • Die IAM-Rolle für die ADDF-Bereitstellung wird in jedem Zielkonto bereitgestellt. Diese Rolle kann nur von dem Toolchain-Konto übernommen werden, indem die ADDF-Toolchain-IAM-Rolle verwendet wird. Diese Rolle hat die Berechtigung, lokale AWS Systems Manager-Parameterspeichervorgänge auszuführen und hat die Berechtigung, AWS CodeBuild-Aktionen auszuführen, die CodeBuild-Aufträge über CodeSeeder initiieren und beschreiben.

Diese ADDF-spezifischen IAM-Rollen werden im Rahmen des ADDF-Bootstrapping-Prozesses erstellt. Weitere Informationen finden Sie unter AWS-Konto(en) bootstrappen im Handbuch für ADDF-Bereitstellung (GitHub).

Alle kontoübergreifenden Berechtigungen sind nach dem Prinzip der geringste Berechtigungen eingerichtet. Wenn ein Zielkonto kompromittiert wird, hat dies nur minimale oder gar keine Auswirkungen auf andere ADDF-AWS-Konten.

Im Fall einer Einzel-Konto-Architektur für ADDF bleiben die Rollenbeziehungen gleich. Sie fallen einfach zu einem einzigen AWS-Konto zusammen.