Implement security for storage accounts
Five controls on one storage account
An account key pasted into a public repository is enough to read every blob in the account, unless one of the other controls on that account refuses the request first. Storage security is not one switch: its settings span five controls, and the useful question in any scenario is which of them is missing.
The five, in the order they apply:
- Transport. Secure transfer required rejects plain HTTP, and the account's minimum TLS version sets the floor for the handshake (Require secure transfer[1]).
- Network admission. The storage firewall decides whether this source may reach the account's public endpoint at all (Azure Storage firewall rules[2]).
- Authorization. Microsoft Entra ID with role-based access control (RBAC), or a signed token, decides whether this caller may perform this operation (Authorize access to data[3]).
- Data protection. Encryption at rest, soft delete, versioning, and immutable storage decide how the bytes are encrypted and how long an earlier state survives (Azure Storage encryption[4]).
- Threat detection. Microsoft Defender for Storage analyzes access telemetry and, with malware scanning turned on, the uploaded content itself (What is Microsoft Defender for Storage[5]).
Transport, network admission, and authorization can each refuse an individual request; data protection and threat detection act on data already written and on the telemetry around it. Network admission and authorization are the two gates that must both pass, and passing one says nothing about the other. That is the sentence to keep: an allowed network is not a permission, and a permission is not a network path. The figure below traces one request through the five and groups the ones that act on stored data rather than on the request.
The terms data plane and control plane appear throughout this page. Data-plane operations read and write the contents of the account, over REST endpoints such as blob.core.windows.net or over SMB for Azure Files. Control-plane operations manage the account resource itself through Azure Resource Manager: creating it, changing its firewall, listing its access keys. The two are governed separately, and mixing them up is the single most productive trap on this objective.
Two of this domain's sibling pages own the surface next door. Implement security for databases owns Azure SQL platform security, auditing, and Defender for Databases; Implement security for Azure network services owns the virtual network machinery itself, network security groups (NSGs), Azure Firewall, and private endpoints. This page owns the storage account: its own firewall, how its data operations are authorized, how deleted data is recovered or made unchangeable, and Defender for Storage.
That seam carries a difference worth stating before it bites. An NSG evaluates its rules in priority order and stops at the first match, so exactly one rule decides the outcome. The storage firewall has no priorities and no deny entries: it has a default action, plus a set of allow entries, and a request is admitted when any entry matches it. When a scenario puts both objects in the same sentence, ask which one is doing the deciding.
If you can name which of the five controls a setting belongs to, you can usually name what it does not do, and that is where most of the exam's distractors live.
Protect data in transit and at rest
Encryption at rest is not something you turn on. Azure Storage encrypts all data written to it with 256-bit AES, always, for blobs, files, queues, and tables, and the encryption cannot be disabled (Azure Storage encryption for data at rest[4]). What you actually configure are two different things: who owns the key, and how many independent layers wrap the data. Those two choices, together with the transport settings, are the first control and the encryption half of the fourth: this section covers what protects the bytes, while recovering or freezing them comes later. In transit, the two settings are equally narrow, and they are separate from each other.
In transit: two settings, two jobs
Secure transfer required makes the account reject requests that arrive over HTTP, so REST calls must use HTTPS (Require secure transfer[1]). The setting is enabled by default on newly created accounts, and for Azure Files it also refuses SMB connections that are not encrypted.
The minimum TLS version is a separate setting that fixes the floor for the handshake rather than deciding whether encryption is used at all (Enforce a minimum TLS version[6]). Set it to TLS 1.2. Azure Storage supports TLS 1.3 and a capable client negotiates it automatically, but 1.2 is the highest value the account's minimum-version setting accepts, so a requirement worded as "enforce TLS 1.3" is not satisfiable through this setting. Raising the floor is the classic wrong answer to "block unencrypted requests", because a client speaking HTTP never reaches a TLS handshake at all.
At rest: who owns the key
By default the account encryption key is Microsoft-managed. A customer-managed key changes ownership, not strength: you store a key in Azure Key Vault or Managed HSM, and Azure Storage uses it to wrap the account encryption key, so revoking or rotating your key controls access to the data (Customer-managed keys for Azure Storage encryption[7]). The key vault must have both soft delete and purge protection enabled, and the storage account reaches the key through a managed identity holding get, wrapKey, and unwrapKey permissions. Disabling the key makes data operations fail with 403 rather than corrupting anything, and you can switch between Microsoft-managed and customer-managed keys at any time.
An encryption scope narrows that choice below account level: it applies its own key, Microsoft-managed or customer-managed, to a container or to individual blobs (Encryption scopes[8]). Use one when a single account holds data belonging to different tenants or classifications that must not share a key.
At rest: how many layers
Infrastructure encryption is the second layer. With it enabled, Azure encrypts the data twice, once at the service level and once at the infrastructure level, with separate keys, so a single compromised key or algorithm implementation does not expose the data (Enable infrastructure encryption[9]). Account-level infrastructure encryption can only be enabled when the account is created, which makes account-wide double encryption a design decision rather than a remediation; in an existing account, infrastructure encryption can instead be enabled for a new encryption scope. A customer-managed key is not a substitute: it changes who holds the service-level key without adding a layer. The figure below shows how the two stack.
For Blob Storage there is a third option worth recognizing even though it is rarer in practice: with customer-provided keys, a client supplies an encryption key on each individual read and write request, and Azure uses it for that operation without storing it (Customer-provided keys[10]).
Taken together: the transit settings decide what a client may speak, key ownership decides who can revoke access, and layer count decides how much independent protection sits under a single key compromise. A scenario that names a compliance requirement for double encryption wants infrastructure encryption; one that names control of rotation wants a customer-managed key.
Restrict the public endpoint with firewall rules
Network rules have no effect until the default action is Deny. Everything else in this section depends on that one line, because an account whose default action is still Allow already permits every source, so adding allow entries changes nothing (Set the default public network access rule[11]). In the portal the equivalent choice is Networking, then public network access: Enabled from all networks, Enabled from selected networks, or Disabled. In the CLI it is --default-action Deny; in PowerShell, -DefaultAction Deny.
Once the default is Deny, four kinds of network rule can let traffic back in (Azure Storage firewall rules and network access[2]):
- A virtual network rule admits a subnet.
- An IP network rule admits a public IPv4 address or range.
- A resource instance rule admits one specific Azure resource that cannot be described by a subnet or an address.
- A trusted-service exception admits trusted Azure services, typically so they can write or read resource logs and metrics.
There are no priorities and no deny entries in that list: a request is admitted when any entry matches it, which is the contrast with the priority-ordered, first-match NSG evaluation described on the sibling network services page. The figure below traces the admission decision end to end.
A virtual network rule is two configurations
Allowing a subnet takes a rule on the storage account and a service endpoint on the subnet, and they live in different resources. A service endpoint is not a private endpoint: it is a property of the subnet that makes this firewall rule work, while a private endpoint is a separate way of reaching the account, covered on the sibling network services page. The endpoint type matters: Microsoft.Storage reaches storage accounts in the same region as the virtual network, while Microsoft.Storage.Global reaches accounts in any region, and a subnet can carry only one of the two (Virtual Network service endpoints[12]). The Azure portal creates the endpoint for you as you select the subnet; PowerShell and the Azure CLI do not, which is why a scripted deployment so often ends with a correct-looking rule and a subnet that still gets 403. An account supports up to 400 virtual network rules.
Enabling a service endpoint has a second-order effect that surprises people. Traffic from that subnet stops using a public source address, so any IP rule that used to admit it no longer applies.
IP rules only speak public IPv4
Each IP network rule admits a public IPv4 range, up to 400 per account, and the usual case is an on-premises network reached through its internet-facing addresses or its ExpressRoute NAT addresses. Two restrictions turn up constantly in scenarios: private RFC 1918 addresses are rejected, and IP rules do not restrict requests from Azure clients in the same region as the storage account (Restrictions for IP network rules[13]). A virtual machine in the account's own region is therefore not something you can select with an IP rule at all; that case wants a virtual network rule or private connectivity.
Resource instance rules and the trusted-service exception
Some Azure resources have no stable address and live in no subnet of yours. A resource instance rule names one such resource, and the role assignments held by that resource decide what it may then do with the data; the resource must be in the same tenant as the storage account, though it may sit in any subscription in that tenant (Create a resource instance network rule[14]).
The trusted-service exception is broader: it admits a documented list of Microsoft services that connect with strong authentication (Trusted Azure services[15]). It is a network path and nothing more. A trusted service still needs a role assignment or a token to read data, and treating the exception as an authorization step is a distractor the exam reuses.
What the firewall does not cover
Firewall rules are enforced on data-plane traffic: REST calls to the blob, file, queue, and table endpoints, and SMB for Azure Files. They do not restrict Azure Resource Manager operations against the account resource, so an administrator can still change the firewall itself, read the access keys, or delete the account from anywhere the control plane accepts them. Those need role assignments, resource locks, and Azure Policy instead.
A private endpoint is the other way to reach the account, and it belongs to the sibling page on Azure network services; the point to carry here is that adding one does not close the public endpoint. Public network access is its own setting, and only Disabled shuts the public door (Use private endpoints for Azure Storage[16]). Even then, resource instance rules and trusted-service exceptions configured before that switch remain in effect, so those resources might still reach the account (Storage network security restrictions[13]). Firewall changes also take up to a minute to take effect after you save them, which is worth knowing before you conclude a rule did not work.
In short: default action first, then the narrowest entry that admits the traffic you actually need, and never mistake either step for a permission.
Authorize data operations with least privilege
Assigning Contributor to a team so they can "get to the data" is the most expensive mistake on this objective, and not for the reason people expect. The role does not authorize a single data operation through Microsoft Entra ID; it authorizes the caller to read the account keys, and from there everything is possible. Data authorization and account management are different scopes, and this section is about keeping them apart.
Data roles, not management roles
To authorize blob, queue, table, or file operations with Entra credentials, assign a Storage data role: Storage Blob Data Reader, Storage Blob Data Contributor, Storage Blob Data Owner, and their queue, table, and file equivalents (Assign an Azure role for access to blob data[17]). Assign it at the narrowest useful scope: a container or a queue, not the whole subscription. Control-plane roles such as Owner, Contributor, and Storage Account Contributor manage the account and can list its keys, but none of them authorizes a data operation through an Entra token (Azure built-in roles for Storage[18]). The portal exposes this directly: when you browse a container you choose whether to authenticate with the account key or with your Entra account, and only the latter uses your data role.
Two account-level switches close the gaps around that model. Setting AllowSharedKeyAccess to false rejects every request authorized with an account key, which includes the service SAS and account SAS tokens signed with it (Prevent Shared Key authorization[19]). Rotating both keys does not achieve this: rotation replaces the credential and leaves the authorization method enabled. Separately, disallowing anonymous public read access on the account stops a container being made publicly readable at all (Configure anonymous read access[20]).
The three shared access signatures
A shared access signature (SAS) is a signed URL that carries its own permissions and expiry, for callers with no identity in your tenant. There are three types, and they differ in what signs them (Grant limited access with shared access signatures[21]). The figure below groups them by that difference, which is also the order of preference:
- A user delegation SAS is signed with a user delegation key that Entra issues to a security principal, so no account key is involved. It is supported for Blob Storage, and Microsoft recommends it wherever delegated blob access can go through Entra authorization (Create a user delegation SAS[22]). Revoking the user delegation key invalidates every SAS signed with it.
- A service SAS is signed with an account key and delegates access to resources in a single storage service. It is the only type that can reference a stored access policy.
- An account SAS is signed with an account key and can delegate access across one or more services, including service-level operations such as reading account properties. It is the broadest and the last resort.
A stored access policy lives on the container, queue, table, or share and defines start time, expiry, and permissions for the service SAS tokens that reference it (Define a stored access policy[23]). That indirection is what makes those tokens revocable: change the policy and every token referencing it changes with it; delete the policy and they all stop working, with no key rotation. Stored access policies are not supported for account SAS or user delegation SAS tokens, so they are not the central-revocation mechanism for a user delegation SAS. The equivalent lever there is revoking the user delegation key.
Two more constraints apply to every SAS regardless of type. A SAS expiration policy on the account can log the use of tokens issued with a longer lifetime than your chosen limit or block requests made with them, depending on the configured action (Configure a SAS expiration policy[24]). And a SAS never widens network access: an IP-restricted SAS narrows the token holder's reach, but it cannot admit a caller the firewall refuses.
Disallow Shared Key and issue a user delegation SAS with the Azure CLI
The first command applies the account-level switch discussed above; the second issues a token for one blob, signed through Entra with --auth-mode login --as-user, which is what makes it a user delegation SAS rather than a service SAS:
# Reject account-key authorization, including service SAS and account SAS
az storage account update \
--name mystorageaccount --resource-group myresourcegroup \
--allow-shared-key-access false
# ...
# Delegated read access to one blob, signed with a user delegation key
az storage blob generate-sas \
--account-name mystorageaccount \
--container-name uploads --name report.pdf \
--permissions r --expiry 2026-08-01T00:00Z \
--auth-mode login --as-user --https-only
The pattern to carry into the exam: prefer an Entra role over any token, prefer a user delegation SAS over any key-signed token, and reach for a service SAS only when the requirement is central revocation through a stored access policy.
Recover deleted data, or prevent the delete
Two families of control answer two different questions, and the wrong one is always on the answer sheet. Recoverability asks "can I get it back after someone deletes it"; immutability asks "can the delete happen at all". Soft delete, versioning, and point-in-time restore belong to the first. Time-based retention policies and legal holds belong to the second.
Getting data back
Blob soft delete retains a deleted or overwritten blob, snapshot, or version for a retention period of 1 to 365 days, after which it is permanently removed (Soft delete for blobs[25]). It does not recover a deleted container: that needs container soft delete, a separate setting with its own retention period (Soft delete for containers[26]).
Blob versioning automatically captures the previous state as a distinct version every time a blob is written or deleted, with no application change (Blob versioning[27]). A snapshot is the manual equivalent, taken deliberately by an application. Versioning protects the history of a changing blob, which is a different guarantee from container soft delete: the first keeps every prior state of an object, the second brings back a container that was removed. Frequently overwritten data makes versioning expensive, which is the practical reason to scope it.
Point-in-time restore rewinds block blob data in one or more containers to a chosen earlier moment. It sits on top of the other two, and its prerequisites are the exam's favorite detail: blob versioning, blob change feed, and blob soft delete must all be enabled, and the restore window must be shorter than the soft-delete retention period (Point-in-time restore for block blobs[28]). The change feed is an ordered, durable log of supported changes to the account's blobs, which is what makes a coherent rewind possible (Change feed support[29]). Geo-redundant replication does none of this: it copies the current state to another region, so a deletion replicates faithfully.
Azure Files has its own recovery pair rather than sharing the blob features: share snapshots are read-only point-in-time copies, and share soft delete recovers a deleted file share within its retention window (Prevent accidental deletion of Azure file shares[30]).
Preventing the delete
Immutable storage for blobs provides write once, read many (WORM) protection through two mechanisms (Immutable storage for Azure Blob Storage[31]). A time-based retention policy protects data for a defined interval: while it is unlocked you can shorten, extend, or delete the policy for testing, and once locked you can only extend the interval, so the data cannot be modified or deleted until the interval expires. A legal hold has no end date; it protects the data until someone with the right permission explicitly clears its tags. Those are the legal hold's own tags, not the blob index tags that carry malware scan results later on this page.
Scope is the second axis. A policy can apply to a whole container, or to individual blob versions, which is finer grained and requires blob versioning to be enabled (Version-level WORM policies[32]).
| Control | Answers | Needs first |
|---|---|---|
| Blob soft delete | Recover a deleted or overwritten blob within 1 to 365 days | Nothing |
| Container soft delete | Recover a deleted container | Nothing |
| Blob versioning | Recover any earlier state of a changing blob | Nothing |
| Point-in-time restore | Rewind containers to a chosen time | Versioning, change feed, soft delete |
| Time-based retention policy | Block modification and deletion until the interval expires | Versioning, for version-level scope |
| Legal hold | Block modification and deletion until the hold is cleared | Versioning, for version-level scope |
Read a scenario for its verb. "Restore", "recover", and "accidental" point at the first family; "cannot be deleted", "regulatory", and "for seven years" point at the second. Both families can be enabled together, and Defender for Storage's built-in malware remediation depends on the first one, as the next sections show.
Defender for Storage: coverage and enablement
Defender for Storage is agentless, and its most useful property is that it sees your storage traffic without you configuring a single log. It continuously analyzes the data-plane and control-plane telemetry of Azure Blob Storage, Azure Files, and Azure Data Lake Storage, so you do not need to enable resource logs or diagnostic settings for its detections to work (What is Microsoft Defender for Storage[5]). A scenario that offers "enable resource logs first" as a prerequisite is offering a distractor.
What the plan includes
The plan has three capabilities, and two of them are configurable features you turn on inside it. Activity monitoring is the always-present layer: it applies Microsoft Threat Intelligence, behavioral models, and machine learning to access patterns and raises alerts for anomalies such as access from a Tor exit node, unusual extraction volumes, or the use of a leaked, overly permissive SAS token.
Malware scanning inspects object content with Microsoft Defender Antivirus and is billed per GB scanned, which is why it has its own cost controls. Sensitive data threat detection[33] adds sensitivity context through sampled content inspection: an agentless engine uses smart sampling to find resources holding sensitive data, integrating Microsoft Purview sensitive information types and classification labels, so an alert on a container of customer records is prioritized above one on a container of build artifacts. It is enabled or disabled at no extra cost, and it is not a malware feature.
Malware scanning is not hash reputation analysis
Two different detections share the word malware, and the exam separates them by depth versus breadth of coverage: the full scan is deeper, the hash check is available more widely. Malware scanning performs a full content scan with Microsoft Defender Antivirus, including hash reputation analysis as part of its method, and it is a paid feature available only on the current Defender for Storage plan. Hash reputation analysis on its own compares the hashes of newly uploaded blobs and files against known malware from Microsoft Defender Threat Intelligence; it is available in all plans, and it does not cover every protocol or operation, with SMB file shares and blobs created through Put Block plus Put Block List among the unsupported cases.
Enablement scope and the override switch
Enable the plan at subscription scope when every current and future storage account should be protected; new accounts in that subscription are then covered automatically. Account-level enablement exists for the cases where a single account needs its own settings or where subscription-level enablement is not possible (Enable Defender for Storage in the Azure portal[34]).
The two scopes meet at one setting. Subscription-level settings are inherited by every storage account in the subscription, and Override Defender for Storage subscription-level settings is what lets one account keep different feature or malware-cap settings, or be excluded from protection entirely (Advanced configurations for malware scanning[35]). Without the override, editing the account's settings is the same as editing everyone's: changing the subscription-wide cap to accommodate one busy account changes the cap inherited by every other account too. Setting an Event Grid custom topic on an account is one of the changes Microsoft explicitly pairs with turning the override on. In short: activity monitoring comes with the plan, malware scanning and sensitive data threat detection are the features you switch on, and the override is what lets one account differ from the subscription.
Malware scan results and automated response
A scan result is only useful if something acts on it, and Defender for Storage offers four places to consume one: a blob index tag on the object, a security alert in Defender for Cloud, an Event Grid event, and a row in a Log Analytics workspace (Set up automated remediation for malware detection[36]). Choosing among them is a question of what has to happen next, not of preference. The figure below follows one upload from commit to response: the destinations that receive every scan result, and the built-in remediation that fires only on a malicious one.
What triggers a scan, and what it costs
On-upload scanning is driven by blob events, not by a schedule: an upload, an overwrite, or a rename raises a BlobCreated or BlobRenamed event and the service reads the blob, scans it in memory, and discards the content immediately (On-upload malware scanning[37]). Incremental writes are the exception worth remembering: Put Block on a block blob and AppendFile in Data Lake Storage Gen2 do not trigger a scan on their own, because the scan happens when the change is committed with Put Block List or FlushWithClose. Enabling the feature also creates an Event Grid system topic in the storage account's resource group, which is how the service listens for those events, and it is separate from the custom topic you may configure for results.
Because billing is per GB scanned, the plan caps monthly volume per storage account. The default limit is 10,000 GB of uploaded data per month per account; when it is reached, scanning stops for the rest of the calendar month with roughly a 20 GB deviation, and the cap resets at midnight UTC at month end. A cap change takes up to an hour to take effect, and in the REST API a capGBPerMonth value of -1 means unlimited scanning. Two alerts warn you at 75 percent of the cap and when scanning stops. Throughput is bounded as well: on-upload scanning processes up to 50 GB per minute per storage account, and sustained upload rates above that can leave blobs unscanned. Exclusion filters, up to 24 values matching blob prefixes, suffixes, or a maximum size, keep predictable traffic such as logs out of the billed volume.
Routing results: Event Grid for action, Log Analytics for the record
An Event Grid custom topic receives every scan result as an event for near-real-time automation, typically consumed by a Function App or a Logic App that deletes, quarantines, or alerts. The topic has three requirements that come up as scenario constraints: it must use the Event Grid schema, it must sit in the same region as the storage account because cross-region delivery is not supported, and it must allow access from public IP addresses, because Defender for Storage cannot deliver to a topic that only accepts private endpoint connections. A Log Analytics workspace answers the other question, retention: every result is stored in a table named StorageMalwareScanningResults for query, audit, and compliance (Advanced configurations for malware scanning[35]). Azure Event Hubs is not one of the destinations, however plausible it sounds.
Each event carries the blob URI, the scan finish time, and a scanResultType of Malicious, No threats found, or Not Scanned, with scanResultDetails naming the malware found or the reason a blob was skipped. Automation keys off scanResultType; nothing else in the payload decides the outcome.
Remediation: built in, or preventive with ABAC
The built-in option is soft delete malicious blobs. When enabled, Defender for Storage soft deletes any blob a scan finds malicious, so it is quarantined but still recoverable for investigation. It is off by default, it can be set at subscription or account level, and if the storage account does not already have blob soft delete enabled, turning this feature on enables it. The retention period defaults to seven days and can be set between 1 and 365 days in the account's own soft-delete settings, and malicious blobs that are soft deleted always carry index tags. Turning blob soft delete off on the account afterwards stops the remediation from working; Defender does not re-enable it and raises an alert instead.
That whole path is reactive: the blob was written, scanned, and then removed. The preventive alternative uses the scan result as an access-control attribute. Attribute-based access control (ABAC) conditions on a role assignment can test the blob index tag that carries the scan result, so applications and users read only blobs whose result is clean, and unscanned or malicious blobs are unreachable rather than merely flagged (ABAC conditions for Blob Storage[38] and the available attributes[39]). Applications can also check the index tag themselves before processing a blob, or subscribe to the Event Grid events and process only the clean results.
One more scanning mode fills the gap on data that is already stored: on-demand scanning scans the existing contents of a storage account when you ask it to, for incident response or for onboarding an account whose history was never inspected (On-demand malware scanning[40]).
The decision to carry: Event Grid when a result must trigger something, Log Analytics when it must be kept, blob index tags plus ABAC when unclean data must never be readable in the first place.
Exam-pattern recognition
SC-500 storage questions are usually a well-formed configuration with exactly one thing missing, and four answers that each fix a different control. Reading the stem for which of the five controls it names is faster than evaluating the options one by one.
Network admission
A stem describing allow rules that "do not work" may be about the default action. Adding virtual-network and IP rules while the default action is still Allow changes nothing; set it to Deny first. When a subnet still receives 403 after a virtual-network rule was added by script, the missing half is the Microsoft.Storage or Microsoft.Storage.Global service endpoint on the subnet. When the client is an Azure virtual machine in the same region as the account, an IP rule is the wrong tool at any address, and a private RFC 1918 address is never a valid IP rule. An NSG rule on an unrelated subnet is a distractor: it never governs who reaches a storage account's public endpoint.
Authorization
"Can manage the account but gets 403 on the data" is Storage Account Contributor or Contributor without a Storage data role. "Delegated access without handing out the account key" is a user delegation SAS, not an account SAS. "Revoke the token through a stored access policy" is a service SAS bound to that policy. A user delegation SAS cannot reference a stored access policy, but it can be centrally revoked by revoking its user delegation key. "Stop account-key authorization" is AllowSharedKeyAccess set to false; rotating both keys leaves the method enabled. Remember that disallowing Shared Key also stops the service SAS and account SAS tokens signed with that key, while a user delegation SAS keeps working.
Encryption
"Block unencrypted requests" is Secure transfer required, not the minimum TLS version. "Enforce TLS 1.3 as the minimum" is not configurable; TLS 1.2 is the floor the setting accepts. "Own the key rotation and revocation" is a customer-managed key in Key Vault or Managed HSM. "Encrypt twice with different keys" is infrastructure encryption. If an existing account needs it account-wide, the honest answer is a new account; for Blob data, a new encryption scope can enable it within the existing account.
Resilience
"Recover a deleted blob" is blob soft delete; "recover a deleted container" is container soft delete; "keep every prior version" is versioning. "Restore to a specific time" is point-in-time restore, and any option that omits versioning, change feed, or soft delete from the prerequisites is wrong. "Must not be deletable for a period" is a time-based retention policy, locked; "until the investigation ends" is a legal hold. Geo-redundancy answers durability, never recovery from a deletion.
Defender for Storage
"Protect all current and future accounts" is subscription-level enablement; "different settings for this one account" is the override switch, and changing the subscription cap instead is the trap. "Near-real-time automated response to every scan result" is an Event Grid custom topic, in the same region and reachable over public IP; "retain every result for audit" is a Log Analytics workspace; Event Hubs is not an option. "Quarantine malicious uploads without building automation" is soft delete malicious blobs. "Only clean blobs may be read" is an ABAC condition on the scan-result index tag. And when a stem stresses that resource logs are not enabled, that is not an obstacle to Defender for Storage detections at all.
Authorization: how a caller proves it may touch storage data
| Property | Microsoft Entra ID (RBAC) | User delegation SAS | Service SAS | Account SAS | Shared Key |
|---|---|---|---|---|---|
| Signed or authorized with | Entra token plus a Storage data role | User delegation key from Entra | Storage account key | Storage account key | Storage account key |
| Reach | Every data operation the role allows | Blob Storage only | Resources in one storage service | One or more services, plus service-level operations | Everything in the account |
| Stored access policy | Not applicable | Not supported | Supported | Not supported | Not applicable |
| Rejected when AllowSharedKeyAccess is false | No | No | Yes | Yes | Yes |
| Revoked by | Removing the role assignment | Revoking the user delegation key | Editing or deleting the stored access policy | Rotating the account key | Rotating the account key |
| Position for delegated access | First choice where the caller has an identity | Preferred SAS type for blobs | Use when a stored access policy is required | Last resort, account-key signed | Disallow where the workload supports it |
Decision tree
Sharp facts the exam loves — give these one last read before exam day.
Cheat sheet
Sharp facts the exam loves — scan these before test day.
- Secure transfer rejects unencrypted storage requests
Enabling Secure transfer required makes Azure Storage REST operations require HTTPS and rejects HTTP requests. The setting is enabled by default for newly created storage accounts.
Trap Setting the minimum TLS version alone, which controls protocol version but does not replace the secure-transfer requirement.
9 questions test this
- You have an Azure subscription that contains a storage account named storage2 in a resource group named RG1. After you enable Secure transfer required on storage2, an internal reporting tool that read
- You have a management group named MG1 that contains three Azure subscriptions holding 60 storage accounts. A compliance scan reports that 14 of those accounts have Secure transfer required disabled. Y
- Your company has an Azure subscription that contains 30 storage accounts inherited through an acquisition. Before you tighten transport security on them, you must establish which client applications a
- You have an Azure subscription that contains a storage account named storage5 hosting an NFS Azure file share named share5, and Require encryption in transit for NFS is enabled on storage5. Linux virt
- You have a management group named MG1 that contains two Azure subscriptions named Sub1 and Sub2, and more subscriptions will be added to MG1 next quarter. A resource group named RG-Legacy in Sub1 hold
- You have a management group named MG1 that contains three Azure subscriptions in which application teams create their own storage accounts. Company policy states that no storage account under MG1 may
- You have an Azure subscription that contains a storage account named storage3 on which Secure transfer required is already enabled. Blob request logs show that a partner application still reaches stor
- Your company provisions storage accounts with an Azure CLI pipeline. One of them, storage4, hosts SMB Azure file shares for a finance application, and its Require encryption in transit for SMB setting
- You have an Azure subscription that contains a storage account named storage6, which currently accepts both HTTP and HTTPS requests because several internal applications have not been migrated yet. Yo
- Azure Storage can enforce TLS 1.2 but not TLS 1.3 as its minimum
Azure Storage supports TLS 1.2 and TLS 1.3, but a storage account can currently enforce only TLS 1.2 as the recommended minimum. Compatible clients can still negotiate TLS 1.3 automatically.
Trap Configuring TLS 1.3 as the account minimum because the service supports TLS 1.3 negotiation.
5 questions test this
- Your company deploys storage accounts from an Azure Pipelines release that uses an Azure Resource Manager template. An audit finds that the accounts created by the pipeline return no value for their m
- You have an Azure subscription that contains a storage account named storage16 in a resource group named RG1. The account receives HTTPS writes from an Azure service in the same subscription and from
- You have an Azure subscription that contains a storage account named storage13. You set the minimum TLS version of storage13 to TLS 1.2, and the account's Configuration page confirms the value. An ext
- You have an Azure subscription that contains a storage account named storage14. The blob containers in storage14 are used by a web application, and a table in the same account is read by an on-premise
- Your company has an Azure subscription that contains a storage account named storage11. After you set the minimum TLS version of storage11 to TLS 1.2, an internal reporting application that runs on a
- Customer-managed storage keys change key control, not the encryption-at-rest baseline
Azure Storage encrypts persisted data at rest by default with Microsoft-managed keys. Configure a customer-managed key in Azure Key Vault or Managed HSM when the organization must control rotation and revocation of the account or encryption-scope key.
Trap Enabling Secure transfer required, which protects requests in transit rather than changing ownership of the at-rest encryption key.
9 questions test this
- You have an Azure subscription that contains a general-purpose v2 storage account named storage10 that was created last year and whose data at rest is protected by a customer-managed key in a key vaul
- You have an Azure subscription in which a deployment pipeline creates storage accounts from an Azure Resource Manager template. A new standard requires that every account be protected by a customer-ma
- You have an Azure subscription that contains a storage account named storage5 whose data at rest is protected by a customer-managed key in a key vault named KV5. A security incident requires that ever
- Your company is a software vendor that hosts a service in an Azure subscription in your own Microsoft Entra tenant. Every customer requires that the storage accounts holding their data be protected by
- You have an Azure subscription that contains a storage account named storage3 whose data at rest is protected by a customer-managed key in a key vault named KV3. A key rotation policy on that key crea
- You have an Azure subscription that contains a storage account named storage6 that is protected by Microsoft-managed keys and holds data for several internal teams. You must create a container named l
- You have an Azure subscription that contains a storage account named storage1 and a key vault named KV1 that was created with default settings and uses the Azure role-based access control permission m
- You have an Azure subscription that contains a general-purpose v2 storage account named storage4 that was created two years ago with default settings. The data at rest in the blob containers and the f
- You have an Azure subscription that contains a storage account named storage2 and a key vault named KV2 that uses the Azure role-based access control permission model and has purge protection enabled.
- Infrastructure encryption adds a second independent encryption layer
Infrastructure encryption causes Azure Storage data to be encrypted twice, once at the service level and again at the infrastructure level with different keys. Use it when policy requires double encryption rather than merely customer ownership of one encryption key.
Trap A customer-managed key by itself, which changes control of the service-level key but does not add the infrastructure-encryption layer.
8 questions test this
- Your company has an Azure subscription that contains a resource group named RG1. You are provisioning a new general-purpose v2 storage account named storage20 in RG1 for regulated blob data that will
- You have an Azure subscription named Sub1 that contains a resource group named RG1. A regulated finance workload requires a new SMB file share named share1 that must run on premium performance storage
- You have an Azure subscription named Sub1 that contains 45 general-purpose v2 storage accounts that different teams created over the past three years. A new control requires the accounts that hold reg
- Your company has an Azure subscription named Sub1 and a key vault named KV7 that has soft delete and purge protection enabled. You must provision a new general-purpose v2 storage account named storage
- You have an Azure subscription that contains a general-purpose v2 storage account named storage24 that holds regulated blob data. An auditor asks for evidence that the data at rest in storage24 is enc
- You have an Azure subscription that contains a general-purpose v2 storage account named storage22 that was created without infrastructure encryption. A container named legal2 uses a default encryption
- Your company deploys every Azure storage account from an Azure Pipelines release that uses an Azure Resource Manager template. A new standard states that all data at rest in storage accounts created f
- You have an Azure subscription that contains a general-purpose v2 storage account named storage21 that was created 18 months ago and holds several blob containers for internal reporting. A new regulat
- Blob soft delete preserves deleted data for a configured retention period
Blob soft delete retains a deleted or overwritten blob so it can be restored during the retention interval. It is a recoverability control, not a write-once retention control.
Trap A time-based immutability policy, which prevents protected versions from being modified or deleted instead of making ordinary deletions recoverable.
8 questions test this
- You have an Azure Storage account named legal1 that contains a container named case772. The container holds documents that your legal department must preserve for pending litigation, and nobody can pr
- You have an Azure subscription that contains a general-purpose v2 storage account named sa1. Blob soft delete is enabled for sa1 with a 14-day retention interval, and blob versioning is enabled. A dev
- You have an Azure Storage account named sa2 that has both blob versioning and blob soft delete enabled. A user deleted a blob named report.pdf and separately deleted two of its previous versions. Duri
- You have an Azure Storage account named files1 that contains an SMB Azure file share named share1. Soft delete for file shares is enabled for files1, and a nightly automated job creates a share snapsh
- You have an Azure subscription that contains a general-purpose v2 storage account named app1data. A line-of-business application overwrites the same set of block blobs many times each day by calling P
- You have an Azure subscription that contains a storage account named prod1. Blob soft delete, container soft delete, and blob versioning are all enabled for prod1 with generous retention intervals. Du
- You have an Azure Storage account named audit1 that contains a container named logs1. An unlocked time-based retention policy at container scope keeps the audit records in logs1 in a WORM state, and y
- Your company has an Azure subscription that contains a storage account named datalake1. The account has the hierarchical namespace feature enabled and is used by an Azure Data Lake Storage workload. A
- Blob versioning preserves earlier object states as separate versions
When blob versioning is enabled, Azure Storage automatically creates and retains previous versions as a blob changes. Versioning protects blob revisions, but container soft delete must be enabled separately to recover a deleted container.
Trap Container soft delete alone, which can recover a removed container but does not retain every prior version of each changing blob.
7 questions test this
- You have an Azure subscription that contains a general-purpose v2 storage account named media5 that has blob versioning enabled. A container named renders holds thousands of previous versions of image
- You have an Azure subscription that contains a general-purpose v2 storage account named claims7 that has blob versioning enabled. A forensic examiner who works for an outside firm must read two specif
- You have an Azure subscription that contains two general-purpose v2 storage accounts named telemetry1 and telemetry2. An object replication policy copies block blobs from telemetry1 to telemetry2, blo
- Your company has two general-purpose v2 storage accounts named ordersprod in the East US region and ordersdr in the West Europe region, and both accounts store block blobs only. A reporting workload i
- You have an Azure subscription that contains a general-purpose v2 storage account named auditlog5 that has blob versioning enabled. An application writes compliance events to append blobs in a contain
- You have an Azure subscription that contains a general-purpose v2 storage account named records1 that has no data protection features turned on. Three containers in records1 hold contract documents th
- You have an Azure subscription that contains a general-purpose v2 storage account named streams3 that has blob versioning enabled. A container named feeds holds a block blob named feed.dat that has se
- Time-based retention and legal holds enforce different immutable-storage conditions
Immutable storage for blobs provides WORM protection through time-based retention policies and legal holds. A locked time-based policy remains enforced until its retention period expires, whereas a legal hold remains until its tags are explicitly cleared.
Trap Blob soft delete, which permits recovery after deletion but does not prevent an authorized deletion from occurring.
7 questions test this
- You have a general-purpose v2 storage account named partnerdrop1 that has the hierarchical namespace feature enabled and SFTP support turned on. External partners upload settlement files as SFTP local
- Your company keeps clinical trial records in a container named trials2 in a general-purpose v2 storage account named research6. trials2 is protected by a locked container-level time-based retention po
- You have a general-purpose v2 storage account named opsdata4 that was created three months ago. Blob versioning, change feed, blob soft delete, and point-in-time restore are all enabled on opsdata4 fo
- You have a general-purpose v2 storage account named legalarch7 that has blob versioning and version-level immutability support enabled. A container named matters holds several million blobs, and a lif
- You have an Azure Data Lake Storage account named lakeaudit3 that has the hierarchical namespace feature enabled. A pipeline writes raw files into a directory of a container named curated and renames
- You have an Azure subscription that contains a general-purpose v2 storage account named records2. A container named claims2019 is protected by a locked container-level time-based retention policy whos
- You have a geo-redundant general-purpose v2 storage account named archive8 whose primary region is East US. A container named ledgers is protected by a locked container-level time-based retention poli
- Point-in-time blob restore depends on versioning, change feed, and soft delete
Point-in-time restore for block blob data requires blob versioning, blob change feed, and blob soft delete to be enabled. Its restore window must be shorter than the soft-delete retention period.
Trap Geo-redundant replication, which provides regional durability but does not rewind a container to a selected earlier time.
8 questions test this
- You have an Azure subscription that contains a standard general-purpose v2 storage account named assets4. Point-in-time restore is enabled for assets4 with a 14-day maximum restore point, and a lifecy
- You have an Azure subscription that contains a standard general-purpose v2 storage account named crm7 that stores block blobs. Blob versioning, the change feed, blob soft delete, container soft delete
- You have an Azure subscription that contains a standard general-purpose v2 storage account named billing3 that stores block blobs only. Blob versioning, the blob change feed, and blob soft delete with
- You have an Azure subscription that contains a standard general-purpose v2 storage account named logs8 that stores block blobs. Point-in-time restore is enabled for logs8 with a 25-day maximum restore
- You have an Azure subscription that contains a standard general-purpose v2 storage account named ingest2 that stores block blobs. Point-in-time restore is enabled for ingest2 with a 14-day maximum res
- You have an Azure subscription that contains a standard general-purpose v2 storage account named reports5 that is configured for read-access geo-redundant storage (RA-GRS). Point-in-time restore is en
- You have an Azure subscription that contains a standard general-purpose v2 storage account named custdata6 that holds eight containers of block blobs. Point-in-time restore is enabled for custdata6 wi
- You have an Azure subscription that contains a standard general-purpose v2 storage account named trading2 that was configured for geo-redundant storage. Blob versioning, the change feed, blob soft del
- Storage allow rules take effect only with a default-deny public endpoint
To restrict a storage account public endpoint to selected networks, set the default network action to Deny and then add the required virtual network, public IPv4, resource-instance, or trusted-service allowances. Merely adding allow entries while the default action is Allow does not create a restrictive firewall boundary.
Trap Creating an NSG rule on an unrelated subnet, which does not change who can reach the storage account public endpoint.
10 questions test this
- Your company has an Azure subscription that contains a storage account named storage1. A colleague configured the networking settings of storage1 by adding a virtual network rule for a subnet named Su
- You have an Azure subscription that contains a storage account named storage6 and an Azure Synapse Analytics workspace named Workspace6. Public network access on storage6 is set to Enabled from select
- You have an Azure subscription that contains a storage account named storage8. Public network access on storage8 was previously set to Enabled from selected networks, with two resource instance rules
- You have an Azure subscription that contains a storage account named storage10. Public network access on storage10 is set to Enabled from selected networks, and one virtual network rule allows an appl
- Your company has an Azure subscription that contains a storage account named storage4. Public network access on storage4 is set to Enabled from selected networks, and a virtual network rule allows one
- Your company deploys every storage account from a Bicep template that sets the publicNetworkAccess property of the account to Disabled. Each account is reachable only through a private endpoint, and t
- You have an Azure subscription that contains a storage account named storage7. Public network access on storage7 is set to Enabled from selected networks, one virtual network rule allows an applicatio
- You have an Azure subscription that contains a storage account named storage3 in the North Europe region and a virtual network named VNet2 in the West Europe region. A subnet in VNet2 named DataSubnet
- You have an Azure subscription that contains a storage account named storage11 in the North Europe region and a virtual network named VNet4 in the West Europe region. Public network access on storage1
- You have an Azure subscription that contains a storage account named storage2 and a virtual network named VNet1 in the same Azure region. VNet1 contains a subnet named AppSubnet that hosts several vir
- A storage virtual-network rule requires the matching service endpoint on the subnet
Allowing a subnet through the Azure Storage firewall requires a virtual-network rule on the account and a Microsoft.Storage or Microsoft.Storage.Global service endpoint on that subnet. The portal can create the endpoint while the rule is added, but command-line deployments must ensure both sides are configured.
Trap Adding only the Microsoft.Storage service endpoint to the subnet, which does not by itself authorize that subnet on the account firewall.
9 questions test this
- You have an Azure subscription that contains a storage account named storage18 and a virtual network named VNet8 in the same Azure region. A subnet named ReportSubnet has an Azure Storage service endp
- You have an Azure subscription that contains a storage account named storage18 and a virtual network named VNet8 in the same Azure region. A subnet named ReportSubnet has an Azure Storage service endp
- You have an Azure subscription that contains a storage account named storage14 that holds research datasets in a blob container. Public network access on storage14 is set to Enabled from selected netw
- You have an Azure subscription that contains a virtual network named VNet7 whose subnet named ScienceSubnet has an Azure Storage service endpoint enabled. Virtual network rules on two corporate storag
- You have an Azure subscription that contains a storage account named storage21 and a virtual network named VNet10 in the same Azure region. A subnet named WebSubnet has an Azure Storage service endpoi
- You have an Azure subscription that contains a storage account named storage13. Public network access on storage13 is set to Enabled from selected networks, and a virtual network rule authorized a sub
- You have an Azure subscription that contains a storage account named storage16 in the West Europe region and a virtual network named VNet6 in the same region. VNet6 contains a subnet named AppSubnet a
- You have an Azure subscription that contains two storage accounts named storage19 and storage20 in the North Europe region. A virtual network named VNet9 contains a subnet named LabSubnet that has an
- You have an Azure subscription that contains a storage account named storage15 and a virtual network named VNet5 in the same Azure region. VNet5 contains a subnet named IngestSubnet whose virtual mach
- Storage IP rules cannot select same-region Azure clients
Azure Storage IP firewall rules accept public IPv4 addresses and do not restrict requests from Azure clients in the same region as the storage account. Use a virtual-network rule or private connectivity when same-region Azure workload access must be selected.
Trap Adding the workload's private RFC 1918 address to an IP rule, because storage IP rules require public internet addresses.
9 questions test this
- Your company has an Azure subscription that contains a storage account named storage23 in the West Europe region. Public network access on storage23 is set to Enabled from selected networks, and the d
- You have an Azure subscription that contains a storage account named storage30 in the West Europe region. Public network access on storage30 is set to Enabled from selected networks, the default actio
- You have an Azure subscription that contains a storage account named storage24 in the North Europe region. Public network access on storage24 is set to Enabled from selected networks, the default acti
- You have an Azure subscription that contains a storage account named storage31 in the Central US region. Public network access on storage31 is set to Enabled from selected networks, and the default ac
- You have an Azure subscription that contains a storage account named storage22 and a virtual machine named VM1, both in the East US region. Public network access on storage22 is set to Enabled from se
- You have an Azure subscription that contains a storage account named storage29 in the North Europe region. A partner organization runs a nightly export job on a server in its own datacenter, and all t
- You have an Azure subscription that contains a storage account named storage27 and an Azure AI Search service named Search1, both in the East US region. Public network access on storage27 is set to En
- You have an Azure subscription that contains a storage account named storage28 in the East US region. Public network access on storage28 is set to Enabled from selected networks, and the default actio
- You have an Azure subscription that contains a storage account named storage25 and a function app named Func2 that runs on an Elastic Premium plan, both in the East US region. Public network access on
- Storage firewall rules govern data-plane operations rather than control-plane management
Azure Storage firewall rules are enforced for data-plane protocols such as REST and SMB, but they do not restrict Azure Resource Manager control-plane operations. Network admission also does not grant data authorization; an allowed caller still needs valid credentials and permissions.
Trap Treating a trusted-service exception as an RBAC assignment, even though the exception permits a network path rather than a data operation.
- Storage management roles do not inherently grant data access through Microsoft Entra ID
To authorize blob, queue, table, or file data operations with Microsoft Entra ID, assign an appropriate Storage data role at the narrowest required scope. A control-plane role such as Contributor can manage the account but does not by itself authorize data access through Microsoft Entra credentials.
Trap Storage Account Contributor, which manages storage accounts but is not a Storage data-plane role.
9 questions test this
- You have an Azure subscription that contains a storage account named storage9. storage9 contains a table named Telemetry, and Shared Key authorization is disallowed on the account. A user named User2
- Your Azure environment contains a management group named MG1 that holds two subscriptions, each with several storage accounts that store analytics data. Shared Key authorization is disallowed on every
- You have an Azure subscription that contains a storage account named storage7 that has the hierarchical namespace feature enabled. A container named lake holds directories and files created by a servi
- You have an Azure subscription that contains a storage account named storage6 and an App Service web API named api1 that brokers blob downloads for partner applications. api1 authenticates by using a
- You have an Azure subscription that contains a storage account named storage3 and an Azure Kubernetes Service cluster that runs an order intake service. The service authenticates to Azure by using a w
- You have an Azure subscription that contains a storage account named storage10 that is configured for Active Directory Domain Services authentication and hosts an SMB file share named archive. Several
- You have an Azure subscription that contains a storage account named storage8 that does not use a hierarchical namespace. storage8 holds hundreds of containers, and the blobs that belong to one projec
- Your company has an Azure subscription that contains a storage account named storage5 configured with Active Directory Domain Services authentication for SMB. storage5 contains a file share named proj
- You have an Azure subscription that contains a storage account named storage2 with a container named reports. A user named User1 is assigned the Storage Blob Data Contributor role scoped to reports. W
- A user delegation SAS avoids signing blob access with the account key
For Blob Storage, a user delegation SAS is secured with Microsoft Entra credentials and a user delegation key. Microsoft recommends it over a service SAS or account SAS when delegated blob access can use Microsoft Entra authorization.
Trap An account SAS, which is signed with a storage account key and can delegate service-level operations across supported services.
8 questions test this
- You have an Azure subscription that contains a storage account named storage14. A support engineer used user delegation SAS links to share blobs in a container named exports, and one of those links wa
- You have an Azure subscription that contains a storage account named storage12 and a web app named app2. app2 generates time-limited download links for the blobs in a container named invoices2 and sen
- You have an Azure subscription that contains a storage account named storage11 with a container named telemetry. Allow storage account key access is set to Disabled on storage11. An external analytics
- Your company has a management group named MG-Data that contains three Azure subscriptions with a combined 40 storage accounts. All application teams have migrated to Microsoft Entra authorization and
- You have an Azure subscription that contains a storage account named storage16 that holds blob data for several internal applications. Your security baseline states that requests to storage16 must be
- You have an Azure subscription that contains a storage account named storage17 that is used by several in-house applications. Before you migrate those applications to Microsoft Entra authorization and
- You have an Azure subscription that contains a storage account named storage15 with a container named reports2. A vendor holds service SAS links for reports2 that reference a stored access policy name
- You have an Azure subscription that contains a storage account named storage19. Partners download blobs through user delegation SAS links that a broker app issues, and developers also sign ad hoc toke
- Stored access policies provide revocable constraints only for service SAS tokens
A stored access policy can define start time, expiry, and permissions for one or more service SAS tokens and allows those constraints to be changed or revoked centrally. Stored access policies are not supported for account SAS or user delegation SAS tokens.
Trap Associating a user delegation SAS with a stored access policy, which that SAS type does not support.
5 questions test this
- You have an Azure subscription that contains a storage account named storage21 with a container named drawings. A build service issues SAS links so that a partner engineering firm can download blobs f
- You have an Azure subscription that contains a storage account named storage22 with a container named payroll. A contractor currently holds an account SAS for storage22 that expires in six months. An
- You have an Azure subscription that contains a storage account named storage29 with a container named feeds. The feeds container already carries five stored access policies, one for each data supplier
- You have an Azure subscription that contains a storage account named storage26 with a container named logs2. A service SAS token that referenced a stored access policy named ops-read on logs2 leaked,
- You have an Azure subscription that contains a storage account named storage27 with a container named catalog. A partner's on-premises automation downloads blobs from catalog by using a service SAS th
Setting AllowSharedKeyAccess to false rejects requests authorized with the storage account keys, including service SAS and account SAS requests. Microsoft Entra authorization and user delegation SAS remain the preferred alternatives for supported Blob Storage operations.
Trap Rotating both account keys, which replaces credentials but continues to permit Shared Key authorization.
6 questions test this
- You have an Azure subscription named Sub1 that contains a storage account named storage30. storage30 holds blob containers that analysts read from managed laptops, and an SMB file share named plant th
- You have an Azure subscription that contains a storage account named storage36. Allow storage account key access is set to Disabled on storage36. An inventory application that runs on a physical Windo
- You have an Azure subscription that contains 30 storage accounts. You disallow Shared Key authorization on 27 of them. The remaining three accounts serve a vendor appliance that accepts only a connect
- You have an Azure subscription named Sub1 that contains a resource group named RG-Data with 12 storage accounts. A governance engineer named Eng1 must be able to set Allow storage account key access t
- You have an Azure subscription that contains a storage account named storage31 that holds several blob containers. Three in-house applications still authorize their requests to storage31 with a connec
- You have an Azure subscription that contains 60 storage accounts. You run an Azure Resource Graph query that projects the allowSharedKeyAccess property of every storage account in the subscription. Th
- Subscription-level Defender for Storage protects existing and future accounts
Enable Defender for Storage at subscription scope when all current and newly created storage accounts should inherit protection. Turn on Override Defender for Storage subscription-level settings on an individual account before giving that account different feature or malware-cap settings.
Trap Changing the subscription-wide malware cap to customize one account, which also changes the inherited setting for every other account.
3 questions test this
- You have an Azure subscription named Sub1 that contains 40 storage accounts, and your application teams deploy several new storage accounts in Sub1 every week. Microsoft Defender for Cloud is already
- You have an Azure subscription named Sub1 in which Defender for Storage is enabled at the subscription level with on-upload malware scanning turned on for every storage account. Sub1 contains a storag
- You have an Azure subscription named Sub1 that contains 25 storage accounts, all protected by Defender for Storage with on-upload malware scanning. Every account uses the default monthly scanning limi
- Event Grid drives immediate malware response while Log Analytics retains scan records
Configure an Event Grid custom topic to deliver every Defender for Storage malware scan result for near-real-time automation. Configure a Log Analytics workspace when every result must instead be retained centrally for query, audit, or compliance.
Trap Azure Event Hubs as the native malware-result automation destination, rather than the documented Event Grid custom topic.
5 questions test this
- You have an Azure subscription that contains a storage account named storage6 with on-upload malware scanning enabled. Your organization's SIEM pipeline already ingests telemetry from an Azure event h
- You have an Azure subscription that contains a storage account named storage4 protected by Defender for Storage with on-upload malware scanning. Compliance requires that every scan result for storage4
- You have an Azure subscription that contains a storage account named storage2 with Defender for Storage and on-upload malware scanning enabled. An external auditor requires evidence that every blob up
- Your company has an Azure subscription that contains a storage account named storage3 with on-upload malware scanning enabled. When malware scanning was enabled, an Event Grid system topic was created
- You have two Azure subscriptions named Sub1 and Sub2 in the same Microsoft Entra tenant. Sub1 contains a storage account named storage8 that has on-upload malware scanning enabled. Sub2 contains your
- The malware scanning cap is monthly and evaluated per storage account
On-upload malware scanning uses a per-storage-account monthly data cap, with 10,000 GB as the default. Set an account override for a different local cap, or use -1 in supported deployment interfaces for unlimited scanning.
Trap A Microsoft Sentinel workspace daily cap, which limits analytics ingestion rather than Defender for Storage scanning volume.
3 questions test this
- You have an Azure subscription named Sub1 that contains a storage account named storage10 used for regulated claim documents. Defender for Storage is enabled on Sub1 with on-upload malware scanning, a
- You have an Azure subscription that contains a storage account named storage13 that Defender for Storage protects with on-upload malware scanning. On-upload scanning halted for storage13 in mid-month
- You have an Azure subscription named Sub1 that contains a storage account named storage11 holding 30 TB of partner documents that were uploaded before Defender for Storage was enabled. Defender for St
- Built-in malware remediation quarantines detected blobs through soft delete
When the optional soft-delete-malicious-blobs setting is enabled, Defender for Storage soft deletes blobs found malicious by on-upload or on-demand scanning and keeps them recoverable for investigation. The feature is off by default and enables blob soft delete if the account did not already have it.
Trap Blob index tags alone, which record scan results but do not remove access to a malicious blob.
3 questions test this
- You have an Azure subscription that contains a storage account named storage15 protected by Defender for Storage with on-upload malware scanning and the soft deletion of malicious blobs turned on. To
- You have an Azure subscription that contains a storage account named storage16 that receives millions of small blobs each day. Defender for Storage with on-upload malware scanning protects storage16,
- You have an Azure subscription that contains a storage account named storage17 with Defender for Storage, on-upload malware scanning, and the soft deletion of malicious blobs enabled. Blob versioning
- Sensitive data threat detection enriches storage alerts without scanning every object
Defender for Storage sensitive data threat detection uses agentless smart sampling and Microsoft Purview sensitive information types and labels to add data-sensitivity context to suspicious activity. It is a configurable feature separate from malware scanning.
Trap On-upload malware scanning, which examines uploaded objects for malware rather than classifying sensitive business data.
2 questions test this
- You have an Azure subscription named Sub1 that contains a general-purpose v2 storage account named storage35 that a claims application uses. Microsoft Defender for Storage protects Sub1, sensitive dat
- You have an Azure subscription named Sub1 that contains 13 storage accounts and has Microsoft Defender for Storage enabled at the subscription level with sensitive data threat detection turned on. Twe
- Defender for Storage activity monitoring does not require resource logs
Defender for Storage continuously analyzes data-plane and control-plane telemetry from protected storage accounts to detect suspicious access patterns and behavior. Resource logs do not need to be enabled for this activity-monitoring protection.
4 questions test this
- You have an Azure subscription named Sub1 that contains a storage account named storage24 that holds customer documents. Microsoft Defender for Storage is enabled on Sub1, but storage24 has no diagnos
- You have an Azure subscription named Sub1 that contains a storage account named storage24 that holds customer documents. Microsoft Defender for Storage is enabled on Sub1, but storage24 has no diagnos
- You have an Azure subscription named Sub1 that contains 25 storage accounts that Microsoft Defender for Storage protects. None of the storage accounts has a diagnostic setting, and the storage securit
- Your company has an Azure subscription named Sub1 in which Microsoft Defender for Storage is enabled at the subscription level. The onboarding runbook of the platform team states that resource logs mu
- Full malware scanning is deeper and narrower in plan availability than hash reputation
Full malware scanning uses Microsoft Defender Antivirus to inspect Blob content and includes hash reputation analysis, but it is a paid feature available only with the new Defender for Storage plan. Hash reputation compares newly uploaded Blob storage and Azure Files object hashes with known malware, is available in all plans, and can miss unsupported operations such as SMB uploads and Put Block with Put Block List.
- ABAC can gate blob access on Defender malware scan-result tags
Apply Microsoft Entra ABAC role-assignment conditions to Defender for Storage malware scan-result blob index tags when users and applications must access only blobs whose scan result is clean. This preventive pattern blocks unscanned or malicious blobs instead of waiting for a later remediation workflow.
5 questions test this
- You have an Azure subscription that contains a storage account named storage26 that is protected by Microsoft Defender for Storage with on-upload malware scanning. To reduce blob indexing charges, a c
- You have an Azure subscription that contains a storage account named storage28 that is protected by Microsoft Defender for Storage, and malware scan results are stored in blob index tags. An applicati
- You have an Azure subscription that contains a storage account named storage29 that is protected by Microsoft Defender for Storage, and malware scan results are stored in blob index tags. You created
- You have an Azure subscription that contains a storage account named storage27. Microsoft Defender for Storage stores malware scan results in blob index tags, and you added a Microsoft Entra ABAC cond
- You have an Azure subscription that contains a general-purpose v2 storage account named storage25 that receives partner uploads. Microsoft Defender for Storage protects storage25 with on-upload malwar
- Defender malware events require a regional, publicly reachable custom topic
Create the Event Grid custom topic for Defender for Storage malware results in the same region as the protected storage account because cross-region delivery is unsupported. The topic must allow public IP access; a private-endpoint-only topic cannot receive Defender for Storage events.
5 questions test this
- You have an Azure subscription that contains a storage account named storage32 and an Event Grid custom topic named topic2, both in the West US 3 region. Microsoft Defender for Storage protects storag
- You have an Azure subscription that contains a storage account named storage33 and an Event Grid custom topic named topic3 that is deployed in the same region as the account. Microsoft Defender for St
- You have an Azure subscription that contains a storage account named storage30 in the North Europe region. Microsoft Defender for Storage protects storage30 with on-upload malware scanning. You must d
- Your company has an Azure subscription that contains nine storage accounts that receive customer uploads: three in East US, three in West Europe, and three in Southeast Asia. Microsoft Defender for St
- You have an Azure subscription that contains a storage account named storage31 in the East US region and an Event Grid custom topic named topic1 in the Central US region. Microsoft Defender for Storag
References
- Require secure transfer in Azure Storage
- Configure Azure Storage firewalls and virtual networks
- Authorize access to blobs using Microsoft Entra ID
- Azure Storage encryption for data at rest
- What is Microsoft Defender for Storage
- Enforce a minimum required version of TLS for a storage account
- Customer-managed keys for Azure Storage encryption
- Encryption scopes for Blob Storage
- Enable infrastructure encryption for double encryption of data
- https://learn.microsoft.com/en-us/azure/storage/blobs/encryption-customer-provided-keys
- Change the default network access rule for a storage account
- Virtual Network service endpoints
- Restrictions for Azure Storage network rules
- https://learn.microsoft.com/en-us/azure/storage/common/storage-network-security-resource-instances
- Grant access to trusted Azure services
- https://learn.microsoft.com/en-us/azure/storage/common/storage-private-endpoints
- Assign an Azure role for access to blob data
- https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles/storage
- Prevent Shared Key authorization for an Azure Storage account
- https://learn.microsoft.com/en-us/azure/storage/blobs/anonymous-read-access-configure
- Grant limited access to Azure Storage resources using shared access signatures
- Create a user delegation SAS
- Define a stored access policy
- https://learn.microsoft.com/en-us/azure/storage/common/sas-expiration-policy
- Soft delete for blobs
- https://learn.microsoft.com/en-us/azure/storage/blobs/soft-delete-container-overview
- https://learn.microsoft.com/en-us/azure/storage/blobs/versioning-overview
- Point-in-time restore for block blobs
- https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blob-change-feed
- https://learn.microsoft.com/en-us/azure/storage/files/storage-files-prevent-file-share-deletion
- Immutable storage for Azure Blob Storage
- https://learn.microsoft.com/en-us/azure/storage/blobs/immutable-version-level-worm-policies
- Sensitive data threat detection in Defender for Storage
- https://learn.microsoft.com/en-us/azure/defender-for-cloud/defender-for-storage-azure-portal-enablement
- Advanced configurations for malware scanning
- https://learn.microsoft.com/en-us/azure/defender-for-cloud/defender-for-storage-configure-malware-scan
- On-upload malware scanning in Defender for Storage
- Authorize access to blobs using Azure ABAC conditions
- https://learn.microsoft.com/en-us/azure/storage/blobs/storage-auth-abac-attributes
- https://learn.microsoft.com/en-us/azure/defender-for-cloud/on-demand-malware-scanning