J’ai abonné une adresse e-mail à ma rubrique Amazon Simple Notification Service (Amazon SNS). Ensuite, j’ai reçu un e-mail confirmant que je m’étais désabonné de ma rubrique SNS alors que je n’avais pas autorisé cette action.
Brève description
Lorsque vous publiez des messages dans une rubrique Amazon SNS ayant des abonnés par e-mail, le message que ces abonnés reçoivent contient un lien permettant de se désabonner. Un message indique « Si vous ne souhaitez plus recevoir de notifications de cette rubrique, cliquez sur le lien ci-dessous ou ouvrez-le pour vous désabonner. »
Des actions de désabonnement peuvent être déclenchées involontairement par des systèmes automatisés, comme des analyseurs de sécurité des e-mails ou des filtres anti-spam. Ces systèmes automatisés ouvrent les liens contenus dans les e-mails reçus pour les inspecter et peuvent activer involontairement le lien de désabonnement de l’abonné.
Des actions de désabonnement peuvent également se produire si un abonné par e-mail d’une liste de diffusion associée à une rubrique Amazon SNS choisit le lien de désabonnement. Cette action désabonne l’adresse e-mail de la liste de diffusion. Tous les membres de la liste de diffusion reçoivent alors un message « Confirmation de désabonnement ».
Pour empêcher les désabonnements involontaires ou non autorisés, créez un abonnement qui nécessite une authentification pour se désabonner. Cette exigence d’authentification de l’abonnement permet uniquement au propriétaire de la rubrique et au propriétaire de l’abonnement de se désabonner. Tous les autres abonnés qui choisissent le lien reçoivent le message suivant :
« Votre abonnement n’a pas pu être supprimé en raison d’une erreur. Si vous souhaitez vous désabonner, mais que vous ne disposez pas d’informations d’identification AWS, ou si vous avez d’autres questions sur Amazon SNS, contactez Amazon à l’adresse sns-question@amazon.com. »
Résolution
Pour remplacer un abonnement par e-mail existant par un abonnement qui nécessite une authentification, désabonnez l’abonnement existant. Utilisez ensuite la console Amazon SNS ou l’interface de la ligne de commande AWS (AWS CLI) pour créer un nouvel abonnement par e-mail.
Important : vous devez avoir accès au message de confirmation de l’abonnement pour confirmer un nouvel abonnement et terminer la configuration. Si vous abonnez une liste de diffusion à votre rubrique, ajoutez d’abord votre adresse e-mail à la liste de diffusion afin de pouvoir confirmer l’abonnement.
Utiliser la console Amazon SNS pour créer un abonnement par e-mail qui nécessite une authentification pour se désabonner
Procédez comme suit :
- Ouvrez la console Amazon SNS, puis abonnez votre adresse e-mail à votre rubrique.
- Dans votre e-mail, recherchez le message de confirmation d’abonnement envoyé par AWS Notifications. L’expéditeur est généralement no-reply@sns.amazonaws.com.
Important : n’utilisez pas le lien de l’e-mail de confirmation d’abonnement pour confirmer l’abonnement.
- Copiez l’URL du lien Confirmer l’abonnement.
- Dans le volet de navigation de la console, choisissez Abonnements.
- Sur la page Abonnements, sélectionnez l’abonnement dont l’état est En attente de confirmation, puis choisissez Confirmer l’abonnement.
- Dans la boîte de dialogue Confirmer l’abonnement, collez l’URL de confirmation d’abonnement que vous avez copiée à l’étape 3.
- Choisissez Confirmer l’abonnement.
Utiliser l’AWS CLI pour créer un abonnement par e-mail qui nécessite une authentification pour se désabonner
Procédez comme suit :
Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l’AWS CLI, consultez la section Résolution des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.
- Pour obtenir la liste des rubriques Amazon SNS, exécutez la commande list-topics suivante :
aws sns list-topics --region us-east-1
Remarque : remplacez us-east-1 par la région AWS de votre rubrique.
- Dans la sortie, copiez la valeur Amazon Resource Name (ARN) de la rubrique à laquelle vous souhaitez vous abonner. La valeur ARN de la rubrique ressemble à la suivante : arn:aws:sns:us-east-1:012345678901:my-topic
- Pour abonner un point de terminaison à une rubrique Amazon SNS, exécutez la commande subscribe suivante :
aws sns subscribe --topic-arn arn:aws:sns:us-east-1:012345678901:my-topic --protocol email --notification-endpoint test@amazon.com --region us-east-1
Remarque : remplacez topic-arn par l’ARN de la rubrique que vous avez copié à l’étape 2. Remplacez notification-endpoint par l’adresse e-mail que vous souhaitez abonner à votre rubrique. Remplacez us-east-1 par la région de votre rubrique.
- Copiez l’URL du lien Confirmer l’abonnement, collez-la dans un éditeur de texte, puis copiez le jeton. Le jeton est une longue suite de chiffres et de lettres située au milieu de l’URL, après Token= et avant &Endpoint=. L’URL ressemble à la suivante :
https://sns.us-east-1.amazonaws.com/confirmation.html?TopicArn=arn:aws:sns:us-east-1:123456789012:my-topic&Token=2336412f37fb687f5d51e6e241da92fcfd03593fd8dfa4bd75978a2ad7255afb88e71028f6a034d06f469f6c7ef20a609348542a0c68a9561c03a39d59beb02e2b7112c45f7ae26c344819b39cf07f15bef6c6c09766f9caa1fa55c236e77c33a50870bc027c74640ff64a7e99a67117&Endpoint=test@amazon.com
- Pour confirmer le jeton d’abonnement, exécutez la commande confirm-subscription suivante :
aws sns confirm-subscription
--topic-arn your-topic-arn
--token your-token
--authenticate-on-unsubscribe true
Remarque : remplacez your-topic-arn par l’ARN de la rubrique que vous avez copié précédemment et your-token par le jeton que vous avez copié.
Vérifier que la demande d’abonnement a bien été authentifiée
Pour vérifier que l’abonnement a été authentifié, exécutez la commande get-subscription-attributes suivante :
aws sns get-subscription-attributes --subscription-arn your-subscription-arn
Remarque : remplacez your-subscription-arn par l’ARN de votre abonnement.
Exemple de sortie :
{
"Attributes": {
"SubscriptionPrincipal": "arn:aws:iam:: 123456789012:role/Admin",
"Owner": "123456789012",
"RawMessageDelivery": "false",
"TopicArn": "arn:aws:sns:us-east-1:123456789012:mytopic",
"Endpoint": "test@testmail.com",
"Protocol": "email",
"PendingConfirmation": "false",
"ConfirmationWasAuthenticated": "true",
"SubscriptionArn": "arn:aws:sns:us-west-2:123456789012:mytopic:8a21d249-4329-4871-acc6-7be709c6ea7f "
}
}
Si la réponse de l’attribut ConfirmationWasAuthenticated est true, la demande d’abonnement a bien été authentifiée.