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 Aufgabe.

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

  • Ihre Aufgabe wird auf 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 von dem Konto unterscheidet, das die Aufgabe ausführt.

    • sendet Container-Protokolle mithilfe des -awslogsProtokolltreibers an CloudWatch -Protokolle. Weitere Informationen finden Sie unter Verwenden des awslogs-Protokolltreibers.

  • Ihre Aufgaben werden entweder auf AWS Fargate oder Amazon EC2 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. Es kann erforderlich sein, für spezielle Anwendungsfälle, die unten beschrieben werden, eingebundene Richtlinien zu Ihrer Aufgabenausführungsrolle hinzuzufügen.

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

Die Amazon-ECS-Aufgabenausführungsrolle kann für Sie in der Amazon-ECS-Konsole erstellt werden. Allerdings sollten Sie 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-Konsolensuche verwenden, um nach zu suchen ecsTaskExecutionRole und zu sehen, ob Ihr Konto bereits über die Aufgabenausführungsrolle verfügt. Weitere Informationen finden Sie unter IAM-Konsolensuche im IAM-Benutzerhandbuch.

Erstellen der ecsTaskExecutionRole-Aufgabenausführungsrolle

Wenn Ihr Konto noch keine Aufgabenausführungsrolle hat, führen Sie die folgenden Schritte aus, um die Rolle zu erstellen.

AWS Management Console
So erstellen Sie eine IAM-Aufgabenausführungsrolle (AWS Management Console):
  1. Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich Roles (Rollen) und Create Role (Rolle erstellen) aus.

  3. Wählen Sie im Abschnitt Trusted entity type (Vertrauenswürdiger Entitätstyp) AWS -Service, Elastic Container Service aus.

  4. Wählen Sie für Anwendungsfall Aufgabe von Elastic Container Service und dann Weiter aus.

  5. Gehen Sie im Abschnitt Berechtigungen hinzufügen wie folgt vor:

    1. Suchen Sie nach AmazonECSTaskExecutionRolePolicy und wählen Sie dann die Richtlinie aus.

    2. Wählen Sie unter Set permissions boundary (optional) (Berechtigungsgrenze festlegen (optional)) Create role withough a permission boundary (Rolle ohne Berechtigungsgrenze erstellen) aus.

    3. Wählen Sie Weiter aus.

  6. Gehen Sie unter Name, Überprüfung und Erstellung wie folgt vor:

    1. Geben Sie für Role name (Rollenname) ecsTaskExecutionRole ein.

    2. Geben Sie für Add tags (optional) Tags hinzufügen (optional) alle benutzerdefinierten Tags an, die der Richtlinie zugeordnet werden sollen.

  7. Wählen Sie Rolle erstellen aus.

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

Erforderliche IAM-Berechtigungen für die private Registrierungsauthentifizierung

Die Amazon-ECS-Aufgabenausführungsrolle ist erforderlich, um dieses Feature zu verwenden. Auf diese Weise kann der Container-Agent das Container-Image abrufen.

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" ] } ] }

Erforderliche IAM-Berechtigungen für Amazon-ECS-Secrets

Zum Verwenden des Features der Amazon-ECS-Secrets benötigen Sie die Amazon-ECS-Aufgabenausführungsrolle und müssen in Ihrer Aufgabendefinition auf sie verweisen. Auf diese Weise kann der Container-Agent die erforderlichen - AWS Systems Manager oder Secrets-Manager-Ressourcen abrufen. Weitere Informationen finden Sie unter Sensible Daten an einen 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.

{ "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" ] } ] }

Optionale IAM-Berechtigungen für Fargate-Aufgaben, die Amazon ECR-Images über Schnittstellen-Endpunkte abrufen

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.

  • 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:

Wichtig

Auf die ecr:GetAuthorizationToken API-Aktion können nicht die aws:sourceVpce Bedingungsschlüssel aws:sourceVpc oder angewendet werden, da der GetAuthorizationToken API-Aufruf über die Elastic-Network-Schnittstelle erfolgt, die AWS Fargate gehört, und nicht über die Elastic-Network-Schnittstelle der Aufgabe.

{ "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" } } } ] }