Я пытаюсь заблокировать доступ к хранилищу больших двоичных объектов службе приложений. У меня есть следующий код powershell, который получает возможные исходящие ip-адреса от запускаемой мной службы приложений, а затем ограничивает доступ к хранилищу больших двоичных объектов этими ip-адресами:
Write-Host ("Setting blob storage access restrictions")
$appServiceIPAddresses = (Get-AzureRmWebApp -ResourceGroupName $resourceGroupName -name $webSiteName).PossibleOutboundIpAddresses.Split(",")
$currentStorageAccessRules = (Get-AzureRmStorageAccountNetworkRuleSet -ResourceGroupName $resourceGroupName -Name $storageAccountName).IpRules
$currentStorageAccessRules = {$currentStorageAccessRules}.Invoke() # Convert to modifiable list
foreach($ipAddress in $appServiceIPAddresses) {
if (($currentStorageAccessRules | Where-Object { $_.IPAddressOrRange -eq $ipAddress }) -ne $null) {
Write-Host("IP $ipAddress already has access to blob storage $storageAccountName")
} else {
Write-Host("Allowing IP $ipAddress access to blob storage $storageAccountName")
$ipRule = New-Object -TypeName Microsoft.Azure.Commands.Management.Storage.Models.PSIpRule
$ipRule.Action = 'Allow'
$ipRule.IPAddressOrRange = $ipAddress
$currentStorageAccessRules.Add($ipRule)
}
}
Update-AzureRmStorageAccountNetworkRuleSet -ResourceGroupName $resourceGroupName -Name $storageAccountName -IPRule $currentStorageAccessRules -DefaultAction Deny
Write-Host ("Updated blob storage access restrictions")
Это устанавливает все IP-адреса, которые я ожидаю правильно, однако теперь я получаю 403 Forbiden, когда служба приложения пытается получить доступ к хранилищу больших двоичных объектов. Все контейнеры являются частными, поэтому не должно быть URL-доступа к BLOB-объектам. Я просто обращаюсь к ним программно из службы приложений. Кто-нибудь может понять, почему вышеуказанный подход не работает?