Join our Newsletter — 33% off our NHI Course
Home FAQ Cyber Security What do teams get wrong about granting read…
Cyber Security

What do teams get wrong about granting read access to Azure storage accounts?

← Back to all FAQ
By NHI Mgmt Group Editorial Team Updated September 23, 2026 Domain: Cyber Security

A common mistake is assuming a role that appears read only cannot alter or abuse data. In practice, if the role includes listKeys in a default shared-key environment, the effective permission can be much broader than expected. Teams also underestimate how storage accounts tied to Function Apps can turn file access into code manipulation and privilege escalation.

Why “read access” on Azure storage is often broader than teams think

The core mistake is treating “read” as a narrow, harmless permission when the access path may include account-level capabilities. In Azure Storage, a role that can read data but also enumerate account keys can effectively step outside the intended boundary. That turns a simple data-read question into a control-design question about whether shared keys, SAS, and downstream services are still in play.

In practice, the important distinction is between object-level read and control-plane or account-level access. If a principal can call listKeys, it may obtain shared keys that unlock far more than the original role description implies. That is why teams should review the exact authorization path, not the marketing name of the role. The same principle shows up in broader identity guidance on excessive privilege and credential sprawl in NHIs, especially where storage access is reused across tools and automation (Ultimate Guide to NHIs, Key Challenges and Risks).

Azure-specific exposure is often amplified by the way storage accounts are consumed. When a storage account backs a Function App or similar service, a seemingly harmless file or blob read path can become a route to configuration tampering, code replacement, or token and secret discovery. That is the point at which “read” stops being a data-access question and becomes an application-integrity issue as well, which is why storage permissions and workload trust boundaries need to be assessed together. Real-world Azure incidents around token and key misuse illustrate how broad the blast radius can become when account-level material is exposed (Microsoft SAS Key Breach, Microsoft Azure Key Breach).

Where the access model breaks down in real deployments

Teams most often get this wrong in three ways. First, they assume Azure RBAC labels are sufficient and do not verify whether the effective path still includes shared-key access. Second, they forget that storage often sits inside a service chain, so the real impact depends on what consumes the files, not just whether the data itself is sensitive. Third, they underweight the value of storage account keys because they are not presented as “privileged access,” even though they can become the highest-value credential in the environment.

A useful mental model is to separate three questions: can the principal read the object, can it enumerate the account material that unlocks broader access, and can that access influence a workload that executes code or handles secrets? If the answer to any of those is yes, the role is no longer a simple read-only control. The exposure is closer to credential access plus application manipulation than to passive viewing. The same pattern is documented in breach analyses involving exposed tokens, credentials, and API keys used as a pivot into broader systems (52 NHI Breaches Analysis, Sisense breach).

For practitioners, the practical takeaway is that storage authorization must be reviewed in context of identity material, not as an isolated ACL exercise. If a storage account is reachable by app registrations, automation, or workload identities, then the access review has to include credential exposure, rotation state, and what downstream services trust that storage path. That is exactly where “read-only” assumptions break under pressure, because the surrounding system may translate read access into write, execute, or impersonation capability.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

OWASP Non-Human Identity Top 10 addresses the attack and risk surface, while NIST SP 800-53 Rev 5, CIS Controls v8 and OWASP ASVS set the governance and control requirements practitioners need to meet.

FrameworkControl / ReferenceRelevance
OWASP Non-Human Identity Top 10NHI-01 — Secrets and Credential ManagementAzure storage keys and SAS can turn read access into broader credential use.
NHI-02 — Privilege and AuthorizationThe issue is excessive effective access, not the label 'read only'.
NHI-05 — Visibility and DiscoveryTeams often miss which principals can list keys or reach trusted storage paths.
Recommendation — Restrict shared-key exposure and rotate any storage credentials that expand read access. Review the effective permissions behind storage roles before approving access. Inventory every identity that can access or enumerate storage account credentials.
NIST SP 800-53 Rev 5AC-6 — Least PrivilegeRead roles that can list keys violate least-privilege intent.
IA-5 — Authenticator ManagementStorage keys and SAS function as authenticators and need lifecycle control.
SC-28 — Protection of Information at RestStorage access can expose or alter data protected at rest.
Recommendation — Limit storage permissions to the minimum actions needed for the workload. Manage storage keys as authenticators with rotation and revocation procedures. Protect stored data so read paths cannot become broader compromise paths.
CIS Controls v86.3 — Access Granting and RevocationEffective access must be reviewed and removed when broader than intended.
6.5 — Account ManagementStorage account and workload credentials need active governance.
3.3 — Data RecoveryIf read access enables tampering, recovery planning becomes relevant to storage data integrity.
Recommendation — Revoke storage access paths that exceed the approved read requirement. Track and govern storage-linked accounts, keys, and service identities continuously. Ensure storage recovery can restore data after unauthorized modification or deletion.
OWASP ASVSV4.0 — Access ControlThe question is about whether a permission model truly restricts access.
Recommendation — Verify that application and storage access controls enforce the intended authorization boundary.

Practitioner Guidance

What to verify: Confirm whether the assigned role can list keys, mint or reuse SAS, or reach data through a service path that is trusted by a Function App or similar runtime. If any of those are true, treat the access as materially stronger than read-only and review the effective blast radius, not the role title.

What good looks like: The storage account is accessed through the narrowest object-level permission that still works, shared-key pathways are avoided where possible, and any workload consuming that storage is assessed for code or secret injection risk. Good control means the account cannot be turned into a credential source or an application-control point.

Common mistake: Teams approve the role after checking only the data path and miss the control-plane capabilities, downstream app dependency, or reuse of the same storage credential across environments. That shortcut is what turns routine access into privilege escalation.

Practitioner takeaway: If storage access can change what a workload runs, what keys it can obtain, or what secrets it can expose, it is not “just read access” anymore; it is an access-design issue that deserves the same scrutiny as privileged authentication.

Deepen Your Knowledge

Sign up to our weekly newsletter — get 33% off our NHI Foundation Level Course

    NHIMG Editorial Note
    Reviewed and updated by the NHIMG editorial team on September 23, 2026.
    NHI Mgmt Group — the #1 independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org