Failing to set the AuthenticateOnUnsubscribe flag to True when confirming an SNS subscription causes all unsubscribe requests to succeed, even if they are unauthenticated. Consider setting this flag to True.
1def authenticate_on_subscribe_noncompliant(self, event) -> None:
2 import boto3
3 subscriptions_failed = 0
4 for record in event["Records"]:
5 message = record["body"]
6 if message["Type"] == "SubscriptionConfirmation":
7 try:
8 topic_arn = message["TopicArn"]
9 token = message["Token"]
10 sns_client = boto3.client("sns",
11 region_name=topic_arn.split(":")[3])
12 # Noncompliant: fails to set the 'AuthenticateOnUnsubscribe'
13 # argument to 'True' while confirming an SNS subscription.
14 sns_client.confirm_subscription(TopicArn=topic_arn,
15 Token=token)
16 except Exception:
17 subscriptions_failed += 11def authenticate_on_subscribe_compliant(self, event) -> None:
2 import boto3
3 subscriptions_failed = 0
4 for record in event["Records"]:
5 message = record["body"]
6 if message["Type"] == "SubscriptionConfirmation":
7 try:
8 topic_arn = message["TopicArn"]
9 token = message["Token"]
10 sns_client = boto3.client("sns",
11 region_name=topic_arn.split(":")[3])
12 # Compliant: sets the 'AuthenticateOnUnsubscribe' argument to
13 # 'True' while confirming an SNS subscription.
14 sns_client.confirm_subscription(
15 TopicArn=topic_arn,
16 Token=token,
17 AuthenticateOnUnsubscribe='True')
18 except Exception:
19 subscriptions_failed += 1