Découvrez comment utiliser gMSAs les conteneurs 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 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.

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.

  1. 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" }
  2. Ajoutez les informations suivantes à CredSpec fichier à l'intérieur duActiveDirectoryConfig. 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\".

  3. 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" ], ... } ], ... }