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.

Anmerkung

Auf diese Berechtigungen können die Container in der Aufgabe nicht zugreifen. 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-Instances AWS Fargate oder auf EC2 Amazon-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 Amazon bereit ECSTaskExecutionRolePolicy , die die Berechtigungen enthält, die für die oben beschriebenen allgemeinen Anwendungsfälle erforderlich sind. Weitere Informationen finden Sie unter Amazon ECSTask ExecutionRolePolicy 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 in Bezug auf Nutzung und Beschränkungen betroffen sind. Docker Hub 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 Amazon ECSTask ExecutionRolePolicy 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 alles user input 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

Rufen Sie Container-Images von privaten Registern außerhalb von AWS (wie Docker Hub, Quay.io oder Ihrer eigenen privaten Registrierung) mit Secrets Manager Manager-Anmeldeinformationen ab

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 zur Anzeige von Amazon ECS-Lebenszyklusereignissen konfigurieren

Erforderliche Berechtigungen für die Aktivierung von Amazon ECS-Lebenszyklusereignissen in Container Insights

Amazon ECS-Lebenszyklusereignisse in Container Insights anzeigen

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

Authentifizierungsberechtigungen für private Registrierungen

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

Weitere Informationen zur Konfiguration der privaten Registrierungsauthentifizierung finden Sie unter Verwenden von AWS Non-Container-Images in Amazon ECS.

Um Zugriff auf die Geheimnisse zu gewähren, die Ihre privaten Registrierungsdaten enthalten, fügen Sie der Rolle „Aufgabenausführung“ die folgenden Berechtigungen als Inline-Richtlinie hinzu. Weitere Informationen finden Sie unter Hinzufügen und Entfernen von IAM-Richtlinien.

  • secretsmanager:GetSecretValue— Erforderlich, um die privaten Registrierungsdaten 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:

{ "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 vertrauliche 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 EC2 Starttyp verwenden, müssen Sie die Konfigurationsvariable des ECS-Agenten verwendenECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE=true, um diese Funktion nutzen 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

Beim Starten von Aufgaben, die den Starttyp 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:

{ "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": "*", "Condition": { "StringEquals": { "aws:sourceVpce": "vpce-xxxxxx", "aws:sourceVpc": "vpc-xxxxx" } } } ] }

Amazon-ECR-Berechtigungen

Die folgenden Berechtigungen sind erforderlich, wenn Sie Container-Images aus privaten Amazon ECR-Repositorys abrufen müssen. Die Rolle zur Aufgabenausführung sollte über diese Berechtigungen verfügen, damit der Amazon ECS-Container und die 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ührung enthält die erforderlichen Berechtigungen zum Abrufen von Bildern 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 Bildern aus Amazon ECR zu ermöglichen:

{ "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. Informationen zu Aufgaben-IAM-Rollenberechtigungen für Amazon ECR finden Sie unter. Amazon-ECR-Berechtigungen

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 Richtlinienaktionen für Amazon S3 im Amazon Simple Storage Service-Benutzerhandbuch.

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:::amzn-s3-demo-bucket/folder_name/config_file_name" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ] } ] }