Limit SNS and SQS resource policies so they grant access only to specific accounts, roles or services, not to everyone. Publicly permissive policies can allow unauthorised publishing, subscribing, sending or receiving messages, so review policy statements for wildcard principals, overly broad actions and unintended cross-account exposure.
Why SNS and SQS policies become public by mistake
Amazon SNS and SQS are both resource-policy driven services, so the main failure mode is not the queue or topic itself, but a statement that unintentionally opens it to the world. The practical question is whether a policy grants access to a broad principal, a wildcard action, or a condition set so weak that any account can publish, subscribe, send, or receive.
That is why policy review should focus on the exact statement structure, not just whether the service is “private” by default. A resource policy can still expose a topic or queue even when the surrounding account is otherwise well controlled, especially when teams copy examples, add cross-account access quickly, or leave temporary test permissions in place.
For cloud misconfiguration patterns, it is useful to treat SNS and SQS alongside other exposed cloud resources, because the same pattern appears when public access is granted through policy rather than network exposure. NHIMG’s Cloud Misconfiguration Guide covers the broader guardrails that help prevent this class of mistake.
What to check in the policy before you trust it
The first check is whether the principal is narrowly scoped. For SNS and SQS, that usually means specific AWS accounts, named roles, or specific AWS services, rather than an open principal that can be used by anyone. The second check is whether the allowed actions are limited to the minimum required for the workflow, because broad publish, subscribe, send, receive, or policy-management permissions create very different exposure.
The third check is whether conditions actually constrain access in a meaningful way. A policy that looks restrictive at a glance can still be effectively public if the condition does not anchor the request to the right account, service, source ARN, VPC endpoint, or other trust boundary that the design depends on. This is where teams often miss unintended cross-account exposure.
For authorization design, Authorisation Models Guide is a useful reference for thinking about whether the policy expresses the decision you actually want, while AWS IAM Policies and Roles Guide helps when you need to reason about policy evaluation, explicit deny, and trust boundaries.
A workable review pattern is simple: verify the principal, verify the action, verify the condition, then verify the intended caller. If any of those four are vague, the policy is probably broader than the owner thinks.
How to reduce exposure when you need cross-account messaging
Cross-account SNS and SQS access does not have to be unsafe, but it should be explicit and narrowly scoped. Use the smallest set of principals that can satisfy the workflow, and prefer role-based access over broad account-wide trust when a specific application or integration is the real consumer. Keep the policy readable enough that a reviewer can tell which account, role, or service is being trusted and why.
If you are granting access to AWS services, make the service path explicit and keep the permission tied to the destination topic or queue. If you are granting human or application access, tie it to a named role rather than a general-purpose identity. This reduces the chance that a later change elsewhere in the account unexpectedly inherits access to the queue or topic.
At the broader AWS control plane level, the AWS Security Guide is a useful companion for reviewing account guardrails, while the AWS IAM Policies and Roles Guide remains the best fit when you are deciding whether a resource policy is overbroad or just awkwardly written.
When you cannot eliminate cross-account access, the right goal is bounded trust, not convenience. That means the policy should describe a specific integration path, not a general permission pattern that could be reused by accident.
Risk and Threat Considerations
Publicly permissive SNS and SQS policies can create both accidental exposure and adversarial abuse. An attacker who can publish to a topic may inject fraudulent events, trigger downstream automation, or force consumers to process untrusted data. An attacker who can subscribe or receive from a queue may observe operational content, business events, or data that should have stayed inside the intended trust boundary.
Failure mechanism: A wildcard principal, weak condition, or broad action grants access beyond the intended account or service, so the policy itself becomes the control failure rather than any problem in the application code.
Impact: The result can be message injection, data exposure, workflow manipulation, noisy downstream processing, or lateral abuse through systems that trust queue or topic events.
Standards & Framework Alignment
This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.
CSA Cloud Controls Matrix, NIST SP 800-53 Rev 5 and CIS Controls v8 set the technical controls, while ISO/IEC 27001:2022 defines the regulatory obligations.
| Framework | Control / Reference | Relevance |
|---|---|---|
| CSA Cloud Controls Matrix | IAM — Identity & Access Management | SNS and SQS resource policies are an IAM control problem over who may access cloud resources. |
| Recommendation — Restrict resource policies to named principals and least privilege. | ||
| NIST SP 800-53 Rev 5 | AC-3 — Access Enforcement | Access is enforced directly by the resource policy allowing or denying SNS and SQS actions. |
| AC-6 — Least Privilege | The question is specifically about preventing broad public permissions on messaging resources. | |
| Recommendation — Enforce least-privilege access in the topic or queue policy. Remove wildcard principals and allow only the minimum required actions. | ||
| ISO/IEC 27001:2022 | A.5.15 — Access control | Resource policies are an access control mechanism governing who can use SNS and SQS. |
| Recommendation — Review and approve resource-policy access rules before deployment. | ||
| CIS Controls v8 | CIS-6 — Access Control Management | Preventing public access depends on managing who can publish, subscribe, send, or receive. |
| Recommendation — Inventory and restrict access paths to SNS and SQS resources. | ||
Practitioner Guidance
What to verify: Confirm that every allow statement has a named principal or tightly bounded service principal, and that the permitted actions match the workflow exactly. If a policy can be read as “anyone may publish,” “anyone may subscribe,” or “anyone may receive,” it is not ready for production.
Common mistake: Teams often test with permissive policies first and intend to tighten them later, but those temporary statements are the ones that survive longest. Treat any placeholder wildcard, broad cross-account trust, or blanket service permission as a production defect until it is removed.
Practitioner takeaway: The safest SNS and SQS policy is not the most flexible one, it is the one that makes the intended caller obvious and makes every other caller fail closed.
Related resources from NHI Mgmt Group
- How do you prevent AWS IAM policies allowing unconstrained permissions management or resource exposure?
- How do you prevent privilege escalation through customer-managed IAM policies in AWS?
- How do you restrict access to AWS Secrets Manager secrets with resource policies?
- How do you configure Amazon S3 Block Public Access settings?
Deepen Your Knowledge
Free weekly newsletter
Subscribe to the NHI & AI Identity Journal
The latest on NHI and Agentic AI security – articles, research, breaches, news and events every week.
Bonus 33% off our NHI Course when you subscribe.
Reviewed and updated by the NHIMG editorial team on October 20, 2026.
NHI Mgmt Group — the #1 independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org