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.
Erfahren Sie, wie Sie Container gMSAs für EC2 Windows für Amazon verwenden ECS
Amazon ECS unterstützt die Active Directory-Authentifizierung für Windows-Container über ein spezielles Servicekonto namens group Managed Service Account (gMSA).
Windows-basierte Netzwerkanwendungen wie. NETAnwendungen verwenden häufig Active Directory, um die Authentifizierung und Autorisierung zwischen Benutzern und Services zu verwalten. Entwickler entwerfen ihre Anwendungen häufig so, dass sie sich in Active Directory integrieren lassen und zu diesem Zweck auf der Domain angehörenden Servern ausgeführt werden. Da Windows-Container nicht mit einer Domain verbunden werden können, müssen Sie einen Windows-Container für die Ausführung mit g konfigurieren. MSA
Ein Windows-Container, der mit g ausgeführt wird, ist zur Abfrage der MSA g-Anmeldeinformationen vom Active Directory-Domain-Controller und zur Bereitstellung an die EC2 Container-Instance auf die Amazon-Instance seines Hosts MSA angewiesen. Weitere Informationen finden Sie unter Erstellen von Containern gMSAs für Windows
Anmerkung
Für Windows-Container in Fargate wird dieses Feature nicht unterstützt.
Überlegungen
Bei der Verwendung gMSAs für Windows-Container sollte Folgendes berücksichtigt werden:
-
Wenn Sie den ECS Amazon-optimierten Windows Server 2016 Full AMI für Ihre Container-Instances verwenden, muss der Container-Hostname mit dem MSA g-Kontonamen übereinstimmen, der in der Anmeldeinformations-Spezifikationsdatei definiert ist. Um einen Hostnamen für einen Container anzugeben, verwenden Sie den
hostname
-Containerdefinitionsparameter. Weitere Informationen finden Sie unter Network settings (Netzwerkeinstellungen). -
Sie haben zwischen domainless 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
Voraussetzungen
Bevor Sie das gMSA Für die Windows-Container-Funktion mit Amazon ECS müssen Sie folgende 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 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 vorhandenes gMSA Konto im Active Directory. Weitere Informationen finden Sie unter Container gMSAs für Windows erstellen
. -
Sie haben sich für die Verwendung von Domainless entschieden gMSAoder die ECS Amazon-Windows-Container-Instance, die die ECS Amazon-Aufgabe hostet, muss mit der Domain des Active Directory verbunden und Mitglied der Active-Directory-Sicherheitsgruppe sein, die Zugriff auf das MSA g-Konto hat.
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.
-
Sie haben die erforderlichen IAM Berechtigungen hinzugefügt. Welche Berechtigungen erforderlich sind, hängt von den Methoden ab, die Sie für die anfänglichen Anmeldeinformationen und für die Speicherung der Anmeldeinformation wählen:
-
Wenn Sie Domainless verwenden gMSAFür anfängliche Anmeldeinformationen AWS Secrets Manager sind IAM Berechtigungen für für die EC2 Amazon-Instance-Rolle erforderlich.
-
Wenn Sie die Spezifikation der Anmeldeinformationen im SSM Parameter Store speichern, sind IAM Berechtigungen für den Amazon EC2 Systems Manager Parameter Store für die Rolle der Aufgabenausführung erforderlich.
-
Wenn Sie die Spezifikation der Anmeldeinformationen in Amazon S3 speichern, sind IAM Berechtigungen für Amazon Simple Storage Service für die Rolle der Aufgabenausführung erforderlich.
-
Einrichtung gMSA für Windows-Container bei Amazon ECS
So führen Sie die Einrichtung durch: gMSA für Windows-Container auf Amazon ECS können Sie dem vollständigen Tutorial folgen, das auch die Konfiguration der Voraussetzungen beinhaltetVerwenden von Amazon ECS Windows-Containern mit Domainless gMSA unter Verwendung der AWS CLI.
Die folgenden Abschnitte behandeln die CredSpec Konfiguration im Detail.
Themen
Beispiel CredSpec
Amazon ECS verwendet eine Anmeldeinformationsspezifikationsdatei, die Folgendes enthält: gMSA Metadaten, die verwendet werden, um das zu verbreiten gMSA Kontokontext zum Windows-Container. Sie können die Anmeldeinformations-Spezifikationsdatei generieren und im Feld credentialSpec
in Ihrer Aufgabendefinition darauf verweisen. Die Anmeldeinformations-Spezifikationsdatei enthält keine Secrets.
Im Folgenden finden Sie eine Beispiel-Anmeldeinformations-Spezifikationsdatei:
{
"CmsPlugins": [
"ActiveDirectory"
],
"DomainJoinConfig": {
"Sid": "S-1-5-21-2554468230-2647958158-2204241789",
"MachineAccountName": "WebApp01",
"Guid": "8665abd4-e947-4dd0-9a51-f8254943c90b",
"DnsTreeName": "contoso.com",
"DnsName": "contoso.com",
"NetBiosName": "contoso"
},
"ActiveDirectoryConfig": {
"GroupManagedServiceAccounts": [
{
"Name": "WebApp01",
"Scope": "contoso.com"
}
]
}
}
Domänenlos gMSA Einrichten
Wir empfehlen Domainless gMSA anstatt die Container-Instances zu einer einzigen Domain zu verbinden. 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.
-
Vor dem Hochladen der CredSpec zu einer der Speicheroptionen fügen Sie Informationen hinzu CredSpec mit dem ARN Secret in Secrets Manager oder SSM Parameter Store. 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. Domänenlos gMSA Anmeldeinformationsformat
Das folgende JSON Format ist für das Domainlose gMSA Anmeldeinformationen für Ihr Active Directory. Speichern Sie die Anmeldeinformationen in Secrets Manager oder SSM Parameter Store.
{ "username":"
WebApp01
", "password":"Test123!
", "domainName":"contoso.com
" } -
Fügen Sie die folgende Information zur CredSpec Datei in der
ActiveDirectoryConfig
. Ersetzen Sie den ARN durch das Secret in Secrets Manager oder SSM Parameter Store.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
\" -
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": "WebApp01", "Guid": "ac822f13-583e-49f7-aa7b-284f9a8c97b6", "DnsTreeName": "contoso", "DnsName": "contoso", "NetBiosName": "contoso" }, "ActiveDirectoryConfig": { "GroupManagedServiceAccounts": [ { "Name": "WebApp01", "Scope": "contoso" }, { "Name": "WebApp01", "Scope": "contoso" } ], "HostAccountConfig": { "PortableCcgVersion": "1", "PluginGUID": "{859E1386-BDB4-49E8-85C7-3070B13920E1}", "PluginInput": "{\"credentialArn\": \"arn:aws:secretsmanager:
aws-region
:111122223333:secret:gmsa-plugin-input
\"}" } } }
Referenzieren einer Anmeldeinformations-Spezifikationsdatei in einer Aufgabendefinition
Amazon ECS unterstützt die folgenden Möglichkeiten, um auf den Dateipfad im credentialSpecs
Feld der Aufgabendefinition zu verweisen. Für jede dieser Optionen können Sie credentialspec:
oder angeben, je nachdemdomainlesscredentialspec:
, ob Sie die Container-Instances zu einer einzigen Domain zusammenfügen oder domainlose Instances verwenden gMSAjeweils.
Amazon S3 Bucket
Fügen Sie die Anmeldeinformationsspezifikation zu einem Amazon S3 Bucket hinzu und verweisen Sie dann im credentialSpecs
Feld der Aufgabendefinition auf den Amazon-Ressourcennamen (ARN) des Amazon S3 Buckets.
{ "family": "", "executionRoleArn": "", "containerDefinitions": [ { "name": "", ... "credentialSpecs": [ "credentialspecdomainless:arn:aws:s3:::
${BucketName}/${ObjectName}
" ], ... } ], ... }
Sie müssen auch die folgenden Berechtigungen als Inline-Richtlinie zur ECS IAM Amazon-Aufgabenausführungsrolle hinzufügen, um Ihren Aufgaben Zugriff auf den Amazon S3 Bucket zu geben.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor", "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::
{bucket_name}
", "arn:aws:s3:::{bucket_name}/{object}
" ] } ] }
SSM Parameterspeicher-Parameter
Fügen Sie die Anmeldeinformationsspezifikation zu einem SSM Parameter hinzu und verweisen Sie dann im credentialSpecs
Feld der Aufgabendefinition auf den SSM Amazon-Ressourcennamen (ARN) des Parameterspeicher-Parameters.
{ "family": "", "executionRoleArn": "", "containerDefinitions": [ { "name": "", ... "credentialSpecs": [ "credentialspecdomainless:arn:aws:ssm:
region
:111122223333
:parameter/parameter_name
" ], ... } ], ... }
Sie müssen auch die folgenden Berechtigungen als Inline-Richtlinie zur ECS IAM Amazon-Aufgabenausführungsrolle hinzufügen, um Ihren Aufgaben Zugriff auf den SSM Parameter Store zu geben.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": [ "arn:aws:ssm:
region
:111122223333
:parameter/parameter_name
" ] } ] }
Lokale Datei
Wenn die Daten der Anmeldeinformationsspezifikation in einer lokalen Datei enthalten sind, verweisen Sie auf den Dateipfad im Feld credentialSpecs
der Aufgabendefinition. Der Dateipfad, auf den verwiesen wird, muss relativ zum C:\ProgramData\Docker\CredentialSpecs
-Verzeichnis sein und den umgekehrten Schrägstrich („\“) als Dateipfadtrennzeichen verwenden.
{ "family": "", "executionRoleArn": "", "containerDefinitions": [ { "name": "", ... "credentialSpecs": [ "credentialspec:file://
CredentialSpecDir\CredentialSpecFile.json
" ], ... } ], ... }