Die Verwendung von gMSA for Linux Container auf Fargate - 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.

Die Verwendung von gMSA for Linux Container auf Fargate

Amazon ECS unterstützt die Active Directory-Authentifizierung für Linux-Container auf Fargate über ein spezielles Dienstkonto, das als Group Managed Service Account bezeichnet wird (gMSA).

Linux basierte Netzwerkanwendungen, wie .NET Kernanwendungen können Active Directory verwenden, um die Authentifizierung und Autorisierungsverwaltung zwischen Benutzern und Diensten zu vereinfachen. Sie können dieses Feature nutzen, indem Sie Anwendungen entwickeln, die mit Active Directory integriert sind und auf Domain-verbundenen Servern laufen. Aber weil Linux Container können nicht in eine Domäne eingebunden werden, Sie müssen eine konfigurieren Linux Container, mit dem ausgeführt werden soll gMSA.

Überlegungen

Beachten Sie vor der Verwendung Folgendes gMSA for Linux Container auf Fargate:

  • Sie müssen Plattformversion 1.4 oder höher ausführen.

  • Möglicherweise benötigen Sie eine Windows Computer, der der Domäne beigetreten ist, um die Voraussetzungen zu erfüllen. Beispielsweise benötigen Sie möglicherweise eine Windows Computer, der der Domäne beigetreten ist, um das zu erstellen gMSA im Active Directory mit PowerShell. Das RSAT Active PowerShell Director-Tools sind nur verfügbar für Windows. Weitere Informationen finden Sie unter Installation der Active Directory-Verwaltungstools.

  • Sie müssen Domainless verwenden gMSA.

    Amazon ECS verwendet eine Active Directory-Anmeldeinformationsspezifikationsdatei (CredSpec). Diese Datei enthält gMSA Metadaten, die verwendet werden, um das zu verbreiten gMSA Kontokontext zum Container. Sie generieren den CredSpec Datei, und speichern Sie sie dann in einem Amazon S3 S3-Bucket.

  • Eine Aufgabe kann nur ein Active Directory unterstützen.

Voraussetzungen

Bevor Sie das verwenden gMSA Für die Linux-Container-Funktion mit Amazon ECS stellen Sie sicher, dass Sie die folgenden Schritte ausführen:

  • Sie richten eine Active-Directory-Domain mit den Ressourcen ein, auf die Ihre Container zugreifen sollen. Amazon ECS unterstützt die folgenden Einrichtungen:

    • Ein AWS Directory Service Active Directory. AWS Directory Service ist ein AWS verwaltetes Active Directory, das auf Amazon gehostet wird EC2. Weitere Informationen finden Sie unter Erste Schritte mit AWS Managed Microsoft AD im AWS Directory Service Administratorhandbuch.

    • Ein On-Premises-Active-Directory. Sie müssen sicherstellen, dass die Container-Instance von Amazon ECS Linux der Domain beitreten kann. Weitere Informationen finden Sie unter AWS Direct Connect.

  • Sie haben ein vorhandenes gMSA Konto im Active Directory und ein Benutzer, der berechtigt ist, auf das zuzugreifen gMSA Dienstkonto. Weitere Informationen finden Sie unter Machen Sie einen Active Directory-Benutzer für Domainless gMSA.

  • Sie haben einen Amazon S3 S3-Bucket. Weitere Informationen finden Sie unter Bucket erstellen im Amazon S3 S3-Benutzerhandbuch.

Einrichtung gMSA-fähig Linux Container auf Amazon ECS

Die Infrastruktur vorbereiten

Bei den folgenden Schritten handelt es sich um Überlegungen und Einstellungen, die einmal durchgeführt werden müssen.

  • Machen Sie einen Active Directory-Benutzer für Domainless gMSA

    Wenn Sie Domainless verwenden gMSA, der Container ist nicht mit der Domain verbunden. Andere Anwendungen, die auf dem Container ausgeführt werden, können die Anmeldeinformationen nicht für den Zugriff auf die Domäne verwenden. Aufgaben, die eine andere Domain verwenden, können auf demselben Container ausgeführt werden. Sie geben den Namen eines Geheimnisses AWS Secrets Manager in der CredSpec file. Das Secret muss einen Benutzernamen, ein Passwort und die Domain enthalten, bei der die Anmeldung erfolgen soll.

    Diese Funktion ähnelt der gMSA support for non-domain-joined container hostsMerkmal. Weitere Informationen zur Windows-Funktion finden Sie unter gMSA Architektur und Verbesserungen auf der Microsoft Learn-Website.

    1. Konfigurieren Sie einen Benutzer in Ihrer Active Directory-Domäne. Der Benutzer im Active Directory muss berechtigt sein, auf die zuzugreifen gMSA Dienstkonto, das Sie für die Aufgaben verwenden.

    2. Sie haben eine VPC und Subnetze, die den Active Directory-Domainnamen auflösen können. Konfigurieren Sie die VPC mit DHCP-Optionen mit dem Domänennamen, der auf den Active Directory-Dienstnamen verweist. Informationen zur Konfiguration von DHCP-Optionen für eine VPC finden Sie unter Arbeiten mit DHCP-Optionssätzen im Amazon Virtual Private Cloud Cloud-Benutzerhandbuch.

    3. Erstellen Sie ein Geheimnis in. AWS Secrets Manager

    4. Erstellen Sie die Datei mit den Anmeldeinformationen.

Einrichten von Berechtigungen und Secrets

Führen Sie die folgenden Schritte einmal für jede Anwendung und jede Aufgabendefinition aus. Wir empfehlen Ihnen, die bewährte Methode anzuwenden, die geringste Berechtigung zu gewähren und die in der Richtlinie verwendeten Berechtigungen einzuschränken. Auf diese Weise kann jede Aufgabe nur die Secrets lesen, die sie benötigt.

  1. Erstellen Sie einen Benutzer in Ihrer Active-Directory-Domain. Der Benutzer in Active Directory muss über die Zugriffsberechtigung für verfügen gMSA Dienstkonten, die Sie für die Aufgaben verwenden.

  2. Nachdem Sie den Active Directory-Benutzer eingerichtet haben, erstellen Sie ein Geheimnis in AWS Secrets Manager. Weitere Informationen finden Sie unter Ein AWS Secrets Manager -Secret erstellen.

  3. Geben Sie den Benutzernamen, das Passwort und die Domain des Benutzers in JSON-Schlüssel-Wert-Paare mit den Bezeichnungen username, password bzw. domainName, ein.

    {"username":"username","password":"passw0rd", "domainName":"example.com"}
  4. Sie müssen die folgenden Berechtigungen als eingebundene Richtlinie zu der IAM-Rolle für die Aufgabenausführung hinzufügen. Dadurch erhält der credentials-fetcher-Daemon Zugriff auf das Secrets-Manager-Secret. Ersetzen Sie das Beispiel-MySecret durch den Amazon-Ressourcenname (ARN) Ihres Secrets in der Resource-Liste.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:aws-region:111122223333:secret:MySecret" ] } ] }
    Anmerkung

    Wenn Sie Ihren eigenen KMS-Schlüssel verwenden, um Ihr Geheimnis zu verschlüsseln, müssen Sie dieser Rolle die erforderlichen Berechtigungen hinzufügen und diese Rolle der AWS KMS Schlüsselrichtlinie hinzufügen.

  5. Fügen Sie die Anmeldeinformationsspezifikation zu einem Amazon-S3-Bucket hinzu. Dann verweisen Sie auf den Amazon-Ressourcennamen (ARN) des Amazon-S3-Buckets im credentialSpecs-Feld der Aufgabendefinition.

    { "family": "", "executionRoleArn": "", "containerDefinitions": [ { "name": "", ... "credentialSpecs": [ "credentialspecdomainless:arn:aws:s3:::${BucketName}/${ObjectName}" ], ... } ], ... }

    Um Ihren Aufgaben den Zugriff auf den S3-Bucket zu ermöglichen, fügen Sie die folgenden Berechtigungen als eingebundene Richtlinie zur IAM-Rolle für die Aufgabenausführung von Amazon ECS hinzu.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListObject" ], "Resource": [ "arn:aws:s3:::{bucket_name}", "arn:aws:s3:::{bucket_name}/{object}" ] } ] }

Anmeldeinformationsspezifikationsdatei

Amazon ECS verwendet eine Active Directory-Anmeldeinformationsspezifikationsdatei (CredSpec). Diese Datei enthält gMSA Metadaten, die verwendet werden, um das zu verbreiten gMSA Kontokontext zum Linux Container. Sie generieren den CredSpec und referenzieren Sie in dem credentialSpecs Feld in Ihrer Aufgabendefinition darauf. Das Tool CredSpec Die Datei enthält keine Geheimnisse.

Das Folgende ist ein Beispiel CredSpec file.

{ "CmsPlugins": [ "ActiveDirectory" ], "DomainJoinConfig": { "Sid": "S-1-5-21-2554468230-2647958158-2204241789", "MachineAccountName": "WebApp01", "Guid": "8665abd4-e947-4dd0-9a51-f8254943c90b", "DnsTreeName": "example.com", "DnsName": "example.com", "NetBiosName": "example" }, "ActiveDirectoryConfig": { "GroupManagedServiceAccounts": [ { "Name": "WebApp01", "Scope": "example.com" } ], "HostAccountConfig": { "PortableCcgVersion": "1", "PluginGUID": "{859E1386-BDB4-49E8-85C7-3070B13920E1}", "PluginInput": { "CredentialArn": "arn:aws:secretsmanager:aws-region:111122223333:secret:MySecret" } } } }
Erstellen eines CredSpec und es auf einen Amazon S3 hochladen

Du erstellst ein CredSpec mit dem CredSpec PowerShell Modul auf einem Windows Computer, der der Domäne beigetreten ist. Folgen Sie den Schritten unter Create a Credential Specification auf dem Microsoft Website lernen.

Nachdem Sie die Datei mit den Anmeldeinformationen erstellt haben, laden Sie sie in einen Amazon S3 S3-Bucket hoch. Kopieren Sie die CredSpec Datei auf den Computer oder die Umgebung, in der Sie AWS CLI Befehle ausführen.

Führen Sie den folgenden AWS CLI Befehl aus, um Folgendes hochzuladen CredSpec zu Amazon S3. Ersetzen Sie amzn-s3-demo-bucket durch den Namen Ihres Amazon-S3-Buckets. Sie können die Datei als Objekt in einem beliebigen Bucket und an einem beliebigen Ort speichern, müssen jedoch in der Richtlinie, die Sie der Aufgabenausführungsrolle zuordnen, den Zugriff auf diesen Bucket und diesen Speicherort gewähren.

Verwenden PowerShell Sie für den folgenden Befehl:

$ Write-S3Object -BucketName "amzn-s3-demo-bucket" -Key "ecs-domainless-gmsa-credspec" -File "gmsa-cred-spec.json"

Der folgende AWS CLI Befehl verwendet Backslash-Fortsetzungszeichen, die von sh und kompatiblen Shells verwendet werden.

$ aws s3 cp gmsa-cred-spec.json \ s3://amzn-s3-demo-bucket/ecs-domainless-gmsa-credspec