Comment résoudre les problèmes liés aux secrets d'AWS Secrets Manager dans Amazon ECS ?

Date de la dernière mise à jour : 30/03/2022

Lorsque j'essaie de placer une tâche qui utilise des secrets d'AWS Secrets Manager dans Amazon Elastic Container Services (Amazon ECS), je reçois l'une des erreurs suivantes :

  • Erreur ResourceInitializationError sur AWS Fargate
  • Erreur AccessDenied sur Amazon Elastic Compute Cloud (Amazon EC2)

La tâche est incapable de récupérer les secrets de Secrets Manager et échoue.

Brève description

Vous obtenez ces messages d'erreur pour l'une des raisons suivantes :

  • Le rôle d'exécution de tâche Amazon ECS n'a pas les autorisations requises pour accéder aux secrets de Secrets Manager.
  • Secrets Manager ne peut pas trouver le secret spécifié.
  • Le nom du secret se termine par un trait d'union suivi de six caractères. Cela renvoie des résultats inattendus lorsque vous recherchez un secret à l'aide d'un ARN partiel.
  • Il y a des problèmes avec la configuration de vos réseaux Amazon Virtual Private Cloud (Amazon VPC).

Solution

Vérifiez que le rôle d'exécution de tâche ECS dispose des autorisations requises

  1. Ouvrez la console IAM.
  2. Dans le panneau de navigation, choisissez Roles (Rôles).
  3. Recherchez dans la liste des rôles le rôle d'exécution de tâche que vos tâches ECS utilisent.
  4. Vérifiez que le rôle d'exécution de tâche dispose des autorisations requises pour accéder à la ressource Secrets Manager nécessaire.

Vérifiez l'existence du secret de Secrets Manager

  1. Ouvrez la console Secrets Manager.
  2. Sur la page Secrets list (Liste des secrets), choisissez le secret que vos tâches ECS utilisent.
  3. Vérifiez que votre définition de tâche ECS inclut ces noms de secrets spécifiques. Si vous avez spécifié des paramètres supplémentaires dans le secret, vérifiez que votre définition de tâche inclut json-key/version-stage/version-id qui est spécifié dans le secret.

Vérifiez le nom et l'ARN du secret de Secrets Manager

Vérifiez si le nom de votre secret se termine par un trait d'union suivi de six caractères (exemple : myappsecret-xxxxxx). Secrets Manager ajoute automatiquement un trait d'union et six caractères aléatoires après le nom du secret à la fin de l'ARN. Par conséquent, c'est une bonne pratique de ne pas terminer le nom de votre secret par un trait d'union suivi de six caractères. Cela pourrait donner des résultats inattendus lorsque vous recherchez un secret à l'aide d'un ARN partiel. Pour résoudre ce problème, assurez-vous d'utiliser les ARN complets, y compris le trait d'union et les six caractères supplémentaires, des secrets de Secrets Manager.

Vérifiez que la configuration de vos réseaux VPC permet à votre infrastructure Amazon ECS d'atteindre Secrets Manager

Créez les points de terminaison d'un VPC d'interface pour Secrets Manager lorsque les conditions suivantes sont réunies :

  • Vous utilisez une définition de tâche qui fait référence aux secrets de Secrets Manager pour récupérer des données sensibles pour vos conteneurs.
  • Vous utilisez des points de terminaison d'un VPC d'interface.

Assurez-vous également que les groupes de sécurité de vos points de terminaison d'un VPC permettent à l'infrastructure ECS d'utiliser ces points de terminaison.

Pour vérifier si le point de terminaison d'un VPC pour Secrets Manager existe, procédez comme suit :

  1. Ouvrez la console Amazon VPC.
  2. Dans le panneau de navigation, choisissez Endpoints (Points de terminaison).
  3. Assurez-vous que le point de terminaison d'un VPC com.amazonaws.example-region.secretsmanager pour Secrets Manager figure dans la liste des points de terminaison.
  4. Sélectionnez le point de terminaison dans la liste des points de terminaison, puis choisissez l'onglet Subnets (Sous-réseaux). Assurez-vous que les sous-réseaux de ce point de terminaison incluent ceux utilisés par votre tâche ECS.
    Remarque : si aucun sous-réseau n'est répertorié, choisissez Manage Subnets (Gérer les sous-réseaux). Sélectionnez le sous-réseau en fonction de sa Availability Zone (Zone de disponibilité), puis choisissez Modify Subnets (Modifier les sous-réseaux).

Pour confirmer que le groupe de sécurité attaché au point de terminaison com.amazonaws.example-region.secretsmanager autorise les connexions entrantes sur le port 443 depuis les tâches Amazon ECS, procédez comme suit :

  1. Sélectionnez le point de terminaison dans la liste des points de terminaison.
  2. Choisissez l'onglet Security Groups (Groupes de sécurité).
  3. Choisissez le Group ID (ID de groupe) pour le groupe de sécurité que vous voulez vérifier.
  4. Choisissez l'onglet Inbound rules (Règles entrantes).
  5. Vérifiez que la liste des règles entrantes inclut une règle qui autorise les connexions 443 à partir de vos tâches ECS.