Verwenden von Amazon ECS Windows-Containern mit Domainless gMSA unter Verwendung der AWS CLI - 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.

Verwenden von Amazon ECS Windows-Containern mit Domainless gMSA unter Verwendung der AWS CLI

Das folgende Tutorial zeigt, wie Sie eine ECS Amazon-Aufgabe erstellen, die einen Windows-Container ausführt, der über Anmeldeinformationen für den Zugriff auf Active Directory mit verfügt AWS CLI. Durch die Verwendung von Domainlose gMSA, die Container-Instance ist nicht mit der Domain verbunden, andere Anwendungen auf der Instance können die Anmeldeinformationen nicht verwenden, um auf die Domain zuzugreifen, und Aufgaben, die verschiedenen Domains angehören, können auf derselben Instance ausgeführt werden.

Voraussetzungen

In diesem Tutorial wird davon ausgegangen, dass die folgenden Voraussetzungen erfüllt wurden:

  • Die Schritte in Einrichtung für die Verwendung von Amazon ECS wurden ausgeführt.

  • Ihr AWS Benutzer verfügt über die erforderlichen Berechtigungen, die im ECSAmazonas_ FullAccess IAM Richtlinienbeispiel angegeben sind.

  • Die neueste Version von AWS CLI ist installiert und konfiguriert. Weitere Informationen über die Installation oder Aktualisierung Ihres AWS CLI finden Sie unter Installieren von AWS Command Line Interface.

  • 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 wirdEC2. 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 Amazon ECS Container-Instance der Domain beitreten kann. Weitere Informationen finden Sie unter AWS Direct Connect.

  • Sie haben ein VPC und Subnetze, die den Active Directory-Domainnamen auflösen können.

  • Sie haben zwischen domänenlos gewählt gMSAund das Zusammenfügen jeder Instanz zu einer einzigen Domain. Durch die Verwendung von Domainlose gMSA, die Container-Instance ist nicht mit der Domain verbunden, andere Anwendungen auf der Instance können die Anmeldeinformationen nicht verwenden, um auf die Domain zuzugreifen, und Aufgaben, die verschiedenen Domains angehören, können auf derselben Instance ausgeführt werden.

    Wählen Sie dann den Datenspeicher für CredSpec und optional für die Active-Directory-Benutzeranmeldeinformationen für domainlose gMSA.

    Amazon ECS verwendet eine Spezifikationsdatei für Active-Directory-Anmeldeinformationen (CredSpec) enthalten. Diese Datei enthält die gMSA Metadaten, die verwendet werden, um das zu verbreiten gMSA Kontokontext zum Container. Sie generieren das CredSpec Datei und speichern sie dann in einem der CredSpec Speicheroptionen in der folgenden Tabelle, die für das Betriebssystem der Container-Instances spezifisch sind. Um die domänenlose Methode zu verwenden, finden Sie einen optionalen Abschnitt im CredSpec Die Datei kann Anmeldeinformationen in einem der folgenden Felder angeben domainless user credentialsSpeicheroptionen in der folgenden Tabelle, die für das Betriebssystem der Container-Instances spezifisch sind.

    Speicherort Linux Windows
    Amazon Simple Storage Service CredSpec CredSpec
    AWS Secrets Manager Domainlose Benutzer-Anmeldeinformationen Domainlose Benutzer-Anmeldeinformationen
    Amazon EC2 Systems Manager Parameter Manager Parameter Manager Parameter Manager Parameter Manager CredSpec CredSpec, domainlose Benutzer-Anmeldeinformationen
    Lokale Datei N/A CredSpec
  • (Optional) AWS CloudShell ist ein Tool, das Kunden eine Befehlszeile bietet, ohne eine eigene EC2 Instance erstellen zu müssen. Weitere Informationen finden Sie unter Was ist AWS CloudShell? im AWS CloudShell Benutzerhandbuch.

Schritt 1: Erstellen und Konfigurieren der gMSA Konto bei Active Directory-Domänendienste (AD DS)

Erstellen und Konfigurieren einer gMSA Konto in der Active Directory-Domain.

  1. Ein Stammschlüssel für den Schlüsselverteilungs-Service generieren
    Anmerkung

    Wenn Sie verwenden AWS Directory Service, können Sie diesen Schritt überspringen.

    Der KDS Root-Schlüssel und gMSA Berechtigungen werden mit dem AWS Managed Microsoft AD konfiguriert.

    Wenn Sie noch keinen erstellt haben gMSA Dienstkonto in Ihrer Domain, Sie müssen zunächst einen Stammschlüssel für den Key Distribution Service (KDS) generieren. Der KDS ist verantwortlich für die Erstellung, Rotation und Veröffentlichung gMSA Passwort für autorisierte Hosts. Wenn sie abgerufen ccg.exe werden müssen gMSA Anmeldeinformationen, es kontaktiert es, KDS um das aktuelle Passwort abzurufen.

    Um zu überprüfen, ob der KDS Stammschlüssel bereits erstellt wurde, führen Sie das folgende PowerShell Cmdlet mit Domainadministratorrechten auf einem Domain-Controller mithilfe des ActiveDirectory PowerShell Moduls aus. Weitere Informationen zu dem Modul finden Sie unter ActiveDirectory Modul auf der Microsoft-Learn-Website.

    PS C:\> Get-KdsRootKey

    Wenn der Befehl eine Schlüssel-ID zurückgibt, können Sie den Rest dieses Schritts überspringen. Erstellen Sie andernfalls den KDS Stammschlüssel, indem Sie den folgenden Befehl ausführen:

    PS C:\> Add-KdsRootKey -EffectiveImmediately

    Obwohl das Argument EffectiveImmediately des Befehls impliziert, dass der Schlüssel sofort gültig ist, müssen Sie 10 Stunden warten, bis der KDS Stammschlüssel repliziert und auf allen Domain-Controllern verwendet werden kann.

  2. Erstellen der gMSA Konto

    Um das zu erstellen der gMSA Konto und erlaube demccg.exe, das abzurufen gMSA Passwort, führen Sie die folgenden PowerShell Befehle von einem Windows Server oder Client mit Zugriff auf die Domain aus. ExampleAccountErsetzen Sie durch den Namen, den Sie für Ihre wünschen. gMSA Konto.

    1. PS C:\> Install-WindowsFeature RSAT-AD-PowerShell
    2. PS C:\> New-ADGroup -Name "ExampleAccount Authorized Hosts" -SamAccountName "ExampleAccountHosts" -GroupScope DomainLocal
    3. PS C:\> New-ADServiceAccount -Name "ExampleAccount" -DnsHostName "contoso" -ServicePrincipalNames "host/ExampleAccount", "host/contoso" -PrincipalsAllowedToRetrieveManagedPassword "ExampleAccountHosts"
    4. Erstellen Sie einen Benutzer mit einem permanenten Passwort, das nicht abläuft. Diese Anmeldeinformationen werden in gespeichert AWS Secrets Manager und von jeder Aufgabe verwendet, um sich mit der Domain zu verbinden.

      PS C:\> New-ADUser -Name "ExampleAccount" -AccountPassword (ConvertTo-SecureString -AsPlainText "Test123" -Force) -Enabled 1 -PasswordNeverExpires 1
    5. PS C:\> Add-ADGroupMember -Identity "ExampleAccountHosts" -Members "ExampleAccount"
    6. Installieren Sie das PowerShell Modul zum Erstellen CredSpec Objekte in Active Directory und geben Sie die aus CredSpec JSON.

      PS C:\> Install-PackageProvider -Name NuGet -Force
      PS C:\> Install-Module CredentialSpec
    7. PS C:\> New-CredentialSpec -AccountName ExampleAccount
  3. Kopieren Sie die JSON Ausgabe des vorherigen Befehls in eine Datei mit dem Namengmsa-cred-spec.json. Das ist der CredSpec file. Sie wird in Schritt 3, Schritt 3: Ändern Sie Ihre CredSpec JSONum Domainless einzubeziehen gMSA Informationen, verwendet.

Schritt 2: Die Anmeldeinformationen in Secrets Manager hochladen

Kopieren Sie die Active-Directory-Anmeldeinformationen in ein sicheres Speichersystem für Anmeldeinformationen, sodass sie bei jeder Aufgabe abgerufen werden. Das ist das Domainlose gMSA Methode. Durch die Verwendung von Domainlose gMSA, die Container-Instance ist nicht mit der Domain verbunden, andere Anwendungen auf der Instance können die Anmeldeinformationen nicht verwenden, um auf die Domain zuzugreifen, und Aufgaben, die verschiedenen Domains angehören, können auf derselben Instance ausgeführt werden.

In diesem Schritt wird der verwendet AWS CLI. Sie können diese Befehle in AWS CloudShell in der Standard-Shell ausführen, und zwar bash.

  • Führen Sie den folgenden AWS CLI Befehl aus und ersetzen Sie den Benutzernamen, das Passwort und den Domainnamen, um sie Ihrer Umgebung anzupassen. Bewahren Sie das ARN Geheimnis auf, das Sie im nächsten Schritt verwenden möchten. Schritt 3: Ändern Sie Ihre CredSpec JSONum Domainless einzubeziehen gMSA Informationen

    Der folgende Befehl verwendet Backslash-Fortsetzungszeichen, die von sh und kompatiblen Shells verwendet werden. Dieser Befehl ist nicht kompatibel mit PowerShell. Sie müssen den Befehl ändern, um ihn mit verwenden zu können PowerShell.

    $ aws secretsmanager create-secret \ --name gmsa-plugin-input \ --description "Amazon ECS - gMSA Portable Identity." \ --secret-string "{\"username\":\"ExampleAccount\",\"password\":\"Test123\",\"domainName\":\"contoso.com\"}"

Schritt 3: Ändern Sie Ihre CredSpec JSONum Domainless einzubeziehen gMSA Informationen

Vor dem Hochladen der CredSpec zu einer der Speicheroptionen fügen Sie Informationen hinzu CredSpec mit dem ARN Secret im Secrets Manager aus dem vorherigen Schritt. Weitere Informationen finden Sie unter Zusätzliche Konfiguration der Anmeldeinformationsspezifikationen für den Anwendungsfall eines non-domain-joined Container-Hosts auf der Microsoft-Learn-Website.

  1. Fügen Sie die folgende Information zur CredSpec Datei in derActiveDirectoryConfig. Ersetzen Sie das ARN durch das Secret im Secrets Manager aus dem vorherigen Schritt.

    Beachten Sie, dass der PluginGUID Wert mit dem GUID im folgenden Beispielausschnitt übereinstimmen muss und erforderlich ist.

    "HostAccountConfig": { "PortableCcgVersion": "1", "PluginGUID": "{859E1386-BDB4-49E8-85C7-3070B13920E1}", "PluginInput": "{\"credentialArn\": \"arn:aws:secretsmanager:aws-region:111122223333:secret:gmsa-plugin-input\"}" }

    Sie können auch ein Geheimnis im SSM Parameter Store verwenden, indem Sie das ARN in diesem Format verwenden:. \"arn:aws:ssm:aws-region:111122223333:parameter/gmsa-plugin-input\"

  2. Nachdem Sie das geändert haben CredSpec Datei, sie sollte wie im folgenden Beispiel aussehen:

    { "CmsPlugins": [ "ActiveDirectory" ], "DomainJoinConfig": { "Sid": "S-1-5-21-4066351383-705263209-1606769140", "MachineAccountName": "ExampleAccount", "Guid": "ac822f13-583e-49f7-aa7b-284f9a8c97b6", "DnsTreeName": "contoso", "DnsName": "contoso", "NetBiosName": "contoso" }, "ActiveDirectoryConfig": { "GroupManagedServiceAccounts": [ { "Name": "ExampleAccount", "Scope": "contoso" }, { "Name": "ExampleAccount", "Scope": "contoso" } ], "HostAccountConfig": { "PortableCcgVersion": "1", "PluginGUID": "{859E1386-BDB4-49E8-85C7-3070B13920E1}", "PluginInput": "{\"credentialArn\": \"arn:aws:secretsmanager:aws-region:111122223333:secret:gmsa-plugin-input\"}" } } }

Schritt 4: Hochladen CredSpec zu Amazon S3

In diesem Schritt wird der verwendet AWS CLI. Sie können diese Befehle in AWS CloudShell in der Standard-Shell ausführen, und zwar bash.

  1. Kopieren der CredSpec Datei auf dem Computer oder der Umgebung, in der Sie AWS CLI -Befehle ausführen.

  2. Führen Sie den folgenden AWS CLI Befehl aus, um Folgendes hochzuladen CredSpec zu Amazon S3. Ersetzen Sie MyBucket 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.

    Der folgende Befehl verwendet Backslash-Fortsetzungszeichen, die von sh und kompatiblen Shells verwendet werden. Dieser Befehl ist nicht kompatibel mit PowerShell. Sie müssen den Befehl ändern, um ihn mit verwenden zu können PowerShell.

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

Schritt 5 (Optional): Ein ECS Amazon-Cluster erstellen

Standardmäßig hat Ihr Konto einen ECS Amazon-Cluster mit dem Namendefault. Dieser Cluster wird standardmäßig in AWS CLI SDKs, und verwendet AWS CloudFormation. Sie können zusätzliche Cluster verwenden, um Aufgaben und Infrastruktur zu gruppieren und zu organisieren und bestimmten Konfigurationen Standardwerte zuzuweisen.

Sie können einen Cluster aus dem AWS Management Console, AWS CLI SDKs, oder erstellen AWS CloudFormation. Die Einstellungen und die Konfiguration im Cluster wirken sich nicht aus. gMSA.

In diesem Schritt wird der verwendet AWS CLI. Sie können diese Befehle in AWS CloudShell in der Standard-Shell ausführen, und zwar bash.

$ aws ecs create-cluster --cluster-name windows-domainless-gmsa-cluster
Wichtig

Wenn Sie einen eigenen Cluster erstellen möchten, müssen Sie für jeden Befehl, den Sie mit diesem Cluster verwenden möchten, --cluster clusterName angeben.

Schritt 6: Eine IAM Rolle für Container-Instances erstellen

Eine Container-Instance ist ein Host-Computer zum Ausführen von Containern in ECS Aufgaben, beispielsweise EC2 Amazon-Instances. Jede Container-Instance wird bei einem ECS Amazon-Cluster registriert. Bevor Sie EC2 Amazon-Instances starten und sie in einem Cluster registrieren, müssen Sie eine IAM Rolle erstellen, die ihre Container-Instances verwenden können.

Wie Sie die Rolle der Container-Instance erstellen, erfahren Sie unter ECSIAMAmazon-Container-Instance-Rolle. Die Standard-ecsInstanceRole verfügt über ausreichende Berechtigungen, um dieses Tutorial abzuschließen.

Schritt 7: Eine benutzerdefinierte Aufgaben-Ausführungsrolle erstellen

Amazon ECS kann anstelle der IAM Container-Instance-Rolle eine andere Rolle für die Berechtigungen verwenden, die zum Starten der einzelnen Aufgaben erforderlich sind. Diese Rolle ist die Aufgabenausführungsrolle. Wir empfehlen, eine Aufgabenausführungsrolle nur mit den Berechtigungen ECS zu erstellen, die für die Ausführung der Aufgabe erforderlich sind, auch bekannt als geringste Berechtigung. Weitere Informationen zum Prinzip der geringsten Berechtigung finden Sie unter SEC03-BP02 Zugriff mit geringster Berechtigung gewähren im AWS -Well-Architected-Framework.

  1. Um eine Aufgabenausführungsrolle zu erstellen, siehe Erstellen der -Aufgabenausführungsrolle. Die Standardberechtigungen ermöglichen es der Container-Instance, Container-Images aus Amazon Elastic Container Registry stdout und stderr Ihren Anwendungen abzurufen, um sie in Amazon CloudWatch Logs zu protokollieren.

    Da die Rolle für dieses Tutorial benutzerdefinierte Berechtigungen benötigt, können Sie der Rolle einen anderen Namen als ecsTaskExecutionRole geben. In diesem Tutorial wird ecsTaskExecutionRole in weiteren Schritten verwendet.

  2. Fügen Sie die folgenden Berechtigungen hinzu, indem Sie eine benutzerdefinierte Richtlinie erstellen, entweder eine Inline-Richtlinie, die nur für diese Rolle existiert, oder eine Richtlinie, die Sie wiederverwenden können. Ersetzen Sie das ARN für die Resource in der ersten Anweisung durch den Amazon-S3-Bucket und den Speicherort und das zweite Resource durch das ARN des Secrets Manager.

    Wenn Sie das Secret im Secrets Manager mit einem benutzerdefinierten Schlüssel verschlüsseln, müssen Sie auch kms:Decrypt für den Schlüssel zulassen.

    Wenn Sie SSM Parameter Store anstelle von Secrets Manager verwenden, müssen Sie ssm:GetParameter den Parameter anstelle von zulassensecretsmanager:GetSecretValue.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::MyBucket/ecs-domainless-gmsa-credspec/gmsa-cred-spec.json" }, { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:aws-region:111122223333:secret:gmsa-plugin-input" } ] }

Schritt 8: Eine Aufgabenrolle für Amazon ECS Exec erstellen

In diesem Tutorial wird Amazon ECS Exec verwendet, um die Funktionalität zu überprüfen, indem ein Befehl innerhalb einer laufenden Aufgabe ausgeführt wird. Um ECS Exec verwenden zu können, muss der Service oder die Aufgabe ECS Exec aktivieren und die Aufgabenrolle (aber nicht die Rolle der Aufgabenausführung) muss über Berechtigungen verfügenssmmessages. Die erforderliche IAM Richtlinie finden Sie unter. ECSBerechtigungen für Führungskräfte

In diesem Schritt wird der verwendet AWS CLI. Sie können diese Befehle in AWS CloudShell in der Standard-Shell ausführen, und zwar bash.

Gehen Sie folgendermaßen vor AWS CLI, um eine Aufgabenrolle mithilfe von zu erstellen.

  1. Erstellen Sie eine Datei mit dem Namen ecs-tasks-trust-policy.json und den folgenden Inhalten:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. Erstellen Sie eine IAM Rolle. Sie können den Namen ecs-exec-demo-task-role ersetzen, aber behalten Sie den Namen für die folgenden Schritte bei.

    Der folgende Befehl verwendet Backslash-Fortsetzungszeichen, die von sh und kompatiblen Shells verwendet werden. Dieser Befehl ist nicht kompatibel mit PowerShell. Sie müssen den Befehl ändern, um ihn mit verwenden zu können PowerShell.

    $ aws iam create-role --role-name ecs-exec-demo-task-role \ --assume-role-policy-document file://ecs-tasks-trust-policy.json

    Sie können die Datei ecs-tasks-trust-policy.json löschen.

  3. Erstellen Sie eine Datei mit dem Namen ecs-exec-demo-task-role-policy.json und den folgenden Inhalten:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" } ] }
  4. Erstellen Sie eine IAM Richtlinie und verknüpfen Sie sie mit der Rolle aus dem vorherigen Schritt.

    Der folgende Befehl verwendet Backslash-Fortsetzungszeichen, die von sh und kompatiblen Shells verwendet werden. Dieser Befehl ist nicht kompatibel mit PowerShell. Sie müssen den Befehl ändern, um ihn mit verwenden zu können PowerShell.

    $ aws iam put-role-policy \ --role-name ecs-exec-demo-task-role \ --policy-name ecs-exec-demo-task-role-policy \ --policy-document file://ecs-exec-demo-task-role-policy.json

    Sie können die Datei ecs-exec-demo-task-role-policy.json löschen.

Schritt 9: Eine Aufgabendefinition erstellen, die domainlose Definition verwendet gMSA

In diesem Schritt wird der AWS CLI verwendet. Sie können diese Befehle in AWS CloudShell in der Standard-Shell ausführen, und zwar bash.

  1. Erstellen Sie eine Datei mit dem Namen windows-gmsa-domainless-task-def.json und den folgenden Inhalten:

    { "family": "windows-gmsa-domainless-task", "containerDefinitions": [ { "name": "windows_sample_app", "image": "mcr.microsoft.com/windows/servercore/iis", "cpu": 1024, "memory": 1024, "essential": true, "credentialSpecs": [ "credentialspecdomainless:arn:aws:s3:::ecs-domainless-gmsa-credspec/gmsa-cred-spec.json" ], "entryPoint": [ "powershell", "-Command" ], "command": [ "New-Item -Path C:\\inetpub\\wwwroot\\index.html -ItemType file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p>' -Force ; C:\\ServiceMonitor.exe w3svc" ], "portMappings": [ { "protocol": "tcp", "containerPort": 80, "hostPort": 8080 } ] } ], "taskRoleArn": "arn:aws:iam::111122223333:role/ecs-exec-demo-task-role", "executionRoleArn": "arn:aws:iam::111122223333:role/ecsTaskExecutionRole" }
  2. Registrieren Sie die Aufgabendefinition, indem Sie den folgenden Befehl ausführen:

    Der folgende Befehl verwendet Backslash-Fortsetzungszeichen, die von sh und kompatiblen Shells verwendet werden. Dieser Befehl ist nicht kompatibel mit PowerShell. Sie müssen den Befehl ändern, um ihn mit verwenden zu können PowerShell.

    $ aws ecs register-task-definition \ --cli-input-json file://windows-gmsa-domainless-task-def.json

Schritt 10: Eine Windows-Container-Instance im Cluster registrieren

Starten Sie eine EC2 Amazon-Windows-Instance und führen Sie den ECS Container-Agenten aus, um sie als Container-Instance im Cluster zu registrieren. ECSführt Aufgaben auf den Container-Instances aus, die in dem Cluster registriert sind, in dem die Aufgaben gestartet werden.

  1. Informationen zum Starten einer Amazon EC2 Windows-Instance, die ECS im für Amazon konfiguriert ist AWS Management Console, finden Sie unterStarten einer Amazon ECS Windows-Container-Instance. Halten Sie beim Schritt für Benutzerdaten an.

  2. Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. gMSA, müssen die Benutzerdaten die Umgebungsvariable festlegen, ECS_GMSA_SUPPORTED bevor der ECS Container-Agent gestartet wird.

    Für ECS Exec muss der Agent mit dem Argument -EnableTaskIAMRole beginnen.

    Um die IAM Instance-Rolle zu sichern, indem verhindert wird, dass Aufgaben den EC2 IMDS Webservice zum Abrufen der Rollenanmeldedaten erreichen, fügen Sie das Argument hinzu-AwsvpcBlockIMDS. Dies gilt nur für Aufgaben, die den awsvpc-Netzwerkmodus verwenden.

    <powershell> [Environment]::SetEnvironmentVariable("ECS_GMSA_SUPPORTED", $TRUE, "Machine") Import-Module ECSTools Initialize-ECSAgent -Cluster windows-domainless-gmsa-cluster -EnableTaskIAMRole -AwsvpcBlockIMDS </powershell>
  3. Überprüfen Sie Ihre Instance-Konfiguration im Bereich Summary (Übersicht). Wenn alles in Ordnung ist, klicken Sie auf Launch instance (Instance starten).

Schritt 11: Container-Instance überprüfen

Mithilfe der AWS Management Console können Sie überprüfen, ob es im Cluster eine Container-Instance gibt. Allerdings gMSA benötigt zusätzliche Features, die als Attribute angegeben sind. Diese Attribute sind in der nicht sichtbar AWS Management Console, daher verwendet dieses Tutorial AWS CLI.

In diesem Schritt wird der verwendet AWS CLI. Sie können diese Befehle in AWS CloudShell in der Standard-Shell ausführen, und zwar bash.

  1. Die Container-Instances im Cluster auflisten. Container-Instances haben eine ID, die sich von der ID der EC2 Instance unterscheidet.

    $ aws ecs list-container-instances

    Ausgabe:

    {
        "containerInstanceArns": [
            "arn:aws:ecs:aws-region:111122223333:container-instance/default/MyContainerInstanceID"
        ]
    }

    526bd5d0ced448a788768334e79010fd ist beispielsweise eine gültige Container-Instance-ID.

  2. Verwenden Sie die Container-Instance-ID aus dem vorherigen Schritt, um die Details für die Container-Instance abzurufen. Ersetzen Sie MyContainerInstanceID durch die ID.

    Der folgende Befehl verwendet Backslash-Fortsetzungszeichen, die von sh und kompatiblen Shells verwendet werden. Dieser Befehl ist nicht kompatibel mit PowerShell. Sie müssen den Befehl ändern, um ihn mit verwenden zu können PowerShell.

    $ aws ecs describe-container-instances \ ----container-instances MyContainerInstanceID

    Beachten Sie, dass die Ausgabe sehr lang ist.

  3. Stellen Sie sicher, dass die attributes-Liste ein Objekt mit dem Schlüssel namens name und einem Wert ecs.capability.gmsa-domainless enthält. Es folgt ein Beispiel für das Objekt.

    Ausgabe:

    {
        "name": "ecs.capability.gmsa-domainless"
    }

Schritt 12: Eine Windows-Aufgabe ausführen

Führen Sie eine ECS Amazon-Aufgabe aus. Wenn es im Cluster nur 1 Container-Instance gibt, können Sie run-task verwenden. Wenn es viele verschiedene Container-Instances gibt, kann es einfacher sein, start-task zu verwenden und die ID der Container-Instance anzugeben, auf der die Aufgabe ausgeführt werden soll, als der Aufgabendefinition Einschränkungen für die Platzierung hinzuzufügen, um zu steuern, auf welchem Typ von Container-Instance die Aufgabe ausgeführt werden soll.

In diesem Schritt wird der verwendet AWS CLI. Sie können diese Befehle in AWS CloudShell in der Standard-Shell ausführen, und zwar bash.

  1. Der folgende Befehl verwendet Backslash-Fortsetzungszeichen, die von sh und kompatiblen Shells verwendet werden. Dieser Befehl ist nicht kompatibel mit PowerShell. Sie müssen den Befehl ändern, um ihn mit verwenden zu können PowerShell.

    aws ecs run-task --task-definition windows-gmsa-domainless-task \ --enable-execute-command --cluster windows-domainless-gmsa-cluster

    Notieren Sie sich die Aufgaben-ID, die von dem Befehl zurückgegeben wird.

  2. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob die Aufgabe gestartet wurde. Dieser Befehl wartet und gibt die Shell-Eingabeaufforderung erst zurück, wenn die Aufgabe startet. Ersetzen Sie MyTaskID mit der Aufgaben-ID aus dem vorherigen Schritt.

    $ aws ecs wait tasks-running --task MyTaskID

Schritt 13: Sicherstellen, dass der Container gMSA Anmeldedaten

Stellen Sie sicher, dass der Container in der Aufgabe über eine Kerberos Token. gMSA

In diesem Schritt wird der verwendet AWS CLI. Sie können diese Befehle in AWS CloudShell in der Standard-Shell ausführen, und zwar bash.

  1. Der folgende Befehl verwendet Backslash-Fortsetzungszeichen, die von sh und kompatiblen Shells verwendet werden. Dieser Befehl ist nicht kompatibel mit PowerShell. Sie müssen den Befehl ändern, um ihn mit verwenden zu können PowerShell.

    $ aws ecs execute-command \ --task MyTaskID \ --container windows_sample_app \ --interactive \ --command powershell.exe

    Die Ausgabe wird eine PowerShell Eingabeaufforderung sein.

  2. Führen Sie den folgenden Befehl im PowerShell Terminal im Container aus.

    PS C:\> klist get ExampleAccount$

    Beachten Sie in der Ausgabe, dass der Principal der ist, den Sie zuvor erstellt haben.

Schritt 14: Bereinigen

Wenn Sie mit diesem Tutorial fertig sind, sollten Sie die zugehörigen Ressourcen bereinigen, um zu vermeiden, dass Gebühren für ungenutzte Ressourcen anfallen.

In diesem Schritt wird der verwendet AWS CLI. Sie können diese Befehle in AWS CloudShell in der Standard-Shell ausführen, und zwar bash.

  1. Die Aufgabe anhalten. Ersetzen Sie MyTaskID durch die Aufgaben-ID aus Schritt 12, Schritt 12: Eine Windows-Aufgabe ausführen.

    $ aws ecs stop-task --task MyTaskID
  2. Beenden Sie die EC2 Amazon-Instance. Danach wird die Container-Instance im Cluster nach einer Stunde automatisch gelöscht.

    Sie können die Instance über die EC2 Amazon-Konsole finden und beenden. Sie können alternativ den folgenden Befehl ausführen. Um den Befehl auszuführen, suchen Sie die EC2 Instance-ID in der Ausgabe des aws ecs describe-container-instances Befehls aus Schritt 1,Schritt 11: Container-Instance überprüfen. i-10a64379 ist ein Beispiel für eine Instance-ID. EC2

    $ aws ec2 terminate-instances --instance-ids MyInstanceID
  3. Löschen Sie die CredSpec Datei in Amazon S3. Ersetzen Sie MyBucket durch den Namen Ihres Amazon-S3-Buckets.

    $ aws s3api delete-object --bucket MyBucket --key ecs-domainless-gmsa-credspec/gmsa-cred-spec.json
  4. Das Secret aus Secrets Manager löschen. Wenn Sie stattdessen SSM Parameter Store verwendet haben, löschen Sie den Parameter.

    Der folgende Befehl verwendet Backslash-Fortsetzungszeichen, die von sh und kompatiblen Shells verwendet werden. Dieser Befehl ist nicht kompatibel mit PowerShell. Sie müssen den Befehl ändern, um ihn mit verwenden zu können PowerShell.

    $ aws secretsmanager delete-secret --secret-id gmsa-plugin-input \ --force-delete-without-recovery
  5. Melden Sie die Aufgabendefinition ab und löschen Sie sie. Wenn Sie die Registrierung der Aufgabendefinition aufheben, markieren Sie sie als inaktiv, sodass sie nicht zum Starten neuer Aufgaben verwendet werden kann. Anschließend können Sie die Aufgabendefinition löschen.

    1. Heben Sie die Registrierung der Aufgabendefinition auf, indem Sie die Version angeben. ECSerstellt automatisch Versionen von Aufgabendefinitionen, die von 1 an nummeriert sind. Sie verweisen auf die Versionen im gleichen Format wie die Beschriftungen auf Container-Images, z. B. :1.

      $ aws ecs deregister-task-definition --task-definition windows-gmsa-domainless-task:1
    2. Löschen Sie die Aufgabendefinition.

      $ aws ecs delete-task-definitions --task-definition windows-gmsa-domainless-task:1
  6. (Optional) Löschen Sie den ECS Cluster, falls Sie einen Cluster erstellt haben.

    $ aws ecs delete-cluster --cluster windows-domainless-gmsa-cluster

Debuggen von Amazon Domainless ECS gMSA für Windows-Container

ECSAmazon-Aufgabenstatus

ECSversucht, eine Aufgabe genau einmal zu starten. Jede Aufgabe, bei der ein Problem auftritt, wird angehalten und auf den Status STOPPED gesetzt. Es gibt zwei häufige Arten von Problemen mit Aufgaben. Erstens Aufgaben, die nicht gestartet werden konnten. Zweitens Aufgaben, bei denen die Anwendung in einem der Container gestoppt wurde. Suchen Sie im AWS Management Console-Feld Grund für das Anhalten der Aufgabe nach dem Grund, warum die Aufgabe angehalten wurde. In der AWS CLI, beschreiben Sie die Aufgabe und sehen Sie sich den stoppedReason an. Die Schritte im Feld AWS Management Console und AWS CLI finden Sie unterFehler beim Beenden ECS von Aufgaben durch Amazon anzeigen.

Windows-Ereignisse

Windows-Ereignisse für gMSA in Containern werden in der Microsoft-Windows-Containers-CCG Protokolldatei protokolliert und befinden sich in der Ereignisanzeige im Abschnitt Anwendungen und Services inLogs\Microsoft\Windows\Containers-CCG\Admin. Weitere Tipps zum Debuggen finden Sie unter Problembehandlung gMSAs bei Windows-Containern auf der Microsoft-Learn-Website.

ECSAgent gMSA Plugin

Protokollierung für gMSA Das Plugin für den ECS Agenten auf der Windows-Container-Instance befindet sich im folgenden Verzeichnis,C:/ProgramData/Amazon/gmsa-plugin/. Sehen Sie in diesem Protokoll nach, ob die domainlosen Benutzeranmeldeinformationen vom Speicherort, z. B. Secrets Manager, heruntergeladen wurden und ob das Format der Anmeldeinformationen korrekt gelesen wurde.