Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Utilisation gMSA pour EC2 Linux conteneurs sur Amazon ECS

Mode de mise au point
Utilisation gMSA pour EC2 Linux conteneurs sur 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.

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.

Amazon ECS prend en charge l'authentification Active Directory pour les conteneurs Linux EC2 via un type spécial de compte de service appelé compte de service géré de groupe (gMSA).

Linux applications réseau basées sur le réseau, telles que .NET Les applications principales peuvent utiliser Active Directory pour faciliter l'authentification et la gestion des autorisations entre les utilisateurs et les services. Vous pouvez utiliser cette fonctionnalité en concevant des applications qui s'intègrent à Active Directory et s'exécutent sur des serveurs joints à un domaine. Mais, parce que Linux les conteneurs ne peuvent pas être joints à un domaine, vous devez configurer un Linux conteneur avec lequel courir gMSA.

A Linux conteneur qui fonctionne avec gMSA repose sur le credentials-fetcher daemon qui s'exécute sur l' EC2 instance Amazon hôte du conteneur. C'est-à-dire que le daemon récupère le gMSA informations d'identification provenant du contrôleur de domaine Active Directory, puis transfère ces informations d'identification à l'instance de conteneur. Pour plus d'informations sur les comptes de service, voir Créer gMSAs pour les conteneurs Windows sur le site Web de Microsoft Learn.

Considérations

Tenez compte des points suivants avant d'utiliser gMSA for Linux récipients :

  • Si vos conteneurs fonctionnent encore EC2, vous pouvez utiliser gMSA for Windows conteneurs et Linux conteneurs. Pour plus d'informations sur la façon d'utiliser gMSA pour le conteneur Linux sur Fargate, voir. Utilisation gMSA for Linux conteneurs sur Fargate

  • Vous pourriez avoir besoin d'un Windows ordinateur joint au domaine pour remplir les conditions requises. Par exemple, vous pourriez avoir besoin d'un Windows ordinateur joint au domaine pour créer le gMSA dans Active Directory avec PowerShell. Le RSAT Les PowerShell outils Active Director ne sont disponibles que pour Windows. Pour plus d'informations, consultez la section Installation des outils d'administration Active Directory.

  • Vous avez choisi entre le mode sans domaine gMSAet en joignant chaque instance à un seul domaine. En utilisant le mode 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 le CredSpec et éventuellement, pour les informations d'identification de l'utilisateur Active Directory pour les applications 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 le CredSpec puis stockez-le dans l'un des CredSpec options de stockage dans le tableau suivant, spécifiques 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 dans le 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 le gMSA pour la fonctionnalité des conteneurs Linux avec Amazon ECS, veillez à effectuer les opérations 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 avez déjà un gMSA compte dans Active Directory. Pour de plus amples informations, veuillez consulter Utilisation gMSA pour EC2 Linux conteneurs sur Amazon ECS.

  • Vous avez installé et vous exécutez le démon credentials-fetcher sur une instance de conteneur Linux Amazon ECS. Vous avez également ajouté un jeu initial d'informations d'identification au démon credentials-fetcher pour vous authentifier auprès d'Active Directory.

    Note

    Le démon credentials-fetcher est uniquement disponible pour Amazon Linux 2023 et Fedora 37 et versions ultérieures. Le démon n'est pas disponible pour Amazon Linux 2. Pour plus d'informations, consultez aws/credentials-fetcher on. GitHub

  • Vous configurez les informations d'identification permettant au démon credentials-fetcher de s'authentifier auprès d'Active Directory. Les informations d'identification doivent être membres du groupe de sécurité Active Directory ayant accès au gMSA . Il existe plusieurs options dans Décidez si vous souhaitez joindre les instances au domaine ou utiliser le mode sans domaine gMSA..

  • 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 le mode sans domaine gMSApour les informations d'identification initiales, les autorisations IAM pour AWS Secrets Manager sont requises sur le rôle d'exécution de la tâche.

    • 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 gMSA-capable Linux Conteneurs sur Amazon ECS

Préparation de l'infrastructure

Les étapes suivantes sont des considérations et une configuration qui ne sont effectuées qu'une seule fois. Après avoir terminé ces étapes, vous pouvez automatiser la création d'instances de conteneur afin de réutiliser cette configuration.

Décidez comment les informations d'identification initiales sont fournies et configurez les données EC2 utilisateur dans un modèle de EC2 lancement réutilisable pour installer le credentials-fetcher daemon.

  1. Décidez si vous souhaitez joindre les instances au domaine ou utiliser le mode sans domaine gMSA.
    • Joindre EC2 des instances au domaine Active Directory

      • Jointure des instances par les données utilisateur

        Ajoutez les étapes permettant de joindre le domaine Active Directory à vos données EC2 utilisateur dans un modèle de EC2 lancement. Plusieurs groupes Amazon EC2 Auto Scaling peuvent utiliser le même modèle de lancement.

        Vous pouvez suivre ces étapes pour rejoindre un Active Directory ou FreeIPA domaine dans les documents Fedora.

    • Créer un utilisateur Active Directory pour domainless gMSA

      Le credentials-fetcher démon possède une fonctionnalité appelée «  sans domaine » gMSA. Cette fonctionnalité nécessite un domaine, mais il n'est pas nécessaire que l' EC2instance soit jointe au domaine. En utilisant le mode 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. Au lieu de cela, vous indiquez le nom d'un secret AWS Secrets Manager dans le CredSpec dans le fichier. Le secret doit contenir un nom d'utilisateur, un mot de passe et le domaine auquel se connecter.

      Cette fonctionnalité est prise en charge et peut être utilisée avec les conteneurs Linux et Windows.

      Cette fonctionnalité est similaire à gMSA support for non-domain-joined container hostsfonctionnalité. Pour plus d'informations sur la fonctionnalité Windows, voir gMSA architecture et améliorations sur le site Web de Microsoft Learn.

      1. Créez un utilisateur dans votre domaine Active Directory. L'utilisateur d'Active Directory doit être autorisé à accéder au gMSA comptes de service que vous utilisez dans les tâches.

      2. Créez un secret dans AWS Secrets Manager, après avoir créé l'utilisateur dans Active Directory. Pour plus d'informations, consultez la section Création d'un AWS Secrets Manager secret.

      3. Saisissez respectivement le nom d'utilisateur, le mot de passe et le domaine de l'utilisateur dans les paires clé-valeur JSON appelées username, password et domainName.

        {"username":"username","password":"passw0rd", "domainName":"example.com"}
      4. Ajoutez une configuration au CredSpec fichier pour le compte de service. La HostAccountConfig supplémentaire contient l'Amazon Resource Name (ARN) du secret dans Secrets Manager.

        Sous Windows, le PluginGUID doit correspondre au GUID indiqué dans l'exemple de code suivant. Sous Linux, le PluginGUID est ignoré. Remplacez MySecret par l'exemple avec l'Amazon Resource Name (ARN) de votre secret.

        "ActiveDirectoryConfig": { "HostAccountConfig": { "PortableCcgVersion": "1", "PluginGUID": "{859E1386-BDB4-49E8-85C7-3070B13920E1}", "PluginInput": { "CredentialArn": "arn:aws:secretsmanager:aws-region:111122223333:secret:MySecret" } }
      5. Le sans domaine gMSAla fonctionnalité nécessite des autorisations supplémentaires dans le rôle d'exécution des tâches. Suivez l'étape (Facultatif) sans domaine gMSA secret.

  2. Configurez des instances et installez le démon credentials-fetcher.

    Vous pouvez installer le credentials-fetcher daemon avec un script de données utilisateur dans votre modèle de EC2 lancement. Les exemples suivants illustrent deux types de données utilisateur : cloud-config YAML or bash script. Ces exemples concernent Amazon Linux 2023 (AL2023). Remplacez MyCluster par le nom du cluster Amazon ECS que vous souhaitez que ces instances rejoignent.

    • cloud-config YAML
      Content-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-fetcher && systemctl enable credentials-fetcher"
    • bash script

      Si vous êtes plus à l'aise avec bash pour les scripts contenant plusieurs variables dans lesquelles écrire/etc/ecs/ecs.config, utilisez le heredoc format suivant. Ce format écrit tout entre les lignes commençant par cat et EOF dans le fichier de configuration.

      #!/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-fetcher && systemctl enable credentials-fetcher cat <<'EOF' >> /etc/ecs/ecs.config ECS_CLUSTER=MyCluster ECS_GMSA_SUPPORTED=true EOF

    Il existe des variables de configuration facultatives pour le démon credentials-fetcher que vous pouvez définir dans /etc/ecs/ecs.config. Nous vous recommandons de définir les variables dans les données utilisateur du bloc YAML ou heredoc de manière similaire aux exemples précédents. Cela permet d'éviter les problèmes de configuration partielle qui peuvent survenir lors de la modification d'un fichier à plusieurs reprises. Pour plus d'informations sur la configuration de l'agent ECS, consultez Amazon ECS Container Agent on GitHub.

    • Vous pouvez éventuellement utiliser la variable CREDENTIALS_FETCHER_HOST si vous modifiez la configuration du démon credentials-fetcher pour déplacer le socket vers un autre emplacement.

Configuration des autorisations et des secrets

Effectuez les étapes suivantes une fois pour chaque application et chaque définition de tâche. Nous vous recommandons d'utiliser le principe de moindre privilège et d'affiner les autorisations utilisées dans la stratégie. Ainsi, chaque tâche ne peut lire que les secrets dont elle a besoin.

  1. (Facultatif) sans domaine gMSA secret

    Si vous utilisez la méthode sans domaine dans laquelle l'instance n'est pas jointe au domaine, procédez comme suit.

    Vous devez ajouter les autorisations suivantes sous forme de stratégie en ligne au rôle IAM d'exécution de tâche. Cela permet au démon credentials-fetcher d'accéder au secret Secrets Manager. Remplacez l'exemple MySecret par l'Amazon Resource Name (ARN) de votre secret dans la liste Resource.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:ssm:aws-region:111122223333:secret:MySecret" ] } ] }
    Note

    Si vous utilisez votre propre clé KMS pour chiffrer votre secret, vous devez ajouter les autorisations nécessaires à ce rôle et ajouter ce rôle à la politique des AWS KMS clés.

  2. Décidez si vous utilisez le magasin de paramètres SSM ou S3 pour stocker le CredSpec

    Amazon ECS permet de référencer le chemin du fichier dans le champ credentialSpecs d'une définition de tâche.

    Si vous joignez les instances à un seul domaine, utilisez le préfixe credentialspec: au début de l'ARN dans la chaîne. Si vous utilisez le mode sans domaine gMSA, puis utilisezcredentialspecdomainless:.

    Pour plus d'informations sur le CredSpec, voir Fichier de spécification des informations d'identification.

    • Compartiment Amazon S3

      Ajoutez la spécification d'informations d'identification à un compartiment Amazon S3. Référencez ensuite 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}" ], ... } ], ... }

      Pour permettre à vos tâches d'accéder au compartiment S3, ajoutez les autorisations suivantes sous forme de stratégie en ligne au rôle IAM d'exécution de tâche Amazon ECS.

      { "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}" ] } ] }
    • Paramètre SSM Parameter Store

      Ajoutez la spécification d'informations d'identification à un paramètre de SSM Parameter Store. Référencez ensuite l'Amazon Resource Name (ARN) du paramètre de SSM Parameter Store dans le champ credentialSpecs de la définition de tâche.

      { "family": "", "executionRoleArn": "", "containerDefinitions": [ { "name": "", ... "credentialSpecs": [ "credentialspecdomainless:arn:aws:ssm:aws-region:111122223333:parameter/parameter_name" ], ... } ], ... }

      Pour permettre à vos tâches d'accéder au paramètre de SSM Parameter Store, ajoutez les autorisations suivantes sous forme de stratégie en ligne au rôle IAM d'exécution de tâche Amazon ECS.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": [ "arn:aws:ssm:aws-region:111122223333:parameter/parameter_name" ] } ] }

Fichier de spécification des informations d'identification

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 Linux contenant. Vous générez le CredSpec et référencez-le dans le credentialSpecs champ de votre définition de tâche. Le CredSpec le fichier ne contient aucun secret.

Ce qui suit est un exemple CredSpec dans le fichier.

{ "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" } } } }
Création d'un CredSpec

Vous créez un CredSpec en utilisant le CredSpec PowerShell module sur un Windows ordinateur joint au domaine. Suivez les étapes décrites dans la section Créer une spécification d'identification sur le Microsoft Site Web Learn.

ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.