Bewährte Methoden für die Netzwerksicherheit in Amazon ECS
Netzwerksicherheit ist ein breit gefächertes Thema, das mehrere Unterthemen umfasst. Dazu gehören Übertragungsverschlüsselung, Netzwerksegmentierung und -isolierung, Firewalling, Traffic-Routing und Beobachtbarkeit.
Verschlüsselung während der Übertragung.
Die Verschlüsselung des Netzwerkverkehrs verhindert, dass unbefugte Benutzer Daten abfangen und lesen können, wenn diese Daten über ein Netzwerk übertragen werden. Mit Amazon ECS kann die Netzwerkverschlüsselung auf eine der folgenden Arten implementiert werden.
-
Verwenden von Nitro-Instances:
Standardmäßig wird der Datenverkehr zwischen den folgenden Nitro-Instance-Typen automatisch verschlüsselt: C5n, G4, I3en, M5dn, M5n, P3dn, R5dn, und R5n. Der Datenverkehr wird nicht verschlüsselt, wenn er über ein Transit-Gateway, einen Load Balancer oder einen ähnlichen Vermittler geleitet wird.
-
Server Name Indication (SNI) mit einem Application Load Balancer verwenden:
Der Application Load Balancer (ALB) und der Network Load Balancer (NLB) unterstützen Server Name Indication (SNI). Mithilfe von SNI können Sie mehrere sichere Anwendungen hinter einem einzigen Listener platzieren. Hierfür hat jeder sein eigenes TLS-Zertifikat. Wir empfehlen, dass Sie Zertifikate für den Load Balancer mithilfe von AWS Certificate Manager (ACM) bereitstellen und sie dann zur Zertifikatsliste des Listeners hinzufügen. Der AWS Load Balancer verwendet einen intelligenten Algorithmus für die Zertifikatsauswahl mit SNI. Wenn der von einem Client bereitgestellte Hostname nur mit einem Zertifikat in der Zertifikatliste übereinstimmt, wählt der Load Balancer dieses Zertifikat aus. Wenn ein von einem Client bereitgestellter Hostname mit mehreren Zertifikaten in der Liste übereinstimmt, wählt der Load Balancer ein Zertifikat aus, das der Client unterstützen kann. Beispiele hierfür sind ein selbstsigniertes Zertifikat oder ein über das ACM generiertes Zertifikat.
-
Ende-zu-Ende-Verschlüsselung mit TLS-Zertifikaten:
Dies beinhaltet die Bereitstellung eines TLS-Zertifikats für die Aufgabe. Dabei kann es sich entweder um ein selbstsigniertes Zertifikat oder um ein Zertifikat einer vertrauenswürdigen Zertifizierungsstelle handeln. Sie können das Zertifikat erhalten, indem Sie auf ein Secret für das Zertifikat verweisen. Andernfalls können Sie einen Container ausführen, der eine Certificate Signing Request (CSR) an ACM ausgibt und das resultierenden Geheimnis dann auf einem freigegebenen Volume mountet.
Aufgabenvernetzung
Die folgenden Empfehlungen beziehen sich auf die Funktionsweise von Amazon ECS. Amazon ECS verwendet kein Overlay-Netzwerk. Stattdessen sind die Aufgaben so konfiguriert, dass sie in verschiedenen Netzwerkmodi arbeiten. Aufgaben, die für die Verwendung des bridge-Modus konfiguriert sind, erhalten beispielsweise eine nicht weiterleitbare IP-Adresse von einem Docker-Netzwerk, das auf jedem Host läuft. Aufgaben, die für die Verwendung des awsvpc-Netzwerkmodus konfiguriert sind, beziehen eine IP-Adresse aus dem Subnetz des Hosts. Aufgaben, die für host-Netzwerke konfiguriert sind, verwenden die Netzwerkschnittstelle des Hosts. awsvpc ist der bevorzugte Netzwerkmodus. Dies liegt daran, dass dies der einzige Modus ist, mit dem Sie Sicherheitsgruppen an Aufgaben zuweisen können. Es ist auch der einzige Modus, der für AWS Fargate-Aufgaben auf Amazon ECS verfügbar ist.
Sicherheitsgruppen für Aufgaben
Es wird empfohlen, Ihre Aufgaben zur Verwendung des awsvpc-Netzwerkmodus zu konfigurieren. Nachdem Sie Ihre Aufgabe für die Verwendung dieses Modus konfiguriert haben, stellt der Amazon-ECS-Agent automatisch eine Elastic-Network-Schnittstelle (ENI) bereit und fügt sie der Aufgabe hinzu. Wenn die ENI bereitgestellt wird, wird die Aufgabe in eine AWS-Sicherheitsgruppe aufgenommen. Die Sicherheitsgruppe dient als virtuelle Firewall, mit der Sie den ein- und ausgehenden Datenverkehr kontrollieren können.
Wenn Sie eine benutzerdefinierte Firewall mit Aufgaben oder Services verwenden, fügen Sie eine ausgehende Regel hinzu, um Datenverkehr für die Verwaltungsendpunkte des Amazon-ECS-Agenten („ecs-a-*.“), Telemetrie-Endpunkte („region.amazonaws.com.rproxy.govskope.caecs-t-*.“) und die Verwaltungsendpunkte für Service Connect Envoy („region.amazonaws.com.rproxy.govskope.caecs-sc.“) zu erlauben.region.api.aws
AWS PrivateLink und Amazon ECS
AWS PrivateLink ist eine Netzwerktechnologie, mit der Sie private Endpunkte für verschiedene AWS-Services, einschließlich Amazon ECS, einrichten können. Die Endpunkte sind in Sandbox-Umgebungen erforderlich, in denen kein Internet-Gateway (IGW) an die Amazon VPC angeschlossen ist und keine alternativen Routen zum Internet bestehen. Durch die Verwendung von AWS PrivateLink wird sichergestellt, dass Aufrufe an den Amazon-ECS-Service innerhalb der Amazon VPC verbleiben und nicht das Internet durchqueren. Anweisungen zum Erstellen von AWS PrivateLink-Endpunkten für Amazon ECS und andere verwandte Services finden Sie unter Amazon-ECS-Schnittstelle, Amazon-VPC-Endpoints.
Wichtig
AWS Fargate-Aufgaben benötigen keinen AWS PrivateLink-Endpunkt für Amazon ECS.
Sowohl Amazon ECR als auch Amazon ECS unterstützen Endpunktrichtlinien. Mit diesen Richtlinien können Sie den Zugriff auf die APIs eines Services verfeinern. Sie könnten beispielsweise eine Endpunktrichtlinie für Amazon ECR erstellen, nach der nur Images an Registrys bestimmter AWS-Konten gesendet werden können. Eine Richtlinie wie diese könnte verwendet werden, um zu verhindern, dass Daten durch Container-Images exfiltriert werden, während Benutzer weiterhin die Möglichkeit haben, an autorisierte Amazon-ECR-Registrys zu senden. Weitere Informationen finden Sie unter VPC-Endpunkt-Richtlinien verwenden.
Die folgende Richtlinie ermöglicht es allen AWS-Prinzipalen in Ihrem Konto, alle Aktionen nur mit Ihren Amazon-ECR-Repositorys durchzuführen:
{ "Statement": [ { "Sid": "LimitECRAccess", "Principal": "*", "Action": "*", "Effect": "Allow", "Resource": "arn:aws:ecr:region:account_id:repository/*" }, ] }
Sie können dies weiter verbessern, indem Sie eine Bedingung festlegen, die die neue PrincipalOrgID-Eigenschaft verwendet. Dadurch wird verhindert, dass Images von einem IAM-Prinzipal übertragen und abgerufen werden, der nicht zu Ihrer AWS Organizations gehört. Weitere Informationen finden Sie unter aws:PrincipalOrgID.
Wir haben empfohlen, dieselbe Richtlinie sowohl auf die com.amazonaws.- als auch die region.ecr.dkrcom.amazonaws.-Endpunkte anzuwenden.region.ecr.api
Container-Agent-Einstellungen
Die Konfigurationsdatei des Amazon ECS Container-Agenten enthält mehrere Umgebungsvariablen, die sich auf die Netzwerksicherheit beziehen. ECS_AWSVPC_BLOCK_IMDS und ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST werden verwendet, um den Zugriff einer Aufgabe zu Amazon EC2-Metadaten zu blockieren. HTTP_PROXY wird verwendet, um den Agenten so zu konfigurieren, dass er über einen HTTP-Proxy eine Verbindung zum Internet herstellt. Anweisungen zur Konfiguration des Agenten und der Docker-Laufzeit für die Weiterleitung über einen Proxy finden Sie unter HTTP-Proxykonfiguration.
Wichtig
Diese Einstellungen sind nicht verfügbar, wenn Sie sie AWS Fargate verwenden.
Empfehlungen für die Netzwerksicherheit
Wir empfehlen Ihnen, bei der Einrichtung Ihrer Amazon VPC, Load Balancer und Ihres Netzwerks wie folgt vorzugehen.
Gegebenenfalls Netzwerkverschlüsselung mit Amazon ECS verwenden
Sie sollten gegebenenfalls Netzwerkverschlüsselung verwenden. Bestimmte Compliance-Programme, wie PCI DSS, verlangen, dass Sie Daten während der Übertragung verschlüsseln, wenn die Daten Karteninhaberdaten enthalten. Wenn Ihr Workload ähnliche Anforderungen hat, konfigurieren Sie die Netzwerkverschlüsselung.
Moderne Browser warnen Benutzer, wenn sie eine Verbindung zu unsicheren Websites herstellen. Wenn Ihr Service von einem öffentlich zugänglichen Load Balancer unterstützt wird, verwenden Sie TLS/SSL, um den Datenverkehr vom Browser des Clients zum Load Balancer zu verschlüsseln, und verschlüsseln Sie ihn gegebenenfalls erneut zum Backend.
Verwenden Sie den awsvpc-Netzwerkmodus und Sicherheitsgruppen, um den Datenverkehr zwischen Aufgaben und anderen Ressourcen in Amazon ECS zu steuern.
Sie sollten den awsvpc-Netzwerkmodus und Sicherheitsgruppen verwenden, wenn Sie den Verkehr zwischen Aufgaben sowie solchen zwischen Aufgaben und anderen Netzwerkressourcen kontrollieren müssen. Wenn sich Ihr Service hinter einem ALB befindet, verwenden Sie Sicherheitsgruppen, um nur eingehenden Datenverkehr von anderen Netzwerkressourcen zu erlauben, die die gleiche Sicherheitsgruppe wie Ihr ALB verwenden. Wenn sich Ihre Anwendung hinter einem NLB befindet, konfigurieren Sie die Sicherheitsgruppe der Aufgabe so, dass nur eingehender Datenverkehr aus dem Amazon-VPC-CIDR-Bereich und den statischen IP-Adressen, die dem NLB zugewiesen sind, zugelassen wird.
Sicherheitsgruppen sollten auch verwendet werden, um den Datenverkehr zwischen Aufgaben und anderen Ressourcen innerhalb der Amazon VPC wie beispielsweise Amazon-RDS-Datenbanken zu kontrollieren.
Erstellen Sie Cluster in separaten Amazon VPCs, wenn der Netzwerkdatenverkehr strikt isoliert werden muss.
Sie sollten Cluster in separaten Amazon VPCs erstellen, wenn der Netzwerkverkehr strikt isoliert werden muss. Vermeiden Sie es, Workloads mit strengen Sicherheitsanforderungen auf Clustern mit Workloads auszuführen, die diese Anforderungen nicht erfüllen müssen. Wenn eine strikte Netzwerkisolierung erforderlich ist, erstellen Sie Cluster in separaten Amazon VPCs und stellen Sie Services mithilfe von Amazon-VPC-Endpunkten selektiv anderen Amazon VPCs zur Verfügung. Weitere Informationen finden Sie unter VPC-Endpunkte.
AWS PrivateLink-Endpunkten konfigurieren, wenn für Amazon ECS erforderlich
Sie sollten AWS PrivateLink-Endpunkte konfigurieren, sofern erforderlich. Wenn Ihre Sicherheitsrichtlinie Sie daran hindert, ein Internet-Gateway (IGW) an Ihre Amazon VPCs anzuhängen, konfigurieren Sie AWS PrivateLink-Endpunkte für Amazon ECS und andere Services wie Amazon ECR, AWS Secrets Manager und Amazon CloudWatch.
Amazon-VPC-Flow-Protokolle verwenden, um den Datenverkehr zu und von langlaufenden Aufgaben in Amazon ECS zu analysieren
Sie sollten Amazon-VPC-Flow-Protokolle verwenden, um den Verkehr zu und von lang andauernden Aufgaben zu analysieren. Aufgaben, die den awsvpc-Netzwerkmodus verwenden, erhalten ihre eigene ENI. Auf diese Weise können Sie mithilfe von Amazon-VPC-Flow-Protokollen den Verkehr überwachen, der zu und von einzelnen Aufgaben geht. Ein kürzlich veröffentlichtes Update von Amazon-VPC-Flow-Protokolle (v3) bereichert die Protokolle mit Verkehrsmetadaten wie der VPC-ID, der Subnetz-ID und der Instance-ID. Diese Metadaten können verwendet werden, um eine Untersuchung einzugrenzen. Weitere Informationen finden Sie unter Amazon-VPC-Flow-Protokolle.
Anmerkung
Aufgrund des temporären Charakters von Containern sind Flow-Protokolle möglicherweise nicht immer eine effektive Methode, um Verkehrsmuster zwischen verschiedenen Containern oder Containern und anderen Netzwerkressourcen zu analysieren.