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.
gMSAFür EC2 Linux Container bei Amazon verwenden ECS
Amazon ECS unterstützt die Active Directory-Authentifizierung für Linux-Container EC2 über ein spezielles Dienstkonto, das als Group Managed Service Account (gMSA) bezeichnet wird.
Linux-basierte Netzwerkanwendungen wie .NET-Core-Anwendungen können Active Directory verwenden, um die Authentifizierung und Autorisierung zwischen Benutzern und Services zu verwalten. Sie können dieses Feature nutzen, indem Sie Anwendungen entwickeln, die mit Active Directory integriert sind und auf Domain-verbundenen Servern laufen. Da Linux-Container jedoch nicht mit einer Domain verbunden werden können, müssen Sie einen Linux-Container für die Ausführung mit gMSA konfigurieren.
Ein Linux Container, der mit ausgeführt wird, gMSA stützt sich auf den credentials-fetcher
Daemon, der auf der EC2 Host-Amazon-Instance des Containers läuft. Das heißt, der Daemon ruft die gMSA-Anmeldeinformationen vom Active Directory-Domain-Controller ab und überträgt diese Anmeldeinformationen an die Container-Instance. Weitere Informationen zu Servicekonten finden Sie unter gMSAs für Windows-Container erstellen
Überlegungen
Beachten Sie Folgendes, bevor Sie gMSA für Linux-Container verwenden:
-
Wenn Ihre Container auf laufenEC2, können Sie gMSA für Windows Container und Linux Container verwenden. Hinweise gMSA zur Verwendung eines Linux-Containers auf Fargate finden Sie unterWird gMSA für Linux Container auf Fargate verwendet.
-
Möglicherweise benötigen Sie einen Windows-Computer, der mit der Domain verbunden ist, um die Voraussetzungen zu erfüllen. Beispielsweise benötigen Sie möglicherweise einen Windows-Computer, welcher mit der Domain verbunden ist, um die gMSA in Active Directory mit PowerShell zu erstellen. Die RSAT Active PowerShell Director-Tools sind nur für Windows verfügbar. Weitere Informationen finden Sie unter Installieren der Active-Directory-Verwaltungstools.
-
Sie haben zwischen domainlose gMSA und Hinzufügen jeder Instance zu einer einzelnen Domain gewählt. Durch die Verwendung von domainlosen gMSA ist die Container-Instance 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 Active Directory-Anmeldeinformationsspezifikationsdatei (CredSpec). Diese Datei enthält die gMSA-Metadaten, die verwendet werden, um den gMSA-Kontokontext an den Container weiterzuleiten. Sie generieren die CredSpec-Datei und speichern sie dann in einer der CredSpec-Speicheroptionen in der folgenden Tabelle, die für das Betriebssystem der Container-Instances spezifisch sind. Um die domainlose Methode zu verwenden, kann ein optionaler Abschnitt in der CredSpec-Datei Anmeldeinformationen in einer der domainless user credentials-Speicheroptionen in der folgenden Tabelle angeben, die für das Betriebssystem der Container-Instances spezifisch sind.
gMSA-Datenspeicheroptionen nach BetriebssystemSpeicherort Linux Windows Amazon Simple Storage Service CredSpec CredSpec AWS Secrets Manager Domainlose Benutzer-Anmeldeinformationen Domainlose Benutzer-Anmeldeinformationen Amazon EC2 Systems Manager Manager-Parameterspeicher CredSpec CredSpec, domainlose Benutzer-Anmeldeinformationen Lokale Datei N/A CredSpec
Voraussetzungen
Bevor Sie die Funktion gMSA für Linux-Container mit Amazon verwendenECS, 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 Setups:
-
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 die Amazon ECS Linux-Container-Instance der Domain beitreten kann. Weitere Informationen finden Sie unter AWS Direct Connect.
-
-
Sie haben ein bestehendes gMSA-Konto im Active Directory. Weitere Informationen finden Sie unter gMSAFür EC2 Linux Container bei Amazon verwenden ECS.
-
Sie haben den
credentials-fetcher
Daemon auf einer Amazon ECS Linux-Container-Instance installiert und führen ihn aus. Sie haben demcredentials-fetcher
-Daemon auch einen ersten Satz von Anmeldeinformationen hinzugefügt, um sich mit dem Active Directory zu authentifizieren.Anmerkung
Der
credentials-fetcher
-Daemon ist nur für Amazon Linux 2023 und Fedora 37 und höher verfügbar. Der Daemon ist für Amazon Linux 2 nicht verfügbar. Weitere Informationen finden Sie unter aws/credentialsals-fetcher on. GitHub -
Sie richten die Anmeldeinformationen für den
credentials-fetcher
-Daemon ein, um sich mit dem Active Directory zu authentifizieren. Die Anmeldeinformationen müssen Mitglied der Active-Directory-Sicherheitsgruppe sein, die Zugriff auf das gMSA-Konto hat. Es gibt mehrere Optionen in Entscheiden Sie, ob Sie die Instances mit der Domain verbinden oder domainlose gMSA verwenden möchten.. -
Sie haben die erforderlichen Berechtigungen hinzugefügt. IAM 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 gMSA für die ersten Anmeldeinformationen verwenden, AWS Secrets Manager sind IAM Berechtigungen für für die Aufgabenausführungsrolle erforderlich.
-
Wenn Sie die Anmeldeinformationsspezifikation im SSM Parameter Store speichern, sind IAM Berechtigungen für Amazon EC2 Systems Manager Parameter Store für die Aufgabenausführungsrolle erforderlich.
-
Wenn Sie die Anmeldeinformationsspezifikation in Amazon S3 speichern, sind IAM Berechtigungen für Amazon Simple Storage Service für die Aufgabenausführungsrolle erforderlich.
-
Einrichtung von gMSA -fähigen Linux Containern bei Amazon ECS
Die Infrastruktur vorbereiten
Bei den folgenden Schritten handelt es sich um Überlegungen und Einstellungen, die einmal durchgeführt werden müssen. Nachdem Sie diese Schritte ausgeführt haben, können Sie die Erstellung von Container-Instances automatisieren, um diese Konfiguration wiederzuverwenden.
Entscheiden Sie, wie die ersten Anmeldeinformationen bereitgestellt werden, und konfigurieren Sie die EC2 Benutzerdaten in einer wiederverwendbaren EC2 Startvorlage, um den credentials-fetcher
Daemon zu installieren.
-
Entscheiden Sie, ob Sie die Instances mit der Domain verbinden oder domainlose gMSA verwenden möchten.
-
Fügen Sie EC2 Instanzen der Active Directory-Domäne hinzu
-
Die Instances anhand von Benutzerdaten hinzufügen
Fügen Sie die Schritte zum Hinzufügen der Active Directory-Domäne zu Ihren EC2 Benutzerdaten in einer EC2 Startvorlage hinzu. Mehrere Amazon EC2 Auto Scaling Scaling-Gruppen können dieselbe Startvorlage verwenden.
Sie können diese Schritte in den Fedora Docs zum Beitreten zu einem Active Directory oder einer FreeIPA-Domain
verwenden.
-
-
Erstellen Sie einen Active-Directory-Benutzer für domainlose gMSA
Der
credentials-fetcher
-Daemon verfügt über ein Feature, die als domainlose gMSA bezeichnet wird. Für diese Funktion ist eine Domain erforderlich, aber die EC2 Instance muss nicht mit der Domain verknüpft werden. Durch die Verwendung von domainlosen gMSA ist die Container-Instance 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. Stattdessen geben Sie den Namen eines Secrets in AWS Secrets Manager in der CredSpec-Datei an. Das Secret muss einen Benutzernamen, ein Passwort und die Domain enthalten, bei der die Anmeldung erfolgen soll.Dieses Feature wird unterstützt und kann mit Linux- und Windows-Containern verwendet werden.
Dieses Feature ähnelt dem gMSA support for non-domain-joined container hosts-Feature. Weitere Informationen zum Windows-Feature finden Sie unter gMSA-Architektur und -Verbesserungen
auf der Microsoft-Learn-Website. -
Erstellen Sie einen Benutzer in Ihrer Active-Directory-Domain. Der Benutzer in Active Directory muss berechtigt sein, auf die gMSA-Servicekonten zuzugreifen, die Sie für die Aufgaben verwenden.
-
Erstellen Sie ein Geheimnis in AWS Secrets Manager, nachdem Sie den Benutzer in Active Directory erstellt haben. Weitere Informationen finden Sie unter Create an AWS Secrets Manager Secret.
-
Geben Sie den Benutzernamen, das Passwort und die Domäne des Benutzers in JSON Schlüssel-Wert-Paare ein
username
, die jeweils alspassword
unddomainName
bezeichnet werden.{"username":"
username
","password":"passw0rd
", "domainName":"example.com"} -
Fügen Sie der CredSpec-Datei die Konfiguration für das Servicekonto hinzu. Die zusätzliche
HostAccountConfig
enthält den Amazon-Ressourcennamen (ARN) des Geheimnisses in Secrets Manager.Unter Windows
PluginGUID
muss der mit dem GUID folgenden Beispielausschnitt übereinstimmen. Auf Linux wird derPluginGUID
ignoriert.MySecret
Ersetzen Sie das Beispiel durch den Amazon-Ressourcennamen (ARN) Ihres Geheimnisses."ActiveDirectoryConfig": { "HostAccountConfig": { "PortableCcgVersion": "1", "PluginGUID": "{859E1386-BDB4-49E8-85C7-3070B13920E1}", "PluginInput": { "CredentialArn": "
arn:aws:secretsmanager:
" } }aws-region
:111122223333:secret:MySecret -
Für das Feature domainlose gMSA sind zusätzliche Berechtigungen in der Aufgabenausführungsrolle erforderlich. Folgen Sie dem Schritt (Optional) domainloses gMSA-Secret.
-
-
-
Instances und installieren Sie den
credentials-fetcher
-Daemon konfigurierenSie können den
credentials-fetcher
Daemon mit einem Benutzerdatenskript in Ihrer EC2 Startvorlage installieren. Die folgenden Beispiele veranschaulichen zwei Arten von Benutzerdatencloud-config
YAML oder bash-Skript. Diese Beispiele gelten für Amazon Linux 2023 (AL2023).MyCluster
Ersetzen Sie es durch den Namen des ECS Amazon-Clusters, dem diese Instances beitreten sollen.-
cloud-config
YAMLContent-Type: text/cloud-config package_reboot_if_required: true packages: # prerequisites - dotnet - realmd - oddjob - oddjob-mkhomedir - sssd - adcli - krb5-workstation - samba-common-tools # https://github.com/aws/credentials-fetcher gMSA credentials management for containers - credentials-fetcher write_files: # configure the ECS Agent to join your cluster. # replace MyCluster with the name of your cluster. - path: /etc/ecs/ecs.config owner: root:root permissions: '0644' content: | ECS_CLUSTER=
MyCluster
ECS_GMSA_SUPPORTED=true runcmd: # start the credentials-fetcher daemon and if it succeeded, make it start after every reboot - "systemctl start credentials-fetcher" - "systemctl is-active credentials-fetch && systemctl enable credentials-fetcher" -
bash-Skript
Wenn Sie sich mit bash-Skripten besser auskennen und mehrere Variablen in
/etc/ecs/ecs.config
zu schreiben haben, verwenden Sie das folgendeheredoc
-Format. Bei Verwendung dieses Formats wird alles zwischen den Zeilen cat undEOF
in die Konfigurationsdatei geschrieben.#!/usr/bin/env bash set -euxo pipefail # prerequisites timeout 30 dnf install -y dotnet realmd oddjob oddjob-mkhomedir sssd adcli krb5-workstation samba-common-tools # install https://github.com/aws/credentials-fetcher gMSA credentials management for containers timeout 30 dnf install -y credentials-fetcher # start credentials-fetcher systemctl start credentials-fetcher systemctl is-active credentials-fetch && systemctl enable credentials-fetcher cat <<'EOF' >> /etc/ecs/ecs.config ECS_CLUSTER=
MyCluster
ECS_GMSA_SUPPORTED=true EOF
Es gibt optionale Konfigurationsvariablen für den
credentials-fetcher
-Daemon, die Sie in/etc/ecs/ecs.config
einrichten können. Wir empfehlen, dass Sie die Variablen in den Benutzerdaten im YAML Block oderheredoc
ähnlich wie in den vorherigen Beispielen festlegen. Dadurch werden Probleme mit der teilweisen Konfiguration vermieden, die beim mehrfachen Bearbeiten einer Datei auftreten können. Weitere Informationen zur ECS Agentenkonfiguration finden Sie unter Amazon ECS Container Agenton GitHub. -
Optional können Sie die Variable
CREDENTIALS_FETCHER_HOST
verwenden, wenn Sie diecredentials-fetcher
-Daemon-Konfiguration ändern, um den Socket an einen anderen Ort zu verschieben.
-
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.
-
(Optional) domainloses gMSA-Secret
Wenn Sie die domainlose Methode verwenden, bei der die Instance nicht mit der Domain verknüpft ist, gehen Sie wie folgt vor.
Sie müssen der IAM Rolle „Aufgabenausführung“ die folgenden Berechtigungen als Inline-Richtlinie hinzufügen. Dadurch erhält der
credentials-fetcher
-Daemon Zugriff auf das Secrets-Manager-Secret. Ersetzen Sie dasMySecret
Beispiel durch den Amazon-Ressourcennamen (ARN) Ihres Geheimnisses in derResource
Liste.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "
arn:aws:ssm:
" ] } ] }aws-region
:111122223333:secret:MySecretAnmerkung
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.
-
Entscheiden Sie, ob Sie SSM Parameter Store oder S3 zum Speichern von CredSpec
Amazon ECS unterstützt die folgenden Möglichkeiten, auf den Dateipfad im
credentialSpecs
Feld der Aufgabendefinition zu verweisen.Wenn Sie die Instances zu einer einzigen Domain zusammenfügen, verwenden Sie das Präfix
credentialspec:
am Anfang von ARN in der Zeichenfolge. Wenn Sie domainlose gMSA verwenden, verwenden Siecredentialspecdomainless:
.Weitere Informationen zu CredSpecfinden Sie unter Anmeldeinformationsspezifikationsdatei.
-
Amazon S3 Bucket
Fügen Sie die Anmeldeinformationsspezifikation zu einem Amazon-S3-Bucket hinzu. 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}
" ], ... } ], ... }Um Ihren Aufgaben Zugriff auf den S3-Bucket zu gewähren, fügen Sie der ECS IAM Amazon-Aufgabenausführungsrolle die folgenden Berechtigungen als Inline-Richtlinie hinzu.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor", "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::
amzn-s3-demo-bucket
", "arn:aws:s3:::amzn-s3-demo-bucket/{object}
" ] } ] } -
SSM Parameterspeicher-Parameter
Fügen Sie die Anmeldeinformationsspezifikation zu einem SSM Parameter Store-Parameter hinzu. Verweisen Sie dann auf den Amazon-Ressourcennamen (ARN) des SSM Parameter-Speicher-Parameters im
credentialSpecs
Feld der Aufgabendefinition.{ "family": "", "executionRoleArn": "", "containerDefinitions": [ { "name": "", ... "credentialSpecs": [ "credentialspecdomainless:arn:aws:ssm:
aws-region
:111122223333
:parameter/parameter_name
" ], ... } ], ... }Um Ihren Aufgaben Zugriff auf den SSM Parameter Parameter Store zu gewähren, fügen Sie der ECS IAM Amazon-Aufgabenausführungsrolle die folgenden Berechtigungen als Inline-Richtlinie hinzu.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": [ "arn:aws:ssm:
aws-region
:111122223333
:parameter/parameter_name
" ] } ] }
-
Anmeldeinformationsspezifikationsdatei
Amazon ECS verwendet eine Active Directory-Anmeldeinformationsspezifikationsdatei (CredSpec). Diese Datei enthält die gMSA-Metadaten, die verwendet werden, um den gMSA-Kontokontext an den Linux-Container weiterzuleiten. Sie erstellen CredSpec und verweisen darauf in dem credentialSpecs
-Feld in Ihrer Aufgabendefinition. Die CredSpec-Datei enthält keine Secrets.
Im Folgenden sehen Sie ein Beispiel für eine CredSpec-Datei.
{
"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 einer CredSpec
Sie erstellen eine CredSpec indem Sie das Modul CredSpec PowerShell auf einem Windows-Computer verwenden, der mit der Domain verbunden ist. Folgen Sie den Schritten unter Anmeldeinformationsspezifikation erstellen