Back to Checks
huaweicloud

SMN topics have at least one confirmed subscription

smn_topic_subscriptions
Service: smnSeverity: low
OfficialBuilt-inVerified
Categories:logging
Resource Type:HUAWEICLOUD::SMN::Topic

Ensure that SMN notification topics have at least one confirmed subscription so alerts can be delivered to recipients.

Risk

Topics without confirmed subscriptions cannot deliver notifications, meaning critical alerts may go unnoticed by operations and security teams.

Run this check with Prowler

Run in Prowler Cloud
Run
prowler huaweicloud --checks smn_topic_subscriptions

Recommendation

Add and confirm at least one subscription for each SMN topic so notifications can be delivered.

Remediation

CLI

hcloud SMN AddSubscription --topic_urn=<topic_urn> --protocol=<protocol> --endpoint=<endpoint>

Other

1Log on to the Huawei Cloud console.
2Navigate to Simple Message Notification (SMN).
3Select the topic without subscriptions.
4Click Add Subscription.
5Configure the subscription protocol and endpoint.
6Confirm the subscription.

Check Code

from prowler.lib.check.models import Check, CheckReportHuaweiCloud
from prowler.providers.huaweicloud.services.smn.smn_client import smn_client


class smn_topic_subscriptions(Check):
    """Check if SMN topics have at least one subscription configured."""

    def execute(self) -> list[CheckReportHuaweiCloud]:
        findings = []

        for topic in smn_client.topics:
            report = CheckReportHuaweiCloud(
                metadata=self.metadata(),
                resource=topic,
            )
            report.region = topic.region
            report.resource_id = topic.topic_id
            report.resource_name = topic.name
            report.resource_arn = topic.topic_urn

            if topic.confirmed_subscription_count > 0:
                report.status = "PASS"
                report.status_extended = (
                    f"SMN topic '{topic.name}' ({topic.topic_id}) has "
                    f"{topic.confirmed_subscription_count} confirmed subscription(s)."
                )
            else:
                report.status = "FAIL"
                report.status_extended = (
                    f"SMN topic '{topic.name}' ({topic.topic_id}) has no confirmed "
                    "subscriptions. Notifications will not be delivered."
                )

            findings.append(report)

        return findings