Découvrez comment utiliser les conteneurs g MSAs pour EC2 Windows pour Amazon ECS - Amazon Elastic Container Service

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 les conteneurs g MSAs pour 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é gMSA (group Managed Service Account).

Les applications réseau Windows comme les applications .NET font souvent appel à 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. Étant donné que les conteneurs Windows ne peuvent pas être joints à un domaine, vous devez configurer un conteneur Windows pour qu'il s'exécute avec un compte gMSA.

Un conteneur Windows exécuté avec GMSA s'appuie sur son EC2 instance Amazon hôte pour récupérer les informations d'identification GMSA auprès du contrôleur de domaine Active Directory et les fournir à l'instance de conteneur. Pour plus d'informations, voir Create g MSAs pour les conteneurs Windows.

Note

Cette fonction n'est pas prise en charge par les conteneurs Windows sur Fargate.

Considérations

Les points suivants doivent être pris en compte lors de l'utilisation de g MSAs pour les conteneurs Windows :

  • Lorsque vous utilisez l'AMI Windows Server 2016 Full optimisée pour Amazon ECS pour vos instances de conteneur, le nom d'hôte du conteneur doit être le même que le nom de compte gMSA 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 les gMSA sans domaine et joindre chaque instance à un seul domaine. En utilisant les gMSA sans domaine, 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 de données pour CredSpec et, éventuellement, pour les informations d'identification utilisateur Active Directory pour les gMSA sans domaine.

    Amazon ECS utilise un fichier de spécification des informations d'identification Active Directory (CredSpec). Ce fichier contient les métadonnées gMSA servant à propager le contexte du compte gMSA au conteneur. Vous générez le fichier CredSpec, puis vous le stockez dans l'une des options de stockage CredSpec 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 fichier CredSpec peut spécifier les informations d'identification dans l'une des options de stockage domainless user credentials du tableau suivant, spécifiques 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
    Boutique de paramètres Amazon EC2 Systems Manager CredSpec CredSpec, informations d'identification utilisateur sans domaine
    Fichier local N/A CredSpec

Prérequis

Avant d'utiliser la fonctionnalité gMSA pour les conteneurs Windows avec Amazon ECS, 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 Amazon EC2. 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 Linux Amazon ECS peut se joindre au domaine. Pour de plus amples informations, veuillez consulter AWS Direct Connect.

  • Vous disposez d'un compte gMSA existant dans l'Active Directory. Pour plus d'informations, voir Create g MSAs pour les conteneurs Windows.

  • Vous avez choisi d'utiliser gMSA sans domaine ou l'instance de conteneur Amazon ECS Windows hébergeant la tâche Amazon ECS 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 compte gMSA.

    En utilisant les gMSA sans domaine, 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 autorisations IAM 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 domainless gMSA pour les informations d'identification initiales, les autorisations IAM pour 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, les autorisations IAM pour 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, les autorisations IAM d'Amazon Simple Storage Service sont requises sur le rôle d'exécution de la tâche.

Configuration de gMSA pour des conteneurs Windows sur Amazon ECS

Pour configurer gMSA pour les conteneurs Windows sur Amazon ECS, vous pouvez suivre le didacticiel complet qui inclut la configuration des prérequis Utilisation de conteneurs Windows Amazon ECS avec des conteneurs sans domaine à gMSA l'aide du AWS CLI.

Les sections suivantes décrivent la configuration de CredSpec en détail.

CredSpec exemple

Amazon ECS utilise un fichier de spécification d'informations d'identification qui contient les métadonnées gMSA servant à propager le contexte du compte gMSA au 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" } ] } }

Configuration de gMSA sans domaine

Nous recommandons gMSA sans domaine au lieu de joindre les instances de conteneur à un seul domaine. En utilisant les gMSA sans domaine, 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.

  1. Avant de charger CredSpec vers l'une des options de stockage, ajoutez des informations au CredSpec à l'aide de l'ARN du secret dans Secrets Manager ou SSM Parameter Store. Pour plus d'informations, consultez la section Configuration des spécifications d'identification supplémentaires pour le cas d'utilisation d' non-domain-joinedun hôte de conteneur sur le site Web de Microsoft Learn.

    Format d'informations d'identification gMSA sans domaine

    Voici le format JSON pour les informations d'identification gMSA sans domaine pour votre Active Directory. Stockez les informations d'identification dans Secrets Manager ou SSM Parameter Store.

    { "username":"WebApp01", "password":"Test123!", "domainName":"contoso.com" }
  2. Ajoutez les informations suivantes au fichier CredSpec contenu dans le ActiveDirectoryConfig. Remplacez l'ARN par le secret dans Secrets Manager ou SSM Parameter Store.

    Veuillez noter que la valeur PluginGUID doit correspondre au GUID 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 l'ARN au format suivant : \"arn:aws:ssm:aws-region:111122223333:parameter/gmsa-plugin-input\".

  3. Une fois le fichier CredSpec modifié, 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 champ credentialSpecs d'une définition de tâche. Pour chacune de ces options, vous pouvez fournir credentialspec: ou domainlesscredentialspec:, selon que vous joignez les instances de conteneur à un seul domaine, ou que vous utilisez gMSA sans domaine, respectivement.

Compartiment Amazon S3

Ajoutez la spécification d'informations d'identification à un compartiment Amazon S3, puis référencez l'Amazon Resource Name (ARN) du compartiment Amazon S3 dans le champ credentialSpecs de la 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 rôle IAM d'exécution de tâche Amazon ECS 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 paramètre SSM Parameter Store dans le champ credentialSpecs de la 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 rôle IAM d'exécution de tâche Amazon ECS pour permettre à vos tâches d'accéder au paramètre SSM 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" ], ... } ], ... }