Skip to content
Calcrivo

Azure Storage Exposure Calculator

Score an Azure storage account's exposure from public network access, anonymous blob access, Shared Key auth, TLS floor and SAS token lifetime.

Inputs

containers
containers
tokens
days
TB

Exposure Index

54.3/ 100

Exposure Level

Medium

Public Container Ratio

7.14%

SAS Token Risk Points

15.8points

Data in the Exposed Path

9.78TB

Dominant Exposure Path

SAS tokens are long-lived and numerous

Recommended Remediation

Disable Shared Key authorisation, move callers to Entra ID, then rotate both account keys

Step by step

  1. Values used

    Storage account public network access = Enabled from selected virtual networks — 10; Allow blob anonymous access = Enabled, every container private — 8; Shared Key (account key) authorisation = Enabled — 12; Minimum TLS version = TLS 1.2 or higher — 0; Containers in the account = 42 containers; Containers with a public access level = 3 containers; Active SAS tokens = 64 tokens; Longest SAS token lifetime = 365 days; Data stored in the account = 18 TB

  2. Azure Storage Exposure

    Exposure index = public network access points + anonymous blob access points + Shared Key points + TLS floor points + min(15, public container ratio × 1.2) + SAS risk points, clamped to 0–100.

  3. SAS token risk

    SAS risk points = min(12, log2(longest SAS lifetime in days) × 1.4) + min(6, active tokens × 0.06).

  4. Exposure Index

    = 54.3 / 100

  5. Exposure Level

    = Medium

  6. Public Container Ratio

    = 7.14

  7. SAS Token Risk Points

    = 15.8 points

  8. Data in the Exposed Path

    = 9.78 TB

  9. Dominant Exposure Path

    = SAS tokens are long-lived and numerous

How it works

The index adds the points carried by each control that decides whether a blob can be read from the internet. Shared Key authorisation is scored separately from network reachability because an account key is a permanent, non-revocable credential that bypasses Entra ID conditional access entirely, and a leaked key plus 'enabled from all networks' is a complete compromise of the account. Azure storage accounts fail differently from S3: the usual leak path is not a public container but a SAS token with a one-year expiry signed by an account key that nobody can rotate without breaking production.

Formulas

Azure Storage Exposure

Exposure index = public network access points + anonymous blob access points + Shared Key points + TLS floor points + min(15, public container ratio × 1.2) + SAS risk points, clamped to 0–100.

publicNetworkAccess
0–25 points for network reachability
sharedKeyAuth
12 points while account-key authorisation is enabled
containerPts
Public containers ÷ all containers × 100 × 1.2, capped at 15

SAS token risk

SAS risk points = min(12, log2(longest SAS lifetime in days) × 1.4) + min(6, active tokens × 0.06).

sasTtlDays
Longest lifetime granted to any live SAS token
sasTokens
Count of SAS tokens currently valid

Frequently Asked Questions

How is Azure Storage Exposure calculated?

Exposure index = public network access points + anonymous blob access points + Shared Key points + TLS floor points + min(15, public container ratio × 1.2) + SAS risk points, clamped to 0–100. The index adds the points carried by each control that decides whether a blob can be read from the internet. Shared Key authorisation is scored separately from network reachability because an account key is a permanent, non-revocable credential that bypasses Entra ID conditional access entirely, and a leaked key plus 'enabled from all networks' is a complete compromise of the account.

Why does Azure Storage Exposure matter?

Azure storage accounts fail differently from S3: the usual leak path is not a public container but a SAS token with a one-year expiry signed by an account key that nobody can rotate without breaking production.

What values do I need to enter?

This calculator takes 9 inputs: Storage account public network access, Allow blob anonymous access, Shared Key (account key) authorisation, Minimum TLS version, Containers in the account, Containers with a public access level, Active SAS tokens, Longest SAS token lifetime, Data stored in the account. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.

Why is Shared Key worse than a SAS token?

Because it cannot be scoped or revoked individually. An account key grants everything in the account, is not covered by conditional access or Entra ID logging, and rotating it invalidates every SAS token derived from it at once — which is exactly why teams put off rotation for years.

What is a user-delegation SAS?

A SAS signed with an Entra ID credential rather than the account key. It inherits the signer's RBAC permissions, appears in Entra sign-in logs, is capped at seven days, and can be revoked by removing the signer's role assignment. It is the only SAS type worth issuing.

You might also need