Site icon STARK ON SECURITY

Inventory Azure Storage Account Public IP Addresses

Azure Storage Accounts have several endpoints associated with them that correspond to each data service type such as Blob, File Shares, Queues and Tables. By default these endpoints are public facing and get a dynamically allocated public IP address from Azure. You may be interested in tracking these IP addresses from an operational, security, or attack surface reduction perspective. However this is more challenging than it appears as the Public IP addresses aren’t associated anywhere within the resource definition of the storage account.

Luckily I developed a simple PowerShell script you can leverage to get an inventory on associated Public IP Addresses. The script is fairly straightforward and performs a DNS lookup on each primary and secondary endpoint associated with the storage account.

You can grab the script from my GitHub repo below:
get-azstorageip4address.ps1

Runing the script is simple, by default it will inventory all subscriptions. You can specify the subscription parameter to only inventory select subscriptions which will take either Subscription Names or Subscription Ids. You can specify multiple subscriptions using a comma separated list.

The script will add several properties to the storage account PowerShell object you can leverage for reporting.

 You can access the resolved ipv4 addresses via the below properties:

PrimaryBlobDNS                               SecondaryBlobDNS
PrimaryBlobIP4Address                        SecondaryBlobIP4Address
PrimaryQueueDNS                              SecondaryQueueDNS
PrimaryQueueIP4Address                       SecondaryQueueIP4Address
PrimaryTableDNS                              SecondaryTableDNS
PrimaryTableIP4Address                       SecondaryTableIP4Address
PrimaryFileDNS                               SecondaryFileDNS
PrimaryFileIP4Address                        SecondaryFileIP4Address
PrimaryWebDNS                                SecondaryWebDNS
PrimaryWebIP4Address                         SecondaryWebIP4Address
PrimaryDfsDNS                                SecondaryDfsDNS
PrimaryDfsIP4Address                         SecondaryDfsIP4Address
PrimaryMicrosoftEndpointsDNS                 SecondaryMicrosoftEndpointsDNS
PrimaryMicrosoftEndpointsIP4Address          SecondaryMicrosoftEndpointsIP4Address
PrimaryInternetEndpointsDNS                  SecondaryInternetEndpointsDNS
PrimaryInternetEndpointsIP4Address           SecondaryInternetEndpointsIP4Address

Aggregated list IPv4 Addresses are stored in:

PrimaryIP4Addresses
SecondaryIP4Addresses

Examples Below

Get Storage Accounts for all subscriptions

$storageAccountReport = .\get-azstorageip4address.ps1

Get Storage Accounts for a single subscription

$storageAccountReport = .\get-azstorageip4address.ps1 -Subscription 'production resources'

Get Storage Accounts for multiple subscriptions

 $storageAccountReport = .\get-azstorageip4address.ps1 -Subscription 'production resources','dev resources'

Search for an IP Address

$ip = '20.150.71.134'
$storageAccountReport | Where-Object {$ip -in $_.PrimaryIP4Addresses -or $ip -in $_.SecondaryIP4Addresses}

Select all endpoint names and IPv4

$storageAccountReport | Select StorageAccountName,SubscriptionName,ResourceGroupName,PrimaryIP4Addresses,SecondaryIP4Addresses,PrimaryBlobDNS,PrimaryBlobIP4Address,PrimaryQueueDNS,PrimaryQueueIP4Address,PrimaryTableDNS,PrimaryTableIP4Address,PrimaryFileDNS,PrimaryFileIP4Address,PrimaryWebDNS,PrimaryWebIP4Address,PrimaryDfsDNS,PrimaryDfsIP4Address,PrimaryMicrosoftEndpointsDNS,PrimaryMicrosoftEndpointsIP4Address,PrimaryInternetEndpointsDNS,PrimaryInternetEndpointsIP4Address,SecondaryBlobDNS,SecondaryBlobIP4Address,SecondaryQueueDNS,SecondaryQueueIP4Address,SecondaryTableDNS,SecondaryTableIP4Address,SecondaryFileDNS,SecondaryFileIP4Address,SecondaryWebDNS,SecondaryWebIP4Address,SecondaryDfsDNS,SecondaryDfsIP4Address,SecondaryMicrosoftEndpointsDNS,SecondaryMicrosoftEndpointsIP4Address,SecondaryInternetEndpointsDNS,SecondaryInternetEndpointsIP4Address

Export to CSV

$storageAccountReport | Select StorageAccountName,SubscriptionName,ResourceGroupName,PrimaryIP4Addresses,SecondaryIP4Addresses,PrimaryBlobDNS,PrimaryBlobIP4Address,PrimaryQueueDNS,PrimaryQueueIP4Address,PrimaryTableDNS,PrimaryTableIP4Address,PrimaryFileDNS,PrimaryFileIP4Address,PrimaryWebDNS,PrimaryWebIP4Address,PrimaryDfsDNS,PrimaryDfsIP4Address,PrimaryMicrosoftEndpointsDNS,PrimaryMicrosoftEndpointsIP4Address,PrimaryInternetEndpointsDNS,PrimaryInternetEndpointsIP4Address,SecondaryBlobDNS,SecondaryBlobIP4Address,SecondaryQueueDNS,SecondaryQueueIP4Address,SecondaryTableDNS,SecondaryTableIP4Address,SecondaryFileDNS,SecondaryFileIP4Address,SecondaryWebDNS,SecondaryWebIP4Address,SecondaryDfsDNS,SecondaryDfsIP4Address,SecondaryMicrosoftEndpointsDNS,SecondaryMicrosoftEndpointsIP4Address,SecondaryInternetEndpointsDNS,SecondaryInternetEndpointsIP4Address | Export-Csv storageaccountreport.csv -NoTypeInformation

Exit mobile version