Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Découvrez comment utiliser gMSAs les conteneurs EC2 Windows pour Amazon ECS
Amazon ECS prend en charge l'authentification Active Directory pour les conteneurs Windows par l'intermédiaire d'un type de compte de service spécial appelé group Managed Service Account (gMSA).
Applications réseau basées sur Windows, telles que. NETles applications utilisent souvent Active Directory pour faciliter la gestion de l'authentification et des autorisations entre les utilisateurs et les services. Les développeurs conçoivent généralement leurs applications de façon qu'elles s'intègrent à Active Directory et s'exécutent à cette fin sur des serveurs joints à un domaine. Les conteneurs Windows ne pouvant pas être joints à un domaine, vous devez configurer un conteneur Windows pour qu'il s'exécute avec g. MSA
Un conteneur Windows s'exécutant avec g attend MSA de son EC2 instance Amazon hôte qu'elle récupère les MSA informations d'identification g auprès du contrôleur de domaine Active Directory et qu'elle les communique à l'instance de conteneur. Pour plus d'informations, consultez la section Créer gMSAs des conteneurs Windows
Note
Cette fonction n'est pas prise en charge par les conteneurs Windows sur Fargate.
Considérations
Les éléments suivants doivent être pris en compte lors de l' gMSAs utilisation de conteneurs Windows :
-
Lorsque vous utilisez Windows Server 2016 Full ECS optimisé pour Amazon AMI pour vos instances de conteneur, le nom d'hôte du conteneur doit être le même que le nom de MSA compte g défini dans le fichier de spécification des informations d'identification. Pour spécifier le nom d'hôte d'un conteneur, utilisez le paramètre de définition de conteneur
hostname
. Pour de plus amples informations, veuillez consulter Paramètres réseau. -
Vous avez choisi entre le mode sans domaine gMSAet en joignant chaque instance à un seul domaine. En utilisant sans domaine gMSA, l'instance de conteneur n'est pas jointe au domaine, les autres applications de l'instance ne peuvent pas utiliser les informations d'identification pour accéder au domaine et les tâches qui joignent différents domaines peuvent s'exécuter sur la même instance.
Choisissez ensuite le stockage des données pour CredSpec et, éventuellement, pour les informations d'identification utilisateur Active Directory pour les sans domaine gMSA.
Amazon ECS utilise un fichier de spécification des informations d'identification Active Directory (CredSpec). Ce fichier contient gMSA métadonnées utilisées pour propager le gMSA contexte du compte pour le conteneur. Vous générez les CredSpec puis stockez-le dans l'un des CredSpec options de stockage du tableau suivant, spécifique au système d'exploitation des instances de conteneur. Pour utiliser la méthode sans domaine, une section facultative du CredSpec le fichier peut spécifier des informations d'identification dans l'un des domainless user credentialsoptions de stockage du tableau suivant, spécifique au système d'exploitation des instances de conteneur.
Emplacement de stockage Linux Windows Amazon Simple Storage Service CredSpec CredSpec AWS Secrets Manager informations d'identification utilisateur sans domaine informations d'identification utilisateur sans domaine Amazon Manager Manager Manager Manager EC2 Parameter Manager Manager Parameter Manager Parameter Manager Manager Manager CredSpec CredSpec, informations d'identification utilisateur sans domaine Fichier local N/A CredSpec
Prérequis
Avant d'utiliser le gMSA pour la fonctionnalité de conteneurs Windows avec AmazonECS, assurez-vous de remplir les conditions suivantes :
-
Vous configurez un domaine Active Directory avec les ressources auxquelles vous souhaitez que vos conteneurs accèdent. Amazon ECS prend en charge les configurations suivantes :
-
Un AWS Directory Service Active Directory. AWS Directory Service est un Active Directory AWS géré hébergé sur AmazonEC2. Pour plus d'informations, consultez Getting Started with AWS Managed Microsoft AD dans le Guide d'AWS Directory Service administration.
-
Un répertoire Active Directory sur site. Vous devez vous assurer que l'instance de conteneur ECS Linux Amazon peut se joindre au domaine. Pour de plus amples informations, veuillez consulter AWS Direct Connect.
-
-
Vous disposez d'une gMSA compte dans le répertoire Active Directory. Pour plus d'informations, consultez la section Créer gMSAs des conteneurs Windows
. -
Vous avez choisi d'utiliser le mode sans domaine gMSAou l'instance de conteneur Amazon ECS Windows hébergeant la ECS tâche Amazon doit être jointe au domaine du répertoire Active Directory et être membre du groupe de sécurité Active Directory qui a accès au MSA compte g.
En utilisant sans domaine gMSA, l'instance de conteneur n'est pas jointe au domaine, les autres applications de l'instance ne peuvent pas utiliser les informations d'identification pour accéder au domaine et les tâches qui joignent différents domaines peuvent s'exécuter sur la même instance.
-
Vous avez ajouté les IAM autorisations requises. Les autorisations requises dépendent des méthodes que vous choisissez pour les informations d'identification initiales et pour le stockage de la spécification des informations d'identification :
-
Si vous utilisez le mode sans domaine gMSApour les informations d'identification initiales, des IAM autorisations AWS Secrets Manager sont requises sur le rôle d'EC2instance Amazon.
-
Si vous stockez la spécification des informations d'identification dans SSM Parameter Store, IAM les autorisations d'Amazon EC2 Systems Manager Parameter Store sont requises pour le rôle d'exécution de la tâche.
-
Si vous stockez la spécification des informations d'identification dans Amazon S3, IAM les autorisations d'Amazon Simple Storage Service sont requises sur le rôle d'exécution de la tâche.
-
Configuration gMSA pour Windows Containers sur Amazon ECS
Pour configurer gMSA pour Windows Containers sur AmazonECS, vous pouvez suivre le didacticiel complet qui inclut la configuration des prérequisUtilisation de conteneurs Amazon ECS Windows avec un environnement sans domaine gMSA à l'aide du AWS CLI.
Les sections suivantes couvrent CredSpec configuration en détail.
Rubriques
Exemple CredSpec
Amazon ECS utilise un fichier de spécifications d'identification qui contient gMSA métadonnées utilisées pour propager le gMSA contexte du compte dans le conteneur Windows. Vous pouvez générer le fichier de spécification d'informations d'identification et le référencer dans le champ credentialSpec
de votre définition de tâche. Le fichier de spécification d'informations d'identification ne contient pas de secrets.
Voici un exemple de fichier de spécification d'informations d'identification :
{
"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"
}
]
}
}
Sans domaine gMSA configuration
Il est recommandé de ne pas utiliser de domaine gMSA au lieu de joindre les instances de conteneur à un seul domaine. En utilisant sans domaine gMSA, l'instance de conteneur n'est pas jointe au domaine, les autres applications de l'instance ne peuvent pas utiliser les informations d'identification pour accéder au domaine et les tâches qui joignent différents domaines peuvent s'exécuter sur la même instance.
-
Avant de télécharger le CredSpec à l'une des options de stockage, ajoutez des informations au CredSpec avec le ARN secret dans Secrets Manager ou SSM Parameter Store. Pour plus d'informations, veuillez consulter Configuration de spécifications d'informations d'identification supplémentaires pour non-domain-joined un cas d'usage avec un hôte de conteneur sur le site
Web de Microsoft Learn. Sans domaine gMSA format d'identification
Le JSON format suivant est celui du système sans domaine gMSA informations d'identification pour votre Active Directory. Stockez les informations d'identification dans Secrets Manager ou SSM Parameter Store.
{ "username":"
WebApp01
", "password":"Test123!
", "domainName":"contoso.com
" } -
Ajoutez les informations suivantes à CredSpec fichier à l'intérieur du
ActiveDirectoryConfig
. Remplacez le ARN par le secret dans Secrets Manager ou SSM Parameter Store.Veuillez noter que la
PluginGUID
valeur doit correspondre GUID à celle de l'extrait de code suivant et qu'elle est obligatoire."HostAccountConfig": { "PortableCcgVersion": "1", "PluginGUID": "{859E1386-BDB4-49E8-85C7-3070B13920E1}", "PluginInput": "{\"credentialArn\": \"arn:aws:secretsmanager:
aws-region
:111122223333:secret:gmsa-plugin-input
\"}" }Vous pouvez également utiliser un secret dans SSM Parameter Store en utilisant le ARN format suivant :
\"arn:aws:ssm:
.aws-region
:111122223333:parameter/gmsa-plugin-input
\" -
Après avoir modifié le CredSpec fichier, il doit ressembler à l'exemple suivant :
{ "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
\"}" } } }
Référencement d'un fichier de spécification d'informations d'identification dans une définition de tâche
Amazon ECS permet de référencer le chemin du fichier dans le credentialSpecs
champ de définition de tâche. Pour chacune de ces options, vous pouvez fournir credentialspec:
oudomainlesscredentialspec:
, selon que vous joignez les instances de conteneur à un seul domaine, ou utilisez sans domaine gMSA, respectivement.
Compartiment Amazon S3
Ajoutez la spécification des informations d'identification à un compartiment Amazon S3, puis référencez l'Amazon Resource Name (ARN) du compartiment Amazon S3 dans le credentialSpecs
champ de définition de tâche.
{ "family": "", "executionRoleArn": "", "containerDefinitions": [ { "name": "", ... "credentialSpecs": [ "credentialspecdomainless:arn:aws:s3:::
${BucketName}/${ObjectName}
" ], ... } ], ... }
Vous devez également ajouter les autorisations suivantes sous forme de stratégie en ligne au IAM rôle d'exécution de ECS tâche Amazon pour permettre à vos tâches d'accéder au compartiment Amazon S3.
{ "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}
" ] } ] }
Paramètre SSM Parameter Store
Ajoutez la spécification d'informations d'identification à un compartiment SSM Parameter Store, puis référencez l'Amazon Resource Name (ARN) du SSM paramètre Parameter Store dans le credentialSpecs
champ de définition de tâche.
{ "family": "", "executionRoleArn": "", "containerDefinitions": [ { "name": "", ... "credentialSpecs": [ "credentialspecdomainless:arn:aws:ssm:
region
:111122223333
:parameter/parameter_name
" ], ... } ], ... }
Vous devez également ajouter les autorisations suivantes sous forme de stratégie en ligne au IAM rôle d'exécution de ECS tâche Amazon pour permettre à vos tâches d'accéder au SSM paramètre Parameter Store.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": [ "arn:aws:ssm:
region
:111122223333
:parameter/parameter_name
" ] } ] }
Fichier local
Référencez le chemin d'un fichier local qui contient les détails de la spécification d'informations d'identification dans le champ credentialSpecs
de la définition de tâche. Le chemin de fichier référencé doit être relatif au répertoire C:\ProgramData\Docker\CredentialSpecs
et utiliser la barre oblique inverse (« \ ») comme séparateur de chemin de fichier.
{ "family": "", "executionRoleArn": "", "containerDefinitions": [ { "name": "", ... "credentialSpecs": [ "credentialspec:file://
CredentialSpecDir\CredentialSpecFile.json
" ], ... } ], ... }