IAM-Rolle für die Amazon-ECS-Aufgabenausführung - 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.

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. Informationen zu den IAM-Berechtigungen, die Ihre Anwendung zur Ausführung benötigt, finden Sie unter IAM-Rolle für Amazon ECS-Aufgaben.

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

  • Ihre Aufgabe wird auf AWS Fargateoder auf einer externen Instanz gehostet und:

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

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

    • sendet CloudWatch Container-Protokolle mithilfe des Protokolltreibers an awslogs Logs. Weitere Informationen finden Sie unter Amazon ECS-Protokolle senden an CloudWatch .

  • Ihre Aufgaben werden entweder auf Amazon EC2-Instances AWS Fargate oder auf Amazon EC2 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 stellt die verwaltete Richtlinie mit dem Namen AmazonECS bereitTaskExecutionRolePolicy , die die Berechtigungen enthält, die für die oben beschriebenen allgemeinen Anwendungsfälle erforderlich sind. Weitere Informationen finden Sie unter AmazonECS TaskExecutionRolePolicy im AWS Managed Policy Reference Guide. Für spezielle Anwendungsfälle kann es erforderlich sein, Ihrer Rolle zur Aufgabenausführung Inline-Richtlinien hinzuzufügen

Die Amazon ECS-Konsole erstellt eine Rolle zur Aufgabenausführung. Sie können die verwaltete IAM-Richtlinie für Aufgaben manuell anhängen, damit Amazon ECS Berechtigungen für future Funktionen und Verbesserungen hinzufügen kann, sobald diese eingeführt werden. Sie können die Suche in der IAM-Konsole verwenden, um zu suchen ecsTaskExecutionRole und festzustellen, ob Ihr Konto bereits über die Rolle „Aufgabenausführung“ verfügt. Weitere Informationen finden Sie unter IAM-Konsolensuche im IAM-Benutzerhandbuch.

Wenn Sie als authentifizierter Benutzer Bilder abrufen, ist es weniger wahrscheinlich, dass Sie von den Änderungen an den Pull-Rate-Limits von Docker Hub 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 Rolle zur Aufgabenausführung verfügt, gehen Sie wie folgt vor, um die Rolle zu erstellen.

AWS Management Console
So erstellen Sie die Servicerolle für Elastic Container Service (IAM-Konsole)
  1. Melden Sie sich bei der an AWS Management Console 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 Elastic Container Service und dann den Anwendungsfall Elastic Container Service Task aus.

  5. Wählen Sie Weiter aus.

  6. Suchen Sie im Abschnitt Berechtigungen hinzufügen nach AmazonECS TaskExecutionRolePolicy und wählen Sie dann die Richtlinie aus.

  7. Wählen Sie Weiter aus.

  8. Geben Sie als Rollenname ecsTaskExecution Role ein.

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

AWS CLI

Ersetzen Sie alle Benutzereingaben 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:

    { "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 AWS verwaltete AmazonECSTaskExecutionRolePolicy Richtlinie an die ecsTaskExecutionRole Rolle 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 Funktionen hinzu.

Funktion

Zusätzliche Berechtigungen

Verwenden Sie Secrets Manager Manager-Anmeldeinformationen, um auf Ihr privates Container-Image-Repository zuzugreifen

Authentifizierungsberechtigungen für private Registrierungen

Übergeben Sie sensible Daten mit Systems Manager oder Secrets Manager

Secrets Manager- oder Systems Manager Manager-Berechtigungen

Lassen Sie Fargate-Aufgaben Amazon ECR-Bilder über Schnittstellenendpunkte abrufen

Fargate-Aufgaben: Abrufen von Amazon ECR-Images über die Berechtigungen von Schnittstellen-Endpunkten

Hosten Sie Konfigurationsdateien in einem Amazon S3 S3-Bucket

Amazon S3 S3-Dateispeicherberechtigungen

Container Insights für die Anzeige von Amazon ECS-Lebenszyklusereignissen konfigurieren

Erforderliche Berechtigungen zum Konfigurieren von Container Insights zur Anzeige von Lebenszyklusereignissen von Amazon ECS

Amazon ECS-Lebenszyklusereignisse in Container Insights anzeigen

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

Authentifizierungsberechtigungen für private Registrierungen

Um Zugriff auf die Secrets zu gewähren, die Sie erstellen, müssen Sie die folgenden Berechtigungen als eingebundene Richtlinie zur Aufgabendefinitionsrolle hinzufügen. Weitere Informationen finden Sie unter Hinzufügen und Entfernen von IAM-Richtlinien.

  • secretsmanager:GetSecretValue

  • kms:Decrypt: Nur erforderlich, wenn Ihr Schlüssel einen benutzerdefinierten KMS-Schlüssel verwendet und nicht den Standard-Schlü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:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:secret_name", "arn:aws:kms:<region>:<aws_account_id>:key/key_id" ] } ] }

Secrets Manager- oder Systems Manager Manager-Berechtigungen

Die Erlaubnis, dem Container-Agenten zu erlauben, die erforderlichen AWS Systems Manager oder Secrets Manager Manager-Ressourcen abzurufen. Weitere Informationen finden Sie unter Übergeben Sie sensible Daten an einen Amazon ECS-Container.

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.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:region:aws_account_id: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:

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

Fargate-Aufgaben: Abrufen von Amazon ECR-Images über die Berechtigungen von Schnittstellen-Endpunkten

Wenn es einen VPC-Endpunkt für ecr.dkr und ecr.api in derselben VPC wie eine Fargate-Aufgabe gibt, verwendet der den Endpunkt. Wenn es keinen VPC-Endpunkt gibt, verwendet die Aufgabe die Fargate-eigene Schnittstelle.

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

Amazon S3 S3-Dateispeicherberechtigungen

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 S3-Bucket enthalten, in dem sich die Datei befindet. Weitere Informationen finden Sie unter Festlegen von Berechtigungen in einer Richtlinie im Benutzerhandbuch zu Amazon Simple Storage Service.

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/folder_name/config_file_name" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ] } ] }

Erforderliche Berechtigungen zum Konfigurieren von Container Insights zur Anzeige von Lebenszyklusereignissen von Amazon ECS

Die folgenden Berechtigungen sind in der Aufgabenrolle erforderlich, um die Lebenszyklusereignisse zu konfigurieren:

  • Ereignisse: PutRule

  • Ereignisse: PutTargets

  • Protokolle: CreateLogGroup

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "events:PutRule", "events:PutTargets", "logs:CreateLogGroup" ], "Resource": "*" } ] }

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

Die folgenden Berechtigungen sind erforderlich, um die Lebenszyklusereignisse anzuzeigen. Fügen Sie die folgenden Berechtigungen als eingebundene Richtlinie zur Aufgabenausführungsrolle hinzu. Weitere Informationen finden Sie unter Hinzufügen und Entfernen von IAM-Richtlinien.

  • Ereignisse: DescribeRule

  • Ereignisse: ListTargetsByRule

  • Protokolle: DescribeLogGroups

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "events:DescribeRule", "events:ListTargetsByRule", "logs:DescribeLogGroups" ], "Resource": "*" } ] }