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.
Bewährte Methoden für IAM Rollen bei Amazon ECS
Wir empfehlen, dass Sie eine Aufgabenrolle zuweisen. Ihre Rolle kann von der Rolle der EC2 Amazon-Instance unterschieden werden, auf der sie ausgeführt wird. Die Zuweisung einer Rolle für jede Aufgabe entspricht dem Prinzip des Zugriffs mit der geringsten Berechtigung und ermöglicht eine differenzierte 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 andere IAM Rolle annehmen kann als die, die Ihre EC2 Instance verwendet. Auf diese Weise erbt Ihre Aufgabe nicht die Rolle Ihrer EC2 Instanz.
{ "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 ECS Amazon-Container-Agent automatisch ein Token mit einer eindeutigen Anmeldeinformations-ID (z. B.12345678-90ab-cdef-1234-567890abcdef
) für die Aufgabe. Dieses Token und die Rollen-Anmeldeinformationen werden dann dem internen Cache des Agenten hinzugefügt. Der Agent füllt die Umgebungsvariable AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
im Container mit der URI Anmeldeinformations-ID auf (zum Beispiel). /v2/credentials/12345678-90ab-cdef-1234-567890abcdef
Sie können die temporären Rollenanmeldedaten manuell aus einem Container abrufen, indem Sie die Umgebungsvariable an die IP-Adresse des ECS Amazon-Container-Agenten anhängen und den curl
Befehl für die resultierende Zeichenfolge ausführen.
curl 169.254.170.2$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 von rufen diese Anmeldeinformationen bei Aufrufen AWS SDKs automatisch aus der AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
Umgebungsvariablen ab. AWS API Informationen zum Erneuern von Anmeldeinformationen finden Sie unter AWS Anmeldeinformationen erneuern
Die Ausgabe enthält ein Zugriffsschlüsselpaar, das aus einer geheimen Zugriffsschlüssel-ID und einem geheimen Schlüssel besteht, das Ihre Anwendung für den Zugriff auf Ressourcen verwendet. AWS Es enthält auch ein Token, mit dem überprüft AWS wird, ob die Anmeldeinformationen gültig sind. Standardmäßig sind Anmeldeinformationen, die Aufgaben mithilfe von Aufgabenrollen zugewiesen wurden, sechs Stunden lang gültig. Danach werden sie automatisch vom ECS Amazon-Container-Agenten rotiert.
Aufgabenausführungsrolle
Die Rolle „Aufgabenausführung“ wird verwendet, um dem ECS Amazon-Container-Agenten die Erlaubnis zu erteilen, in Ihrem Namen bestimmte AWS API Aktionen auszuführen. Wenn Sie beispielsweise verwenden, benötigt Fargate eine IAM Rolle AWS Fargate, die es ihm ermöglicht, Bilder von Amazon abzurufen ECR und Protokolle in Logs zu CloudWatch schreiben. Eine IAM Rolle ist auch erforderlich, wenn eine Aufgabe auf ein Geheimnis verweist, das in gespeichert ist AWS Secrets Manager, z. B. ein Image-Pull-Secret.
Anmerkung
Wenn Sie Images als authentifizierter Benutzer abrufen, ist es weniger wahrscheinlich, dass Sie von den Änderungen an den Pull-Rate-Limits von Docker Hub
Durch die Verwendung von Amazon ECR und Amazon ECR Public können Sie die von Docker auferlegten Beschränkungen umgehen. Wenn Sie Bilder von Amazon abrufen, trägt dies auch dazu beiECR, die Netzwerk-Pull-Zeiten zu verkürzen und Datenübertragungsänderungen zu reduzieren, wenn der Datenverkehr Ihr Netzwerk verlässtVPC.
Wichtig
Wenn Sie Fargate verwenden, müssen Sie sich bei einer privaten Image-Registry mit repositoryCredentials
authentifizieren. Es ist nicht möglich, die Umgebungsvariablen für den ECS Amazon-Container-Agenten festzulegen ECS_ENGINE_AUTH_TYPE
ECS_ENGINE_AUTH_DATA
oder die ecs.config
Datei für auf Fargate gehostete Aufgaben zu ändern. Weitere Informationen finden Sie unter Private Registrierungsauthentifizierung für Aufgaben.
Rolle für Container-Instances
Die AmazonEC2ContainerServiceforEC2Role
verwaltete IAM Richtlinie umfasst die folgenden Berechtigungen. Nach den standardmäßigen Sicherheitshinweisen zur Erteilung von geringsten Privilegien kann die von AmazonEC2ContainerServiceforEC2Role
verwaltete Richtlinie als Leitfaden verwendet werden. Wenn Sie eine der in der verwalteten Richtlinie erteilten Berechtigungen für Ihren Anwendungsfall nicht benötigen, erstellen Sie eine benutzerdefinierte Richtlinie und fügen Sie nur die erforderlichen Berechtigungen hinzu.
-
ec2:DescribeTags
—) Optional) Ermöglicht es einem Principal, die Tags zu beschreiben, die einer EC2 Amazon-Instance zugeordnet sind. Diese Berechtigung wird vom ECS Amazon-Container-Agenten verwendet, um die Weitergabe von Ressourcen-Tags zu unterstützen. Weitere Informationen finden Sie unter So werden Ressourcen markiert. -
ecs:CreateCluster
— (Optional) Ermöglicht einem Principal, einen ECS Amazon-Cluster zu erstellen. Diese Berechtigung wird vom ECS Amazon-Container-Agenten verwendet, um einendefault
Cluster zu erstellen, falls noch keiner vorhanden ist. -
ecs:DeregisterContainerInstance
— (Optional) Ermöglicht einem Principal, eine ECS Amazon-Container-Instance von einem Cluster abzumelden. Der ECS Amazon-Container-Agent ruft diesen API Vorgang nicht auf, aber diese Berechtigung bleibt bestehen, um die Abwärtskompatibilität sicherzustellen. -
ecs:DiscoverPollEndpoint
— (Erforderlich) Diese Aktion gibt Endpunkte zurück, die der ECS Amazon-Container-Agent verwendet, um Updates abzufragen. -
ecs:Poll
— (Erforderlich) Ermöglicht dem ECS Amazon-Container-Agenten, mit der ECS Amazon-Steuerebene zu kommunizieren, um Änderungen des Aufgabenstatus zu melden. -
ecs:RegisterContainerInstance
— (Erforderlich) Ermöglicht einem Principal, eine Container-Instance bei einem Cluster zu registrieren. Diese Berechtigung wird vom ECS Amazon-Container-Agenten verwendet, um die EC2 Amazon-Instance bei einem Cluster zu registrieren und die Weitergabe von Ressourcen-Tags zu unterstützen. -
ecs:StartTelemetrySession
— (Optional) Ermöglicht dem ECS Amazon-Container-Agenten die Kommunikation mit der ECS Amazon-Steuerebene, um Statusinformationen und Kennzahlen für jeden Container und jede Aufgabe zu melden.Diese Berechtigung ist zwar nicht erforderlich, wir empfehlen jedoch, sie hinzuzufügen, damit die Metriken der Container-Instance Skalierungsaktionen starten und auch Berichte zu Befehlen zur Zustandsprüfung erhalten können.
-
ecs:TagResource
— (Optional) Ermöglicht dem ECS Amazon-Container-Agenten, Cluster bei der Erstellung zu taggen und Container-Instances zu taggen, wenn sie in einem Cluster registriert sind. -
ecs:UpdateContainerInstancesState
— Ermöglicht einem Principal, den Status einer ECS Amazon-Container-Instance zu ändern. Diese Berechtigung wird vom ECS Amazon-Container-Agenten für die Entleerung von Spot-Instances verwendet. -
ecs:Submit*
— (Erforderlich) Dazu gehören dieSubmitTaskStateChange
API AktionenSubmitAttachmentStateChanges
SubmitContainerStateChange
, und. Sie werden vom ECS Amazon-Container-Agenten verwendet, um Statusänderungen für jede Ressource an die ECS Amazon-Kontrollebene zu melden. DieSubmitContainerStateChange
Genehmigung wird nicht mehr vom ECS Amazon-Container-Agenten verwendet, sondern dient weiterhin dazu, die Abwärtskompatibilität sicherzustellen. -
ecr:GetAuthorizationToken
— (Optional) Ermöglicht einem Prinzipal, ein Autorisierungstoken abzurufen. Das Autorisierungstoken stellt Ihre IAM Authentifizierungsdaten dar und kann für den Zugriff auf jede ECR Amazon-Registrierung verwendet werden, auf die der IAM Principal Zugriff hat. Das erhaltene Autorisierungs-Token ist 12 Stunden gültig. -
ecr:BatchCheckLayerAvailability
— (Optional) Wenn ein Container-Image in ein ECR privates Amazon-Repository übertragen wird, wird jede Image-Ebene überprüft, um sicherzustellen, dass sie bereits übertragen wurde. Wenn dies der Fall ist, wird die Image-Ebene übersprungen. -
ecr:GetDownloadUrlForLayer
— (Optional) Wenn ein Container-Image aus einem ECR privaten Amazon-Repository abgerufen wird, API wird dies einmal für jede Bildebene aufgerufen, die noch nicht zwischengespeichert ist. -
ecr:BatchGetImage
— (Optional) Wenn ein Container-Image aus einem ECR privaten Amazon-Repository abgerufen wird, API wird dieses einmal aufgerufen, um das Image-Manifest abzurufen. -
logs:CreateLogStream
— (Optional) Ermöglicht einem Principal, einen CloudWatch Logs-Log-Stream für eine angegebene Protokollgruppe zu erstellen. -
logs:PutLogEvents
— (Optional) Ermöglicht einem Prinzipal, einen Stapel von Protokollereignissen in einen angegebenen Protokolldatenstrom hochzuladen.
Die folgende Richtlinie enthält die erforderlichen Berechtigungen.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DiscoverPollEndpoint", "ecs:Poll", "ecs:RegisterContainerInstance", "ecs:UpdateContainerInstancesState", "ecs:Submit*" ], "Resource": "*" } ] }
Service-verknüpfte Rollen
Sie können die serviceverknüpfte Rolle für Amazon verwendenECS, um dem ECS Amazon-Service die Erlaubnis zu erteilen, andere Dienste in APIs Ihrem Namen anzurufen. Amazon ECS benötigt die Berechtigungen zum Erstellen und Löschen von Netzwerkschnittstellen sowie zum Registrieren und Abmelden von Zielen bei einer Zielgruppe. Außerdem benötigt es die erforderlichen Berechtigungen, um Skalierungsrichtlinien zu erstellen und zu löschen. Diese Berechtigungen werden durch die serviceverknüpfte Rolle erteilt. Diese Rolle wird in Ihrem Namen erstellt, wenn Sie den Service zum ersten Mal verwenden.
Anmerkung
Wenn Sie die serviceverknüpfte Rolle versehentlich löschen, können Sie sie neu erstellen. Anweisungen dazu finden Sie unter Die serviceverknüpfte Rolle erstellen.
Rollen, Empfehlungen
Wir empfehlen Ihnen, bei der Einrichtung Ihrer IAM Aufgabenrollen und Richtlinien wie folgt vorzugehen.
Zugriff auf EC2 Amazon-Metadaten blockieren
Wenn Sie Ihre Aufgaben auf EC2 Amazon-Instances ausführen, empfehlen wir Ihnen dringend, den Zugriff auf EC2 Amazon-Metadaten zu blockieren, um zu verhindern, dass Ihre Container die diesen Instances zugewiesene Rolle erben. Wenn Ihre Anwendungen eine AWS API Aktion aufrufen müssen, verwenden Sie stattdessen IAM Rollen für Aufgaben.
Um zu verhindern, dass Aufgaben, die im Bridge-Modus ausgeführt werden, auf EC2 Amazon-Metadaten zugreifen, führen Sie den folgenden Befehl aus oder aktualisieren Sie die Benutzerdaten der Instance. Weitere Anweisungen zum Aktualisieren der Benutzerdaten einer Instance finden Sie in diesem AWS -Support-Artikel
sudo yum install -y iptables-services; sudo iptables --insert FORWARD 1 --in-interface docker+ --destination 169.254.169.254/32 --jump DROP
Damit diese Änderung nach einem Neustart bestehen bleibt, führen Sie den folgenden Befehl aus, der für Ihr Amazon Machine Image (AMI) spezifisch ist:
-
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, die den awsvpc
-Netzwerkmodus verwenden, setzen Sie die Umgebungsvariable ECS_AWSVPC_BLOCK_IMDS
in der /etc/ecs/ecs.config
-Datei auf true
.
Sie sollten die ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST
Variable false
in der ecs-agent config
Datei auf setzen, um zu verhindern, dass die Container, die im host
Netzwerk laufen, auf die EC2 Amazon-Metadaten zugreifen.
Verwenden Sie den awsvpc
Netzwerkmodus
Verwenden Sie den awsvpc
Netzwerkmodus, um den Verkehrsfluss zwischen verschiedenen Aufgaben oder zwischen Ihren Aufgaben und anderen Diensten, die in Ihrem Amazon ausgeführt werden, einzuschränkenVPC. Dies fügt eine zusätzliche Sicherheitsebene hinzu. Der awsvpc
Netzwerkmodus bietet Netzwerkisolierung auf Aufgabenebene für Aufgaben, die auf Amazon ausgeführt werden. EC2 Dies ist der Standardmodus aktiviert AWS Fargate. Es ist der einzige Netzwerkmodus, den Sie verwenden können, um Aufgaben eine Sicherheitsgruppe zuzuweisen.
Verwenden Sie Informationen, auf die zuletzt zugegriffen wurde, um Rollen zu verfeinern
Wir empfehlen, alle Aktionen zu entfernen, die nie oder seit einiger Zeit nicht mehr verwendet wurden. Dadurch wird verhindert, dass unerwünschter Zugriff erfolgt. Überprüfen Sie dazu die Informationen von, auf die zuletzt zugegriffen wurdeIAM, und entfernen Sie dann Aktionen, die nie oder in letzter Zeit nicht verwendet wurden. Gehen Sie dazu wie folgt vor.
Führen Sie den folgenden Befehl aus, um einen Bericht mit Informationen über den letzten Zugriff für die betreffende Richtlinie zu erstellen:
aws iam generate-service-last-accessed-details --arn arn:aws:iam::123456789012:policy/ExamplePolicy1
Verwenden Sie die JobId
, die in der Ausgabe enthalten war, um den folgenden Befehl auszuführen. Nachdem Sie dies getan haben, können Sie die Ergebnisse des Berichts einsehen.
aws iam get-service-last-accessed-details --job-id 98a765b4-3cde-2101-2345-example678f9
Weitere Informationen finden Sie unter Verfeinern von Berechtigungen bei der AWS Verwendung von Informationen, auf die zuletzt zugegriffen wurde.
Achten Sie AWS CloudTrail auf verdächtige Aktivitäten
Sie können AWS CloudTrail nach verdächtigen Aktivitäten Ausschau halten. Die meisten AWS API Anrufe werden AWS CloudTrail als Ereignisse protokolliert. Sie werden von AWS CloudTrail Insights analysiert, und Sie werden über jedes verdächtige Verhalten im Zusammenhang mit write
API Anrufen informiert. Dies kann einen Anstieg des Anrufvolumens beinhalten. Diese Benachrichtigungen enthalten Informationen wie den Zeitpunkt der ungewöhnlichen Aktivität und die wichtigste IdentitätARN, die APIs dazu beigetragen hat.
Sie können anhand der userIdentity
Eigenschaft des Ereignisses erkennen, welche Aktionen AWS CloudTrail von Aufgaben ausgeführt werden, denen eine IAM Rolle zukommt. Im folgenden Beispiel besteht das arn
aus dem Namen der übernommenen Rolle, s3-write-go-bucket-role
, gefolgt vom Namen der Aufgabe, 7e9894e088ad416eb5cab92afExample
.
"userIdentity": { "type": "AssumedRole", "principalId": "AROA36C6WWEJ2YEXAMPLE:7e9894e088ad416eb5cab92afExample", "arn": "arn:aws:sts::123456789012:assumed-role/s3-write-go-bucket-role/7e9894e088ad416eb5cab92afExample", ... }
Anmerkung
Wenn Aufgaben, die eine Rolle annehmen, auf EC2 Amazon-Container-Instances ausgeführt werden, wird eine Anfrage vom ECS Amazon-Container-Agenten im Audit-Protokoll des Agenten protokolliert, das sich an einer Adresse im /var/log/ecs/audit.log.YYYY-MM-DD-HH
Format befindet. Weitere Informationen finden Sie unter Protokoll der IAMAufgabenrollen und Protokollierung von Insights-Ereignissen für Trails.