Check ID:
Provider: Azure
Service:
Severity: MEDIUM
Categories:
Resource type:
storage_ensure_private_endpoints_in_storage_accountsProvider: Azure
Service:
storageSeverity: MEDIUM
Categories:
internet-exposed, trust-boundariesResource type:
microsoft.storage/storageaccountsWhat this check verifies
Azure Storage accounts are evaluated for the presence of Private Endpoint connections. When configured, traffic flows over a VNet private IP via Private Link; when absent, access occurs through the storage account’s public endpoint.Risk
Relying on the public endpoint widens exposure:- Confidentiality: higher risk of key/SAS compromise and unauthorized reads
- Integrity: abused creds enable writes/deletes
- Availability: subject to DDoS and internet scanning It can also bypass egress controls, easing covert data exfiltration.
Recommendation
Prefer Private Endpoints for storage access and minimize public exposure:- Limit or disable
Public network access - Use private DNS so names resolve to private IPs
- Enforce least privilege and defense in depth with segmentation and logging
- Monitor access and rotate keys/SAS as part of routine hygiene.
Remediation
- Terraform
- Native IaC
- Dashboard steps
References
- https://learn.microsoft.com/en-us/azure/storage/common/storage-private-endpoints
- https://learn.microsoft.com/en-us/azure/private-link/tutorial-private-endpoint-storage-portal
- https://learn.microsoft.com/en-us/answers/questions/659055/private-endpoint-to-azure-blob-storage-from-on-pre
- https://learn.microsoft.com/en-us/azure/storage/files/storage-files-networking-endpoints
- https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/StorageAccounts/private-endpoints.html#
Where this check fires
This check runs on every scheduled scan against your Azure account. Findings appear at Cloud Security → Findings filterable byCheck ID = storage_ensure_private_endpoints_in_storage_accounts. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to Azure checks