Verwenden von IAM-Rollen mit Amazon ECS-Aufgaben - Amazon Elastic Container Service

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.

Verwenden von IAM-Rollen mit Amazon ECS-Aufgaben

Es wird empfohlen, einer Aufgabe eine IAM-Rolle zuzuweisen. Seine Rolle kann von der Rolle der Amazon EC2 Instance unterschieden werden, auf der sie ausgeführt wird. Das Zuweisen jeder Aufgabe einer Rolle entspricht dem Prinzip des Zugriffs mit den geringsten Berechtigungen und ermöglicht eine genauere Kontrolle über Aktionen und Ressourcen.

Wenn Sie IAM-Rollen für eine Aufgabe zuweisen, müssen Sie die folgende Vertrauensrichtlinie verwenden, damit jede Ihrer Aufgaben eine IAM-Rolle annehmen kann, die sich von der von Ihrer EC2-Instance verwendeten unterscheidet. Auf diese Weise erbt Ihre Aufgabe nicht die Rolle Ihrer EC2-Instance.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Wenn Sie einer Aufgabendefinition eine Aufgabenrolle hinzufügen, erstellt der Amazon ECS-Container-Agent automatisch ein Token mit einer eindeutigen ID-ID (z. B.12345678-90ab-cdef-1234-567890abcdef) für die Aufgabe. Dieses Token und die Anmeldeinformationen der Rolle werden dann dem internen Cache des Agenten hinzugefügt. Der Agent füllt die UmgebungsvariableAWS_CONTAINER_CREDENTIALS_RELATIVE_URIim Container mit dem URI der Anmeldeinformations-ID (z. B./v2/credentials/12345678-90ab-cdef-1234-567890abcdef) enthalten.


                Dieser Workflow zeigt den Prozess an, in dem der Amazon ECS-Container-Agent die Anmeldeinformationen zwischenspeichert. Diese Anmeldeinformationen werden von der Aufgabenrolle bestimmt, die in der Aufgabendefinition definiert ist.

Sie können die Anmeldeinformationen für temporäre Rollen manuell aus einem Container abrufen, indem Sie die Umgebungsvariable an die IP-Adresse des Amazon ECS-Container-Agents anhängen und diecurl-Befehl für die resultierende Zeichenfolge.

curl 192.0.2.0$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI

Die erwartete Ausgabe sieht wie folgt aus:

{ "RoleArn": "arn:aws:iam::123456789012:role/SSMTaskRole-SSMFargateTaskIAMRole-DASWWSF2WGD6", "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "Token": "IQoJb3JpZ2luX2VjEEM/Example==", "Expiration": "2021-01-16T00:51:53Z" }

Neuere Versionen derAWSSDKs rufen diese Anmeldeinformationen automatisch von derAWS_CONTAINER_CREDENTIALS_RELATIVE_URIUmgebung variabel bei der HerstellungAWSAPI-Aufrufe.

Die Ausgabe enthält ein Zugriffsschlüsselpaar bestehend aus einer geheimen Zugriffsschlüssel-ID und einem geheimen Schlüssel, den Ihre Anwendung verwendet, um aufAWSRessourcen schätzen. Sie enthalten auch ein Token, dasAWSverwendet, um zu überprüfen, ob die Anmeldeinformationen gültig sind. Standardmäßig sind die Anmeldeinformationen, die Aufgaben mithilfe von Aufgabenrollen zugewiesen werden, sechs Stunden lang gültig. Danach werden sie automatisch vom Amazon ECS-Container-Agenten gedreht.

Aufgabenausführungsrolle

Die Aufgabenausführungsrolle wird verwendet, um dem Amazon ECS-Container-Agent die Berechtigung zum Aufrufen bestimmterAWSAPI-Aktionen in Ihrem Namen. Wenn Sie beispielsweiseAWS Fargatebenötigt Fargate eine IAM-Rolle, die es ermöglicht, Bilder aus Amazon ECR zu ziehen und Protokolle in CloudWatch Logs zu schreiben. Eine IAM-Rolle ist auch erforderlich, wenn eine Aufgabe auf einen geheimen Schlüssel verweist, der inAWS Secrets Manager, z. B. ein Bild ziehen Geheimnis.

Anmerkung

Wenn Sie Bilder als authentifizierter Benutzer abrufen, sind Sie weniger wahrscheinlich von den Änderungen betroffen, die inGrenzwerte für die Pullrate des Docker Hubs. Weitere Informationen finden Sie unterPrivate Registrierungsauthentifizierung für Container-Instances.

Durch die Verwendung von Amazon ECR und Amazon ECR Public können Sie die von Docker auferlegten Beschränkungen vermeiden. Wenn Sie Bilder von Amazon ECR abrufen, verkürzt dies auch die Netzwerkabrufzeiten und reduziert die Datenübertragungsänderungen, wenn der Datenverkehr Ihre VPC verlässt.

Wichtig

Wenn Sie Fargate verwenden, müssen Sie sich bei einer privaten Image-Registrierung mitrepositoryCredentials. Es ist nicht möglich, die Umgebungsvariablen des Amazon ECS-Container-Agents festzulegenECS_ENGINE_AUTH_TYPEoder .ECS_ENGINE_AUTH_DATAändern oder dieecs.config-Datei für Aufgaben, die auf Fargate gehostet werden. Weitere Informationen finden Sie unterPrivate Registrierungsauthentifizierung für Aufgaben.

Amazon EC2 Container-Instance

Der Amazon ECS-Container-Agent ist ein Container, der auf jeder Amazon EC2 Instance in einem Amazon ECS-Cluster ausgeführt wird. Es wird außerhalb von Amazon ECS mit deminit-Befehl, der auf dem Betriebssystem verfügbar ist. Folglich können ihm keine Berechtigungen über eine Aufgabenrolle erteilt werden. Stattdessen müssen die Berechtigungen den Amazon EC2 Instances zugewiesen werden, auf denen die Agenten ausgeführt werden. Die Aktionsliste im BeispielAmazonEC2ContainerServiceforEC2Role-Richtlinie muss derecsInstanceRole. Wenn Sie dies nicht tun, können Ihre Instanzen dem Cluster nicht beitreten.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeTags", "ecs:CreateCluster", "ecs:DeregisterContainerInstance", "ecs:DiscoverPollEndpoint", "ecs:Poll", "ecs:RegisterContainerInstance", "ecs:StartTelemetrySession", "ecs:UpdateContainerInstancesState", "ecs:Submit*", "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] }

In dieser Richtlinie wird dieecrundlogs-API-Aktionen ermöglichen es den Containern, die auf Ihren Instances ausgeführt werden, Bilder von Amazon ECR abzurufen und Protokolle in Amazon CloudWatch zu schreiben. Dieecs-Aktionen ermöglichen es dem Agenten, Instances zu registrieren und aufzuheben und mit der Amazon ECS-Steuerungsebene zu kommunizieren. Von diesen, dieecs:CreateCluster-Aktion ist optional.

Serviceverknüpfte Rollen

Mit der serviceverknüpften Rolle für Amazon ECS können Sie dem Amazon ECS-Dienst die Berechtigung erteilen, in Ihrem Namen andere Service-APIs aufzurufen. Amazon ECS benötigt die Berechtigungen, um Netzwerkschnittstellen zu erstellen und zu löschen, Ziele bei einer Zielgruppe zu registrieren und aufzuheben. Außerdem sind die erforderlichen Berechtigungen zum Erstellen und Löschen von Skalierungsrichtlinien erforderlich. Diese Berechtigungen werden über die serviceverknüpfte Rolle erteilt. Diese Rolle wird in Ihrem Namen erstellt, wenn Sie den Dienst zum ersten Mal verwenden.

Anmerkung

Wenn Sie versehentlich die serviceverknüpfte Rolle löschen, können Sie sie erneut erstellen. Detaillierte Anweisungen finden Sie unterErstellen der serviceverknüpften Rolle.

Recommendations

Wir empfehlen, beim Einrichten der Aufgaben IAM-Rollen und -Richtlinien wie folgt vorzugehen:

Blockieren des Zugriffs auf Amazon EC2 Metadaten

Wenn Sie Ihre Aufgaben auf Amazon EC2 Instances ausführen, wird dringend empfohlen, den Zugriff auf Amazon EC2-Metadaten zu blockieren, um zu verhindern, dass Ihre Container die diesen Instances zugewiesene Rolle erben. Wenn Ihre Anwendungen eineAWSAPI-Aktion verwenden Sie stattdessen IAM-Rollen für Aufgaben.

So verhindern Sie, dass Tasks inBrücke-Modus nicht auf Amazon EC2 Metadaten zugreifen, führen Sie den folgenden Befehl aus oder aktualisieren Sie die Benutzerdaten der Instanz. Weitere Anweisungen zum Aktualisieren der Benutzerdaten einer Instanz finden Sie in diesemAWSSupport Artikel. Weitere Informationen zum Bridge-Modus für die Aufgabendefinition finden Sie unterAufgabendefinition Netzwerkmodus.

sudo yum install -y iptables-services; sudo iptables --insert FORWARD 1 --in-interface docker+ --destination 192.0.2.0/32 --jump DROP

Damit diese Änderung nach einem Neustart beibehalten wird, führen Sie den folgenden Befehl aus, der speziell für Ihr Amazon Machine Image (AMI) gilt:

  • Amazon Linux 2

    sudo iptables-save | sudo tee /etc/sysconfig/iptables && sudo systemctl enable --now iptables
  • Amazon Linux

    sudo service iptables save

Für Aufgaben, dieawsvpcLegen Sie unter -Netzwerkmodus die Umgebungsvariable festECS_AWSVPC_BLOCK_IMDSauftrueim/etc/ecs/ecs.configfile.

Sie sollten dieECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOSTVariable auffalsein der Konfigurationsdatei ecs-agent, um zu verhindern, dass die Container, die innerhalb derhost-Netzwerk nicht auf die Amazon EC2 Metadaten zugreifen.

Verwenden vonawsvpcNetzwerkmodus

Verwenden des Netzwerksawsvpc, um den Datenverkehr zwischen verschiedenen Aufgaben oder zwischen Ihren Aufgaben und anderen Diensten, die innerhalb Ihrer Amazon VPC ausgeführt werden, einzuschränken. Dies sorgt für eine zusätzliche Sicherheitsebene. Dieawsvpc-Netzwerkmodus bietet Netzwerkisolierung auf Task-Ebene für Tasks, die auf Amazon EC2 ausgeführt werden. Dies ist der Standardmodus aufAWS Fargate. Dies ist der einzige Netzwerkmodus, mit dem Sie Aufgaben eine Sicherheitsgruppe zuweisen können.

Verwenden von IAM Access Advisor zum Verfeinern von Rollen

Es wird empfohlen, alle Aktionen zu entfernen, die nie verwendet wurden oder seit einiger Zeit nicht verwendet wurden. Dadurch wird verhindert, dass unerwünschter Zugriff erfolgt. Überprüfen Sie hierzu die Ergebnisse, die von IAM Access Advisor erstellt wurden, und entfernen Sie dann Aktionen, die nie verwendet wurden oder kürzlich nicht verwendet wurden. Sie können dies tun, indem Sie die folgenden Schritte ausführen.

Führen Sie den folgenden Befehl aus, um einen Bericht zu generieren, der die letzten Zugriffsinformationen für die Richtlinie enthält, auf die verwiesen wird:

aws iam generate-service-last-accessed-details --arn arn:aws:iam::123456789012:policy/ExamplePolicy1

Verwenden Sie dieJobIdDer in der Ausgabe war, um den folgenden Befehl auszuführen. Nachdem Sie dies durchgeführt haben, können Sie die Ergebnisse des Berichts anzeigen.

aws iam get-service-last-accessed-details --job-id 98a765b4-3cde-2101-2345-example678f9

Weitere Informationen finden Sie unterIAM Access Advisor.

MonitorAWS CloudTrailfür verdächtige Aktivitäten

Sie könnenAWS CloudTrailfür verdächtige Aktivitäten. Die meistenAWSDie API-Aufrufe werden unterAWS CloudTrail-Ereignissen verwenden. Sie werden analysiert durchAWS CloudTrailEinblicke und Sie werden über verdächtige Verhaltensweisen informiert, die mitwriteAPI-Aufrufe. Dies könnte einen Anstieg der Anrufvolumen enthalten. Diese Warnungen enthalten Informationen wie den Zeitpunkt, zu dem die ungewöhnliche Aktivität aufgetreten ist, und den Top-Identitäts-ARN, der zu den APIs beigetragen hat.

Sie können Aktionen identifizieren, die von Aufgaben mit einer IAM-Rolle inAWS CloudTrail, indem Sie sich dieuserIdentity-Eigenschaft. Im folgenden Beispiel lautet derarnenthält den Namen der übernommenen Rolle,s3-write-go-bucket-role, gefolgt von dem Namen der Aufgabe7e9894e088ad416eb5cab92afExample.

"userIdentity": { "type": "AssumedRole", "principalId": "AROA36C6WWEJ2YEXAMPLE:7e9894e088ad416eb5cab92afExample", "arn": "arn:aws:sts::123456789012:assumed-role/s3-write-go-bucket-role/7e9894e088ad416eb5cab92afExample", ... }
Anmerkung

Wenn Tasks, die eine Rolle annehmen, auf Amazon EC2 Container-Instances ausgeführt werden, wird eine Anforderung vom Amazon ECS-Container-Agent im Überwachungsprotokoll des Agenten protokolliert, der sich unter einer Adresse im/var/log/ecs/audit.log.YYYY-MM-DD-HH. Weitere Informationen finden Sie unterIAM-Rollenprotokoll der AufgabeundProtokollieren von Insights-Ereignissen für Trails.