我试图锁定对Blob存储对应用程序服务的访问。我有以下powershell代码,该代码从我运行的应用程序服务中获取可能的传出IP地址,然后将对Blob存储的访问限制为这些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地址,但是当应用程序服务尝试访问Blob存储时,我现在得到403 Forbiden。所有容器都是私有的,因此不应该对blob进行url访问,我只是从应用程序服务中以编程方式对其进行访问。谁能看到上述方法为何行不通?
答案 0 :(得分:0)
这很可能是权限问题,具体取决于您用来访问存储帐户的特定身份验证方法,共有三种:SAS,存储密钥和名称以及AAD。您必须确保可以使用Blob存储作为服务进行访问,具体取决于您所使用的存储。我建议选中包含更多信息的documentation。
此外,在防火墙设置中,尝试检查“允许受信任的Microsoft服务访问此存储帐户”,然后重试。
答案 1 :(得分:0)
根据此处的文章:https://docs.microsoft.com/en-us/azure/storage/common/storage-network-security“ IP网络规则对与存储帐户来自同一Azure区域的请求没有影响。使用虚拟网络规则允许相同区域的请求。”因此我上面的规则将被忽略,我需要设置一个虚拟网络来锁定访问权限。希望这对某人有帮助。
有关如何执行此操作的更多信息,请点击此处:https://docs.microsoft.com/en-us/azure/app-service/web-sites-integrate-with-vnet