You audit it by enumerating IAM users, groups and roles attached to the policy, then checking which workloads assume those roles. Look for direct grants that can be replaced with resource-scoped access, and verify that read-only access is not paired with broader permissions elsewhere. Reassess stale identities and overbroad group membership regularly.
What is actually being audited when you ask who holds the policy?
The first step is to treat the managed policy as an attachment problem, not just a name lookup. You are auditing every identity that can receive that policy, which usually means users, groups and roles, then tracing the effective path from those attachments to the workloads or operators that can act under them. In AWS, the attachment point is where exposure lives.
For IAM policy analysis and role review, use the AWS IAM Policies and Roles Guide to separate direct policy grants from role trust paths, permission boundaries and chained assumptions.
A useful audit also distinguishes direct attachment from inherited access. A user may not hold the policy directly, but still gain the same effective read-only DynamoDB capability through group membership or an assumed role. That is why the audit has to follow IAM relationships end to end, not stop at the policy attachment list.
How do you confirm whether the access is still justified?
Once you know who holds the policy, test whether that access is still needed for each principal. Read-only managed policies are often granted broadly during development or operations and then left in place after the original need disappears. The practical check is whether the principal still has an active business or runtime dependency on DynamoDB read access, and whether that access can be narrowed to specific tables or actions instead of remaining account-wide.
Reviewing who can hold the policy is also an audit trail problem. NHIMG’s Ultimate Guide to NHIs, Regulatory and Audit Perspectives is a useful reference when the policy is attached to roles that support applications, jobs or other non-human workloads, because the control objective is to prove why the access exists, not just that it exists.
Look for two common overreach patterns: direct attachment where a resource-scoped policy would be enough, and group-based sprawl where one membership change silently expands access for many identities. Both cases make later recertification harder because the policy looks benign even when the blast radius is broad.
What should you check around roles, workloads and stale access?
For roles, the key question is not only who is attached today, but what can assume the role and under what conditions. If a workload assumes the role, verify that the trust policy is still appropriate, that the workload is still owned, and that the role is not being reused across unrelated systems. Reuse and stale ownership are common reasons read-only access becomes a hidden dependency.
Cloud workload identity hygiene matters here because the policy may be harmless in isolation but risky when paired with a long-lived or widely reusable role. The Cloud Workload Identity Guide helps frame that review around role assumption, temporary credentials and workload-specific access paths rather than static grants.
If the role is attached to an application or automation path, confirm that the workload still needs DynamoDB visibility at runtime and that the policy is not compensating for poor application design, such as broad inventory queries or debugging access left behind after go-live. Auditing stale identities is especially important because old roles tend to survive long after the systems they were created for.
Risk and Threat Considerations
Broad read-only access is often underestimated because it does not directly change data. In practice, it can still expose sensitive business records, reveal table structure, and support attacker reconnaissance if the attached identity is compromised. The risk increases when the same principal also carries broader permissions elsewhere, because the managed policy then becomes part of a larger privilege set rather than a bounded read-only exception.
Failure mechanism: The policy is attached to too many identities, or to stale roles that are still assumable by active workloads or users, so effective access remains long after the original justification expired.
Impact: Unauthorized readers can discover sensitive data, map application dependencies, and move from seemingly harmless read access to broader operational or lateral abuse if the identity is also trusted elsewhere.
Standards & Framework Alignment
This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.
CIS Controls v8, NIST SP 800-53 Rev 5 and NIST Zero Trust (SP 800-207) set the governance and control requirements practitioners need to meet.
| Framework | Control / Reference | Relevance |
|---|---|---|
| CIS Controls v8 | CIS-5 — Account Management | Auditing policy holders is an account and access inventory task. |
| Recommendation — Inventory all attached principals and remove unnecessary access paths. | ||
| NIST SP 800-53 Rev 5 | AC-6 — Least Privilege | The question is about narrowing broad read access to only what is needed. |
| AC-2 — Account Management | Identifying who holds the policy depends on reviewing users, groups and roles. | |
| AU-6 — Audit Review, Analysis, and Reporting | The audit itself requires review of who has access and why. | |
| Recommendation — Reduce policy scope to the minimum permissions each principal requires. Review account attachments and disable stale or unused principals. Correlate attachment findings with ownership and usage evidence. | ||
| NIST Zero Trust (SP 800-207) | Zero Trust Architecture | The answer emphasizes verifying access paths and minimizing standing privilege. |
| Recommendation — Continuously verify the principal, the workload, and the necessity of access. | ||
Practitioner Guidance
What to verify: Build the audit from the policy outward, then validate the reverse path. Confirm every user, group and role attachment, then confirm which workload or human actually uses each principal and whether the role trust path still matches the current system owner.
Decision rule: If the access can be replaced with a table-scoped or action-scoped policy without breaking the workload, treat the managed policy as overbroad and remove it from the principal. If the identity has no current owner or purpose, treat it as a decommissioning candidate before you accept it as an exception.
Practitioner takeaway: The real control is not counting attachments, it is proving that every attachment still maps to a live, bounded need and that read-only access is not hiding inside stale roles, inherited membership or broader privilege sets.
Related resources from NHI Mgmt Group
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