Private Registrierungsauthentifizierung für Aufgaben - Amazon ECS

Private Registrierungsauthentifizierung für Aufgaben

Die private Registry-Authentifizierung für Aufgaben mit AWS Secrets Manager ermöglicht es Ihnen, Ihre Anmeldeinformationen sicher zu speichern und dann auf diese in Ihrer Aufgabendefinition zu verweisen. Dies bietet eine Möglichkeit, auf Container-Images zu verweisen, die in privaten Registrys außerhalb von AWS vorhanden sind und in Ihren Aufgabendefinitionen eine Authentifizierung erfordern. Diese Funktion wird durch Aufgaben unterstützt, die auf Fargate, Amazon-EC2-Instances und externen Instances mit Amazon ECS Anywhere gehostet werden.

Wichtig

Wenn Ihre Aufgabendefinition auf ein im Amazon ECR gespeichertes Image verweist, trifft dieses Thema nicht zu. Weitere Informationen finden Sie unter Amazon ECR-Images mit Amazon ECS im Amazon Elastic Container-Registry-Benutzerhandbuch.

Für Aufgaben, die auf Fargate gehostet werden, erfordert diese Funktion die Plattformversion 1.2.0 oder höher. Weitere Informationen finden Sie unter AWS Fargate-Plattformversionen.

Geben Sie in Ihrer Containerdefinition das Objekt repositoryCredentials mit den Details des von Ihnen erstellten Geheimnisses an. Das Secret, auf das Sie verweisen, kann aus einer anderen AWS-Region oder einem anderen Konto stammen als die Aufgabe, die es verwendet.

Anmerkung

Wenn Sie die Amazon ECS-API, AWS CLI oder das AWS-SDK verwenden und das Secret sich in derselben AWS-Region befindet wie die gestartete Aufgabe, können Sie entweder den vollständigen ARN oder den Namen des Geheimnisses angeben. Wenn das Geheimnis in einem anderen Konto vorhanden ist, muss der vollständige ARN des Geheimnisses angegeben werden. Bei Verwendung der AWS Management Console müssen Sie den vollständigen ARN des Geheimnisses immer angeben.

Im Folgenden finden Sie einen Ausschnitt einer Aufgabendefinition, welche die erforderlichen Parameter zeigt:

"containerDefinitions": [ { "image": "private-repo/private-image", "repositoryCredentials": { "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name" } } ]

Erforderliche IAM-Berechtigungen für die private Registrierungsauthentifizierung

Die Amazon ECS-Aufgabenausführungsrolle ist erforderlich, um diese Funktion zu verwenden. Auf diese Weise kann der Container-Agent das Container-Image abrufen. Weitere Informationen finden Sie unter IAM-Rolle für die Amazon ECS-Aufgabenausführung.

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", "ssm:GetParameters", "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:secret_name", "arn:aws:kms:<region>:<aws_account_id>:key/key_id" ] } ] }

Aktivieren der privaten Registrierungsauthentifikation

So erstellen Sie ein Basis-Secret

Verwenden Sie AWS Secrets Manager zum Erstellen eines Secrets für Ihre privaten Registrierungsanmeldeinformationen.

  1. Öffnen Sie die AWS Secrets Manager-Konsole bei https://console.aws.amazon.com/secretsmanager/.

  2. Wählen Sie Store a new secret (Ein neues Secret speichern).

  3. Wählen Sie für Select secret type (Secret-Typ auswählen) die Option Other type of secrets (Anderer Secret-Typ) aus.

  4. Wählen Sie Plaintext (Klartext) aus und geben Sie Ihre privaten Registrierungsanmeldeinformationen in folgendem Format ein:

    { "username" : "privateRegistryUsername", "password" : "privateRegistryPassword" }
  5. Wählen Sie Next (Weiter).

  6. Geben Sie für Secret name (Secret-Name) einen optionalen Pfad und Namen ein, z. B. production/MyAwesomeAppSecret oder development/TestSecret, und wählen Sie Next (Weiter) aus. Optional können Sie eine Beschreibung hinzufügen. Mit dieser können Sie sich später besser an den Zweck dieses Secrets erinnern.

    Der Secret-Name darf nur ASCII-Zeichen, Ziffern oder eines der folgenden Zeichen enthalten: /_+=.@-.

  7. (Optional) Jetzt können Sie die Rotation für Ihr Secret konfigurieren. Belassen Sie die Option für dieses Verfahren auf Disable automatic rotation (Automatisches Rotieren deaktivieren) und klicken Sie auf Next (Weiter).

    Anweisungen dazu, wie Sie die Rotation für neue oder bestehende Geheimnisse konfigurieren, finden Sie unter Rotieren von AWS Secrets Manager-Geheimnissen.

  8. Überprüfen Sie die Einstellungen, und wählen Sie dann Store secret (Secret speichern) aus, um Ihre gesamte Eingabe als neues Secret im Secrets Manager zu speichern.

So erstellen Sie eine Aufgabendefinition, die die private Registrierungsauthentifizierung verwendet

  1. Öffnen Sie die Amazon ECS-Konsole unter https://console.aws.amazon.com/ecs/.

  2. Wählen Sie im Navigationsbereich Task Definitions aus.

  3. Wählen Sie auf der Seite Task Definitions Create new Task Definition aus.

  4. Wählen Sie auf der Seite Select launch type compatibility (Starttypkompatibilität auswählen) den Starttyp, den Ihre Aufgaben verwenden sollen, und wählen Sie dann Next step (Nächster Schritt) aus.

  5. Geben Sie unter Task Definition Name (Aufgabendefinitionsname) einen Namen für Ihre Aufgabendefinition ein. Bis zu 255 Buchstaben (Groß- und Kleinbuchstaben), Ziffern, Bindestriche und Unterstriche sind zulässig.

  6. Wählen Sie für Task execution role (Aufgabenausführungsrolle) entweder Ihre vorhandene Aufgabenausführungsrolle aus oder wählen Sie Create new role (Neue Rolle erstellen). Diese Rolle autorisiert Amazon ECS zum Abrufen von privaten Images für Ihre Aufgabe. Weitere Informationen finden Sie unter Erforderliche IAM-Berechtigungen für die private Registrierungsauthentifizierung.

    Wichtig

    Wenn das Feld Task execution role (Ausführungsrolle der Aufgabe) nicht angezeigt wird, wählen Sie Configure via JSON (Konfiguration über JSON) und fügen Sie executionRoleArn in das Feld hinzu, um Ihre Aufgabenausführungsrolle anzugeben. Nachfolgend wird die Syntax dargestellt:

    "executionRoleArn": "arn:aws:iam::aws_account_id:role/ecsTaskExecutionRole"
  7. Führen Sie für jeden Container, der in Ihrer Aufgabendefinition erstellt werden soll, die folgenden Schritte aus:

    1. Wählen Sie im Abschnitt Container Definitions (Containerdefinitionen) die Option Add Container (Container hinzufügen) aus.

    2. Geben Sie für Container name (Containername) den Namen für Ihren Container ein. Bis zu 255 Buchstaben (Groß- und Kleinbuchstaben), Ziffern, Bindestriche und Unterstriche sind zulässig.

    3. Geben Sie für Image (Abbild) den Image-Namen oder Pfad zu Ihrem privaten Image ein. Bis zu 255 Buchstaben (Groß- und Kleinbuchstaben), Ziffern, Bindestriche und Unterstriche sind zulässig.

    4. Wählen Sie die Option Private repository authentication (Private Repository-Authentifizierung) aus.

    5. Geben Sie für Secrets manager ARN (Secrets Manager-ARN) den vollständige Amazon-Ressourcennamen (ARN) für das Secret ein, das Sie zuvor erstellt haben. Der Wert muss zwischen 20 und 2048 Zeichen haben.

    6. Füllen Sie die verbleibenden Pflichtfelder und beliebige optionale Felder aus, die Sie in Ihren Containerdefinitionen verwenden möchten. Weitere Containerdefinitionsparameter sind im Menü Advanced container configuration (Erweiterte Containerkonfiguration) verfügbar. Weitere Informationen finden Sie unter Aufgabendefinitionsparameter.

    7. Wählen Sie Add (Hinzufügen) aus.

  8. Wenn Ihre Container hinzugefügt werden, wählen Sie Create (Erstellen) aus.