Control: 3.5 Ensure that 'Public access level' is set to Private for blob containers
Description
Disable anonymous access to blob containers and disallow blob public access on storage account.
Anonymous, public read access to a container and its blobs can be enabled in Azure Blob storage. It grants read-only access to these resources without sharing the account key, and without requiring a shared access signature. It is recommended not to provide anonymous access to blob containers until, and unless, it is strongly desired. A shared access signature token should be used for providing controlled and timed access to blob containers. If no anonymous access is needed on the storage account, it’s recommended to set allowBlobPublicAccess false.
Remediation
From Console
First, follow Microsoft documentation and create shared access signature tokens for your blob containers. Then,
- Login to Azure Storage Accounts
- For each storage account, go to
Containers
under DATA STORAGE - Select the container, click Access policy
- Set Change access level in top bar, to
Private (no anonymous access)
- For each storage account overview page, under
Blob Service
check the value set - Click on selected storage account
Configuration
under settings section of left bar - Set Disabled if no anonymous access is needed on the storage account
- Click Save
From Command Line
Identify the container name from the audit command
Set the permission for public access to private(off) for the above container name, using the below command
az storage container set-permission --name <containerName> --public-access off --account-name <accountName> --account-key <accountKey>
- Set Disabled if no anonymous access is wanted on the storage account
az storage account update --name <storage-account> --resource-group <resource-group> --allow-blob-public-access false
Note: By default, Public access level
is set to Private (no anonymous access)
for blob containers. By default, AllowBlobPublicAccess
is set to Null (allow in effect)
for storage account.
Usage
Run the control in your terminal:
powerpipe control run azure_compliance.control.cis_v140_3_5
Snapshot and share results via Turbot Pipes:
powerpipe loginpowerpipe control run azure_compliance.control.cis_v140_3_5 --share
SQL
This control uses a named query:
storage_account_blob_containers_public_access_private