Comment résoudre l'erreur « unable to pull secrets or registry auth » (Impossible d'extraire les secrets ou l'authentification du registre) dans Amazon ECS ?

Date de la dernière mise à jour : 07/04/2022

J'ai reçu l'une des erreurs suivantes lorsque j'ai lancé une tâche Amazon Elastic Container Service (Amazon ECS) :

ResourceInitializationError : impossible d'extraire des secrets ou l'authentification du registre : échec de la commande pull : : signal : tué

ResourceInitializationError : impossible d'extraire des secrets ou l'authentification du registre : échec de la récupération des ressources d'exécution : impossible de récupérer le secret d'asm : l'appel de service a été relancé

Brève description

La version 1.4.0 de la plateforme AWS Fargate utilise l'interface réseau Elastic de tâches pour extraire l'image et les secrets. Tout le trafic réseau passe par l'interface réseau Elastic au sein de votre Amazon Virtual Private Cloud (Amazon VPC). Vous pouvez consulter ce trafic via vos journaux de flux VPC Amazon. Cependant, la tâche utilise votre configuration réseau au lieu des interfaces réseau Elastic détenues par Fargate. Cela est dû au fait que les interfaces réseau Elastic sont placées dans votre Amazon VPC.

L'agent de conteneur Amazon ECS utilise un rôle AWS Identity and Access Management (IAM) d'exécution de tâche pour récupérer les informations depuis AWS Systems Manager Parameter Store ou AWS Secrets Manager. Si vous utilisez une clé AWS Key Management Service (AWS KMS) gérée par le client pour chiffrer les données dans Systems Manager Parameter Store ou Secrets Manager, vous devez accorder des autorisations au rôle IAM d'exécution de tâche pour les actions suivantes : ssm:GetParameters, secretsmanager:GetSecretValue et kms:Decrypt.

Résolution

Vérifier les acheminements de vos sous-réseaux vers Internet

Si vous avez une tâche Fargate dans un sous-réseau public, vérifiez que votre tâche dispose d'une adresse IP publique attribuée et d'un acheminement par défaut (0.0.0.0/0) vers une passerelle Internet. Veillez à activer l'attribution automatique du mode public lorsque vous lancez une nouvelle tâche ou créez un service. Si vous utilisez les points de terminaison d'un VPC Secrets Manager ou Systems Manager dans un sous-réseau public et que Amazon ProvidedDNS est activé dans le paramètre des options DHCP de votre Amazon VPC, le point de terminaison Amazon VPC est utilisé pour atteindre Secrets Manager ou Systems Manager au lieu de la passerelle Internet dans le sous-réseau public.

Remarque : vous ne pouvez pas activer cette option pour les tâches existantes. Pour les services existants, vous ne pouvez pas activer cette option à l'aide de la console de gestion AWS. Toutefois, vous pouvez utiliser AWS Command Line Interface (AWS CLI) pour reconfigurer les services existants. Si vous avez créé votre Amazon ECS service à l'aide d'une pile AWS CloudFormation, vous pouvez mettre à jour le service en modifiant la propriété NetworkConfiguration d'AWS::ECS::Service.

Si vous avez une tâche Fargate dans un sous-réseau privé, vérifiez que votre tâche dispose d'un acheminement par défaut (0.0.0.0/0) vers une passerelle NAT, AWS PrivateLink ou une autre source de connectivité Internet.

  • Si vous utilisez une passerelle NAT, placez votre passerelle NAT dans un sous-réseau public. Pour plus d'informations, consultez Concevoir une architecture avec une passerelle Internet et une passerelle NAT.
  • Si vous utilisez PrivateLink, assurez-vous que votre infrastructure Fargate peut utiliser les groupes de sécurité pour vos points de terminaison Amazon VPC.
  • Si vous utilisez un serveur de domaine de noms personnalisé, assurez-vous que la requête DNS dispose d'un accès sortant sur le port 53 à l'aide des protocoles UDP et TCP, ainsi que d'un accès HTTPS sur le port 443.

Vérifier les paramètres de votre ACL réseau et de vos groupes de sécurité

Vérifiez que votre liste de contrôle d'accès (ACL) réseau et vos groupes de sécurité ne bloquent pas l'accès sortant au port 443 à partir du sous-réseau. Pour plus d'informations, consultez Groupes de sécurité pour votre VPC.

Remarque : les tâches Fargate doivent disposer d'un accès sortant au port 443 pour autoriser le trafic sortant et accéder aux points de terminaison Amazon ECS.

Vérifier vos points de terminaison Amazon VPC

Si vous utilisez PrivateLink, assurez-vous d'avoir créé les points de terminaison requis.

Les points de terminaison requis pour les versions 1.4.0 ou ultérieures de la plateforme Fargate sont :

  • com.amazonaws.region.ecr.dkr
  • com.amazonaws.region.ecr.api
  • Point de terminaison de passerelle S3
  • com.amazonaws.region.logs

Pour plus d'informations, consultez Considérations relatives aux points de terminaison de VPC Amazon ECR.

Remarque : si votre définition de tâche utilise Secrets Manager, les paramètres Systems Manager, ou Amazon CloudWatch Logs, vous devrez peut-être définir des points de terminaison. Pour plus d'informations, consultez Utilisation de Secrets Manager avec les points de terminaison d'un VPC, Création des points de terminaison d'un VPC pour Amazon ECS et Utilisation de CloudWatch Logs avec des points de terminaison d'un VPC d'interface.

Si vous utilisez PrivateLink, assurez-vous que le groupe de sécurité attaché au point de terminaison Amazon VPC autorise le trafic provenant du groupe de sécurité de tâches Fargate ou de la plage d'adresses CIDR de VPC de tâches Fargate sur le port TCP 443.

Vérifiez les politiques de points de terminaison d'un VPC et les politiques de points de terminaison pour Amazon Simple Storage Solution (Amazon S3) afin de vous assurer que l'infrastructure Fargate est autorisée à accéder aux services.

Vérifier vos rôles et autorisations IAM

Le rôle d'exécution de tâche accorde les autorisations requises au conteneur Amazon ECS et aux agents Fargate pour effectuer des appels d'API pour la tâche. Ce rôle est requis par Fargate lorsque vous effectuez ce qui suit :

  • Extraire une image de conteneur depuis Amazon Elastic Container Registry (Amazon ECR)
  • Utiliser le pilote de journal awslogs.
  • Utiliser l'authentification du registre privé.
  • Référencer des données sensibles à l'aide des secrets Secrets Manager ou de paramètres Systems Manager Parameter Store.

Si votre cas d'utilisation implique l'un des scénarios susmentionnés, vérifiez que vous disposez des autorisations requises définies dans votre rôle d'exécution de tâche. Pour obtenir la liste complète des autorisations requises, consultez Rôle IAM d'exécution de tâche Amazon ECS.

Vérifiez les informations sensibles référencées dans la définition de tâche Amazon ECS

Vérifiez si les noms de secrets/paramètres correspondent aux noms référencés dans votre définition de tâche Amazon ECS. Ensuite, vérifiez si les valeurs de la définition du conteneur dans votre définition de tâche correspondent aux valeurs de votre définition de tâche Amazon ECS. Pour plus d'informations, consultez Comment transmettre des secrets ou des informations sensibles en toute sécurité aux conteneurs dans le cadre d'une tâche Amazon ECS ?

Si le paramètre Systems Manager Parameter Store existe dans la même région que la tâche que vous lancez, vous pouvez alors utiliser soit l'ARN complet, soit le nom du secret. Si le paramètre existe dans une région différente, l'ARN complet doit être spécifié.

Pour vérifier le nom du paramètre et l'ARN du System Manager, procédez comme suit :

1.    Ouvrez la console AWS Systems Manager.

2.    Dans le panneau de navigation, choisissez Parameter Store (Magasin de paramètres), puis confirmez le Parameter store name (Nom du magasin de paramètres).

3.    Ensuite, pour obtenir des informations ARN sur le paramètre, utilisez l'AWS Command Line Interface (AWS CLI), et exécutez la commande suivante :
Remarque : remplacez nom_du_paramètre_store_secret par le nom du secret de votre magasin de paramètres.

$ aws ssm get-parameter —name <name_of_parameter_store_secret> —with-decryption

Remarque : les paramètres qui font référence à des secrets Secrets Manager ne peuvent pas utiliser les fonctions de gestion des versions ou d'historique du Parameter Store (Magasin de paramètres). Pour plus d'informations, consultez Restrictions.


Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?