IAM-Rolle für die Amazon-ECS-Aufgabenausführung - Amazon Elastic Container Service

IAM-Rolle für die Amazon-ECS-Aufgabenausführung

Die Aufgabenausführungsrolle erteilt dem Amazon-ECS-Container- und Fargate-Agenten die Berechtigung, AWS-API-Aufrufe in Ihrem Namen durchzuführen. Die IAM-Rolle für die Aufgabenausführung ist je nach den Anforderungen Ihrer Aufgabe erforderlich. Sie können mehrere Aufgabenausführungsrollen für verschiedene Zwecke und Dienste haben, die Ihrem Konto zugeordnet sind.

Anmerkung

Diese Berechtigungen werden dem Agenten, der auf Ihrer Instance ausgeführt wird, von Amazon ECS zur Verfügung gestellt, indem ihm regelmäßig die temporären Anmeldeinformationen der Rolle gesendet werden. Die Container in der Aufgabe können jedoch nicht direkt auf sie zugreifen. Informationen zu den IAM-Berechtigungen, die Ihre Anwendungscode in den Containern zur Ausführung benötigt, finden Sie unter Aufgaben-IAM-Rolle für Amazon ECS.

Im Folgenden sind häufige Anwendungsfälle für eine IAM-Rolle für die Aufgabenausführung aufgeführt:

  • Ihre Aufgabe wird in AWS Fargate oder auf einer externen Instance gehostet und:

    • ruft ein Container-Image aus einem privaten Amazon ECR-Repository ab.

    • ruft ein Container-Image aus einem privaten Amazon-ECR-Repository ab, das sich in einem anderen Konto befindet als das Konto, das die Aufgabe ausführt.

    • sendet Container-Protokolle an CloudWatch Logs über den awslogs-Protokolltreiber. Weitere Informationen finden Sie unter Amazon-ECS-Protokollen an CloudWatch senden .

  • Ihre Aufgaben werden entweder in AWS Fargate oder auf Amazon-EC2-Instances gehostet und:

Anmerkung

Die Aufgabenausführungsrolle wird von Amazon-ECS-Container-Agent Version 1.16.0 und höher unterstützt.

Amazon ECS bietet die verwaltete Richtlinie AmazonECSTaskExecutionRolePolicy. Diese enthält die Berechtigungen, die für die oben beschriebenen häufigen Anwendungsfälle benötigt werden. Weitere Informationen finden Sie unter AmazonECSTaskExecutionRolePolicy im Referenzleitfaden für AWS-verwaltete Richtlinien. Es kann erforderlich sein, für spezielle Anwendungsfälle, Inline-Richtlinien zu Ihrer Aufgabenausführungsrolle hinzuzufügen.

Die Amazon-ECS-Konsole erstellt eine Aufgabenausführungsrolle. Sie können jedoch die verwaltete IAM-Richtlinie für Aufgaben manuell anfügen, damit Amazon ECS Berechtigungen für zukünftige Features und Erweiterungen bei deren Einführung hinzufügen kann. Sie können die IAM-Konsole verwenden, um nach ecsTaskExecutionRole zu suchen und festzustellen, ob Ihr Konto bereits über die Aufgabenausführungsrolle verfügt. Weitere Informationen finden Sie unter IAM-Konsolensuche im IAM-Benutzerhandbuch.

Wenn Sie Images als authentifizierter Benutzer abrufen, ist es weniger wahrscheinlich, dass Sie von den Änderungen an den Docker Hub-Nutzungsbeschränkungen betroffen sind. Weitere Informationen finden Sie unter Private Registrierungsauthentifizierung für Container-Instances.

Durch die Verwendung von Amazon ECR und Amazon ECR Public können Sie die von Docker auferlegten Beschränkungen umgehen. Wenn Sie Images von Amazon ECR abrufen, trägt dies auch dazu bei, die Netzwerk-Pull-Zeiten zu verkürzen und Datenübertragungsänderungen zu reduzieren, wenn der Datenverkehr Ihre VPC verlässt.

Wenn Sie Fargate verwenden, müssen Sie sich bei einer privaten Image-Registry mit repositoryCredentials authentifizieren. Es ist nicht möglich, die Umgebungsvariablen ECS_ENGINE_AUTH_TYPE oder ECS_ENGINE_AUTH_DATA für den Amazon-ECS-Container-Agenten festzulegen oder die ecs.config-Datei für auf Fargate gehostete Aufgaben zu ändern. Weitere Informationen finden Sie unter Private Registrierungsauthentifizierung für Aufgaben.

Erstellen der -Aufgabenausführungsrolle

Wenn Ihr Konto noch nicht über eine Aufgabenausführungsrolle verfügt, führen Sie die folgenden Schritte aus, um die Rolle zu erstellen.

the console
So erstellen Sie eine Servicerolle für Elastic Container Service (IAM-Konsole)
  1. Melden Sie sich bei der the console an, und öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Klicken Sie im Navigationsbereich der IAM-Konsole auf Rollen, und wählen Sie dann Rolle erstellen.

  3. Wählen Sie für Vertrauenswürdige Entität die Option AWS-Service aus.

  4. Wählen Sie für Service oder Anwendungsfall die Option Elastic Container Service und dann den Anwendungsfall Elastic Container Service Task aus.

  5. Wählen Sie Weiter aus.

  6. Suchen Sie im Abschnitt Berechtigungsrichtlinie anfügen nach AmazonECSTaskExecutionRolePolicy und wählen Sie dann die Richtlinie aus.

  7. Wählen Sie Weiter aus.

  8. Geben Sie für Rollenname ecsTaskExecutionRole ein.

  9. Prüfen Sie die Rolle und klicken Sie dann auf Create Role (Rolle erstellen).

AWS CLI

Ersetzen Sie jede Benutzereingabe durch Ihre eigenen Informationen.

  1. Erstellen Sie eine Datei namens ecs-tasks-trust-policy.json, die die Vertrauensrichtlinie enthält, die für die IAM-Rolle verwendet werden soll. Die Datei sollte Folgendes enthalten:

    JSON
    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. Erstellen Sie eine IAM-Rolle namens ecsTaskExecutionRole, die im vorherigen Schritt erstellte Vertrauensrichtlinie verwendet.

    aws iam create-role \ --role-name ecsTaskExecutionRole \ --assume-role-policy-document file://ecs-tasks-trust-policy.json
  3. Hängen Sie die von AWS verwaltete Richtlinie AmazonECSTaskExecutionRolePolicy an die Rolle ecsTaskExecutionRole an.

    aws iam attach-role-policy \ --role-name ecsTaskExecutionRole \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy

Nachdem Sie die Rolle erstellt haben, fügen Sie der Rolle zusätzliche Berechtigungen für die folgenden Features hinzu.

Funktion Zusätzliche Berechtigungen

Rufen Sie Container-Images von privaten Registrys außerhalb von AWS (z. B. Docker Hub, Quay.io oder Ihrer eigenen privaten Registry) mit Secrets-Manager-Anmeldeinformationen ab

Private-Registry-Authentifizierungsberechtigungen

Sensible Daten mit Systems Manager oder Secrets Manager übergeben

Berechtigungen für Secrets Manager oder Systems Manager

Fargate-Aufgaben zum Abrufen von Amazon-ECR-Images über Schnittstellen-Endpunkte

Berechtigungen für Fargate-Aufgaben, Amazon-ECR-Images über Schnittstellen-Endpunkte abzurufen

Host-Konfigurationsdateien in einem Amazon-S3-Bucket

Berechtigungen für Amazon-S3-Dateispeicher

Container Insights zur Anzeige von Amazon-ECS-Lebenszyklusereignissen konfigurieren

Erforderliche Berechtigungen zum Aktivieren von Amazon-ECS-Lebenszyklusereignissen in Container Insights

Amazon-ECS-Lebenszyklusereignissen in Container Insights anzeigen

Erforderliche Berechtigungen zum Anzeigen von Lebenszyklusereignissen von Amazon ECS in Container Insights

Private-Registry-Authentifizierungsberechtigungen

Die private Registry-Authentifizierung ermöglicht es Ihren Amazon-ECS-Aufgaben, Container-Images von privaten Registrys außerhalb von AWS (wie Docker Hub, Quay.io oder Ihrer eigenen privaten Registrys) abzurufen, für die Authentifizierungsdaten erforderlich sind. Dieses Feature verwendet Secrets Manager, um Ihre Registry-Anmeldeinformationen sicher zu speichern, auf die dann in Ihrer Aufgabendefinition mithilfe des repositoryCredentials-Parameters verwiesen wird.

Weitere Informationen zur Konfiguration der privaten Registry-Authentifizierung finden Sie unter Verwenden von Nicht-AWS-Container-Images in Amazon ECS.

Um Zugriff auf die Geheimnisse zu gewähren, die Ihre privaten Registry-Anmeldeinformationen enthalten, fügen Sie die folgenden Berechtigungen als Inline-Richtlinie zur Aufgaben-Ausführungsrolle hinzu. Weitere Informationen finden Sie unter Hinzufügen und Entfernen von IAM-Richtlinien.

  • secretsmanager:GetSecretValue – Erforderlich, um die privaten Registry-Anmeldeinformationen von Secrets Manager abzurufen.

  • kms:Decrypt – Nur erforderlich, wenn Ihr Geheimnis einen benutzerdefinierten KMS-Schlüssel verwendet und nicht den Standardschlüssel. Der Amazon-Ressourcenname (ARN) für Ihren benutzerdefinierten Schlüssel muss als Ressource hinzugefügt werden.

Das folgende Beispiel einer Inline-Richtlinie fügt die Berechtigungen hinzu:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-east-1:111122223333:secret:secret_name", "arn:aws:kms:us-east-1:111122223333:key/key_id" ] } ] }

Berechtigungen für Secrets Manager oder Systems Manager

Diese Berechtigung erlaubt es dem Container-Agenten, die notwendigen AWS Systems Manager- oder Secrets-Manager-Ressourcen abzurufen. Weitere Informationen finden Sie unter Sensible Daten an einen Amazon-ECS-Container übergeben.

Verwenden von Secrets Manager

Um Zugriff auf die Secrets-Manager-Geheimnisse zu gewähren, die Sie erstellen, müssen Sie die folgenden Berechtigungen manuell zur Aufgabendefinitionsrolle hinzufügen. Informationen zum Verwalten von Berechtigungen finden Sie unter Hinzufügen und Entfernen von IAM-Identitätsberechtigungen im IAM-Benutzerhandbuch.

  • secretsmanager:GetSecretValue – Erforderlich, wenn Sie auf ein Secrets Manager-Geheimnis verweisen. Fügt die Berechtigung zum Abrufen des Secrets von Secrets Manager hinzu.

Das folgende Beispiel einer Richtlinie fügt die erforderlichen Berechtigungen hinzu.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-east-1:111122223333:secret:secret_name" ] } ] }

Verwenden von Systems Manager

Wichtig

Für Aufgaben, die den Starttyp EC2 verwenden, müssen Sie die ECS-Agent-Konfigurationsvariable ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE=true verwenden, um dieses Feature verwenden zu können. Sie können sie während der Erstellung der Container-Instance zur Datei ./etc/ecs/ecs.config hinzufügen oder sie zu einer vorhandenen Instance hinzufügen und dann den ECS-Agenten neu starten. Weitere Informationen finden Sie unter Konfiguration des Amazon-ECS-Container-Agenten.

Um Zugriff auf die von Ihnen erstellten Systems-Manager-Parameter-Store-Parameter zu erhalten, fügen Sie der Aufgabenausführungsrolle manuell die folgenden Berechtigungen als Inline Richtlinie hinzu. Informationen zum Verwalten von Berechtigungen finden Sie unter Hinzufügen und Entfernen von IAM-Identitätsberechtigungen im IAM-Benutzerhandbuch.

  • ssm:GetParameters – Erforderlich, wenn in einer Aufgabendefinition auf einen Parameter-Store-Parameter von Systems Manager verwiesen wird. Fügt die Berechtigung zum Abrufen von Systems-Manager-Parametern hinzu.

  • secretsmanager:GetSecretValue – Erforderlich, wenn Sie direkt auf ein Secrets-Manager-Geheimnis verweisen oder wenn der Parameter Systems Manager Parameter Store in einer Aufgabendefinition auf ein Secrets-Manager-Geheimnis verweist. Fügt die Berechtigung zum Abrufen des Secrets von Secrets Manager hinzu.

  • kms:Decrypt – Nur erforderlich, wenn Ihr Geheimnis einen kundenverwalteten Schlüssel verwendet und nicht den Standardschlüssel. Der ARN für Ihren benutzerdefinierten Schlüssel sollte als Ressource hinzugefügt werden. Fügt die Berechtigung zum Entschlüsseln des vom Kunden verwalteten Schlüssels hinzu.

Das folgende Beispiel einer Richtlinie fügt die erforderlichen Berechtigungen hinzu:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters", "secretsmanager:GetSecretValue", "kms:Decrypt" ], "Resource": [ "arn:aws:ssm:us-east-1:111122223333:parameter/parameter_name", "arn:aws:secretsmanager:us-east-1:111122223333:secret:secret_name", "arn:aws:kms:us-east-1:111122223333:key/key_id" ] } ] }

Berechtigungen für Fargate-Aufgaben, Amazon-ECR-Images über Schnittstellen-Endpunkte abzurufen

Beim Starten von Aufgaben, die Fargate verwenden und Images aus Amazon ECR abrufen, wenn Amazon ECR für die Verwendung eines Schnittstellen-VPC-Endpunkts konfiguriert ist, können Sie den Aufgabenzugriff auf eine bestimmte VPC oder einen bestimmten VPC-Endpunkt beschränken. Dazu erstellen Sie eine Aufgabenausführungsrolle für die zu verwendenden Aufgaben, die IAM-Bedingungsschlüssel nutzen.

Verwenden Sie die folgenden globalen IAM-Bedingungsschlüssel zum Einschränken des Zugriffs auf eine bestimmte VPC oder einen bestimmten VPC-Endpunkt. Weitere Informationen finden Sie unter Globale AWS-Bedingungskontextschlüssel.

  • aws:SourceVpc: Beschränkt den Zugriff auf eine bestimmte VPC. Sie können die VPC auf die VPC beschränken, die die Aufgabe und den Endpunkt hostet.

  • aws:SourceVpce: Beschränkt den Zugriff auf einen bestimmten VPC-Endpunkt.

Die folgenden Richtlinie einer Aufgabenausführungsrolle stellt ein Beispiel für das Hinzufügen von Bedingungsschlüsseln bereit:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "arn:aws:ecr:*:*:repository/*", "Condition": { "StringEquals": { "aws:sourceVpce": "vpce-0123456789abcdef0" } } } ] }

Amazon-ECR-Berechtigungen

Die folgenden Berechtigungen sind erforderlich, wenn Sie Container-Images aus privaten Amazon-ECR-Repositorys abrufen müssen. Die Aufgabenausführungsrolle sollte über diese Berechtigungen verfügen, damit die Amazon-ECS-Container und Fargate-Agenten Container-Images in Ihrem Namen abrufen können. Bei einfachen ECS-Implementierungen sollten diese Berechtigungen der Aufgabenausführungsrolle und nicht der Aufgaben-IAM-Rolle hinzugefügt werden.

Die verwaltete Richtlinie (AmazonECSTaskExecutionRolePolicy) für die Amazon-ECS-Aufgabenausführungsrolle enthält die erforderlichen Berechtigungen zum Abrufen von Images aus Amazon ECR. Wenn Sie die verwaltete Richtlinie verwenden, müssen Sie diese Berechtigungen nicht separat hinzufügen.

Wenn Sie eine benutzerdefinierte Richtlinie erstellen, fügen Sie die folgenden Berechtigungen hinzu, um das Abrufen von Images aus Amazon ECR zu ermöglichen:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer", "ecr:GetAuthorizationToken" ], "Resource": "*" } ] }

Beachten Sie, dass sich diese Berechtigungen von den Berechtigungen unterscheiden, die in der Aufgaben-IAM-Rolle möglicherweise erforderlich sind, wenn Ihr Anwendungscode direkt mit Amazon-ECR-APIs interagieren muss. Weitere Informationen über Berechtigungen für eine Aufgaben-IAM-Rolle für Amazon ECR finden Sie unter Amazon-ECR-Berechtigungen.

Berechtigungen für Amazon-S3-Dateispeicher

Wenn Sie eine Konfigurationsdatei angeben, die in Amazon S3 gehostet wird, muss die Aufgabenausführungsrolle die s3:GetObject-Berechtigung für die Konfigurationsdatei und die s3:GetBucketLocation-Berechtigung für den Amazon-S3-Bucket enthalten, in dem sich die Datei befindet. Weitere Informationen finden Sie unter Richtlinienaktionen für Amazon S3 im Benutzerhandbuch für Amazon Simple Storage Service.

Die folgende Beispielrichtlinie fügt die erforderlichen Berechtigungen zum Abrufen einer Datei aus Amazon S3 hinzu. Geben Sie den Namen des Amazon S3-Buckets und den Namen der Konfigurationsdatei an.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/folder_name/config_file_name" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ] } ] }