Az Azure Files két fő végponttípust biztosít az Azure-fájlmegosztások eléréséhez:
- Nyilvános végpontok, amelyek nyilvános IP-címmel rendelkeznek, és a világ bármely pontjáról elérhetők.
- Privát végpontok, amelyek egy virtuális hálózaton belül léteznek, és a virtuális hálózat címteréből származó privát IP-címmel rendelkeznek.
Nyilvános és privát végpontok léteznek az Azure Storage-fiókban. A tárfiókok olyan felügyeleti szerkezetek, amelyek egy megosztott tárolókészletet jelölnek, amelyben több fájlmegosztást, valamint más tárolási erőforrásokat, például blobtárolókat vagy üzenetsorokat helyezhet üzembe.
Ez a cikk azt ismerteti, hogyan konfigurálhatja a tárfiók végpontjait az Azure-fájlmegosztás közvetlen elérésére. A cikk nagy része arra is vonatkozik, hogy az Azure File Sync hogyan működik együtt a tárfiók nyilvános és privát végpontjaival. Az Azure File Sync hálózati szempontjaival kapcsolatos további információkért tekintse meg az Azure File Sync proxy- és tűzfalbeállítások konfigurálását ismertető témakört.
Javasoljuk, hogy az útmutató elolvasása előtt olvassa el az Azure Files hálózatkezelési szempontjait .
A következőre érvényes:
| Fájlmegosztás típusa |
SMB |
NFS |
| Standard szintű fájlmegosztások (GPv2), LRS/ZRS |
|
|
| Standard szintű fájlmegosztások (GPv2), GRS/GZRS |
|
|
| Prémium fájlmegosztások (FileStorage), LRS/ZRS |
|
|
Előfeltételek
Végpontkonfigurációk
A végpontokat úgy konfigurálhatja, hogy korlátozzák a tárfiókhoz való hálózati hozzáférést. A tárfiókok virtuális hálózathoz való hozzáférésének korlátozására két módszer létezik:
Privát végpont létrehozása
Amikor privát végpontot hoz létre a tárfiókhoz, a következő Azure-erőforrások lesznek üzembe helyezve:
-
Privát végpont: A tárfiók privát végpontját képviselő Azure-erőforrás. Ezt úgy tekintheti, mint egy erőforrást, amely egy tárfiókot és egy hálózati adaptert csatlakoztat.
-
Hálózati adapter (NIC): Az a hálózati adapter, amely a megadott virtuális hálózaton/alhálózaton belül privát IP-címet tart fenn. Ez pontosan ugyanaz az erőforrás, amely virtuális gép (VM) üzembe helyezésekor lesz üzembe helyezve, azonban ahelyett, hogy egy virtuális géphez rendelne hozzá, az a privát végpont tulajdonában van.
-
Privát tartománynévrendszer (DNS)-zóna: Ha korábban még nem telepített privát végpontot ehhez a virtuális hálózathoz, a rendszer egy új privát DNS-zónát helyez üzembe a virtuális hálózaton. Létrejön egy DNS A rekord is ebben a DNS-zónában lévő tárfiókhoz. Ha már üzembe helyezett egy privát végpontot ebben a virtuális hálózaton, a tárfiók új A rekordja lesz hozzáadva a meglévő DNS-zónához. A DNS-zóna üzembe helyezése nem kötelező. Azonban erősen ajánlott és kötelező, ha Azure-fájlmegosztásait egy AD-szolgáltatásnévvel vagy a FileREST API használatával csatlakoztatja.
Feljegyzés
Ez a cikk a tárfiók DNS-utótagját használja az Azure nyilvános régióihoz. core.windows.net Ez a megjegyzés olyan Azure Szuverén felhőkre is vonatkozik, mint az Azure US Government felhő és a 21Vianet-felhő által üzemeltetett Microsoft Azure. Csak cserélje le a környezetének megfelelő utótagokat.
Lépjen arra a tárfiókra, amelyhez privát végpontot szeretne létrehozni. A szolgáltatásmenü Biztonság + hálózatkezelés területén válassza a Hálózatkezelés, a Privát végpont kapcsolatai, majd a + Privát végpont lehetőséget egy új privát végpont létrehozásához.
Az elkészítendő varázsló több oldallal rendelkezik.
Az Alapszintű beállítások panelen válassza ki a kívánt előfizetést, erőforráscsoportot, nevet, hálózati adapternevet és régiót a privát végponthoz. Ezek lehetnek tetszőlegesek, nem kell semmilyen módon megegyezniük a tárfiókokkal, bár a privát végpontot ugyanabban a régióban kell létrehoznia, amelyben a privát végpontot létre szeretné hozni. Ezután válassza a Tovább: Erőforrás lehetőséget.
Az Erőforrás panelen válassza ki a cél alerőforráshoz tartozó fájlt. Ezután válassza a Tovább: Virtuális hálózat lehetőséget.
A Virtuális hálózat panelen kiválaszthatja azt a virtuális hálózatot és alhálózatot, amelybe a privát végpontot hozzá szeretné adni. Válassza ki az új privát végpont dinamikus vagy statikus IP-címfoglalását. Ha statikus beállítást választ, meg kell adnia egy nevet és egy magánhálózati IP-címet is. Igény szerint alkalmazásbiztonsági csoportot is megadhat. Ha végzett, válassza a Tovább: DNS lehetőséget.
A DNS panel a privát végpont privát DNS-zónával való integrálására vonatkozó információkat tartalmazza. Győződjön meg arról, hogy az előfizetés és az erőforráscsoport helyes, majd válassza a Tovább: Címkék lehetőséget.
Igény szerint címkéket is alkalmazhat az erőforrások kategorizálásához, például alkalmazhatja a Környezet nevet és a Teszt értéket az összes tesztelési erőforrásra. Szükség esetén adja meg a név-érték párokat, majd válassza a Tovább: Véleményezés + létrehozás lehetőséget.
Válassza a Létrehozás lehetőséget a privát végpont létrehozásához.
Ha privát végpontot szeretne létrehozni a tárfiókhoz, először be kell szereznie egy hivatkozást a tárfiókra és arra a virtuális hálózati alhálózatra, amelyhez hozzá szeretné adni a privát végpontot. Cserélje le <storage-account-resource-group-name>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name>, és <vnet-subnet-name> az alábbiakkal:
$storageAccountResourceGroupName = "<storage-account-resource-group-name>"
$storageAccountName = "<storage-account-name>"
$virtualNetworkResourceGroupName = "<vnet-resource-group-name>"
$virtualNetworkName = "<vnet-name>"
$subnetName = "<vnet-subnet-name>"
# Get storage account reference, and throw error if it doesn't exist
$storageAccount = Get-AzStorageAccount `
-ResourceGroupName $storageAccountResourceGroupName `
-Name $storageAccountName `
-ErrorAction SilentlyContinue
if ($null -eq $storageAccount) {
$errorMessage = "Storage account $storageAccountName not found "
$errorMessage += "in resource group $storageAccountResourceGroupName."
Write-Error -Message $errorMessage -ErrorAction Stop
}
# Get virtual network reference, and throw error if it doesn't exist
$virtualNetwork = Get-AzVirtualNetwork `
-ResourceGroupName $virtualNetworkResourceGroupName `
-Name $virtualNetworkName `
-ErrorAction SilentlyContinue
if ($null -eq $virtualNetwork) {
$errorMessage = "Virtual network $virtualNetworkName not found "
$errorMessage += "in resource group $virtualNetworkResourceGroupName."
Write-Error -Message $errorMessage -ErrorAction Stop
}
# Get reference to virtual network subnet, and throw error if it doesn't exist
$subnet = $virtualNetwork | `
Select-Object -ExpandProperty Subnets | `
Where-Object { $_.Name -eq $subnetName }
if ($null -eq $subnet) {
Write-Error `
-Message "Subnet $subnetName not found in virtual network $virtualNetworkName." `
-ErrorAction Stop
}
Privát végpont létrehozásához létre kell hoznia egy privát kapcsolati szolgáltatáskapcsolatot a tárfiókhoz. A privát kapcsolat szolgáltatáskapcsolat a privát végpont létrehozásának bemenete.
# Disable private endpoint network policies
$subnet.PrivateEndpointNetworkPolicies = "Disabled"
$virtualNetwork = $virtualNetwork | `
Set-AzVirtualNetwork -ErrorAction Stop
# Create a private link service connection to the storage account.
$privateEndpointConnection = New-AzPrivateLinkServiceConnection `
-Name "$storageAccountName-Connection" `
-PrivateLinkServiceId $storageAccount.Id `
-GroupId "file" `
-ErrorAction Stop
# Create a new private endpoint.
$privateEndpoint = New-AzPrivateEndpoint `
-ResourceGroupName $storageAccountResourceGroupName `
-Name "$storageAccountName-PrivateEndpoint" `
-Location $virtualNetwork.Location `
-Subnet $subnet `
-PrivateLinkServiceConnection $privateEndpointConnection `
-ErrorAction Stop
Az Azure-beli privát DNS-zóna létrehozása lehetővé teszi a tárfiók eredeti nevét, például storageaccount.file.core.windows.net feloldható a virtuális hálózaton belüli privát IP-címre. Bár a privát végpontok létrehozása szempontjából nem kötelező, kifejezetten szükséges az Azure-fájlmegosztás közvetlen csatlakoztatásához egy AD-felhasználónév használatával, vagy a REST API-val való hozzáféréshez.
# Get the desired storage account suffix (core.windows.net for public cloud).
# This is done like this so this script will seamlessly work for non-public Azure.
$storageAccountSuffix = Get-AzContext | `
Select-Object -ExpandProperty Environment | `
Select-Object -ExpandProperty StorageEndpointSuffix
# For public cloud, this will generate the following DNS suffix:
# privatelink.file.core.windows.net.
$dnsZoneName = "privatelink.file.$storageAccountSuffix"
# Find a DNS zone matching desired name attached to this virtual network.
$dnsZone = Get-AzPrivateDnsZone | `
Where-Object { $_.Name -eq $dnsZoneName } | `
Where-Object {
$privateDnsLink = Get-AzPrivateDnsVirtualNetworkLink `
-ResourceGroupName $_.ResourceGroupName `
-ZoneName $_.Name `
-ErrorAction SilentlyContinue
$privateDnsLink.VirtualNetworkId -eq $virtualNetwork.Id
}
if ($null -eq $dnsZone) {
# No matching DNS zone attached to virtual network, so create new one.
$dnsZone = New-AzPrivateDnsZone `
-ResourceGroupName $virtualNetworkResourceGroupName `
-Name $dnsZoneName `
-ErrorAction Stop
$privateDnsLink = New-AzPrivateDnsVirtualNetworkLink `
-ResourceGroupName $virtualNetworkResourceGroupName `
-ZoneName $dnsZoneName `
-Name "$virtualNetworkName-DnsLink" `
-VirtualNetworkId $virtualNetwork.Id `
-ErrorAction Stop
}
Most, hogy már rendelkezik a privát DNS-zónára mutató hivatkozással, létre kell hoznia egy A rekordot a tárfiókhoz.
$privateEndpointIP = $privateEndpoint | `
Select-Object -ExpandProperty NetworkInterfaces | `
Select-Object @{
Name = "NetworkInterfaces";
Expression = { Get-AzNetworkInterface -ResourceId $_.Id }
} | `
Select-Object -ExpandProperty NetworkInterfaces | `
Select-Object -ExpandProperty IpConfigurations | `
Select-Object -ExpandProperty PrivateIpAddress
$privateDnsRecordConfig = New-AzPrivateDnsRecordConfig `
-IPv4Address $privateEndpointIP
New-AzPrivateDnsRecordSet `
-ResourceGroupName $virtualNetworkResourceGroupName `
-Name $storageAccountName `
-RecordType A `
-ZoneName $dnsZoneName `
-Ttl 600 `
-PrivateDnsRecords $privateDnsRecordConfig `
-ErrorAction Stop | `
Out-Null
Ha privát végpontot szeretne létrehozni a tárfiókhoz, először be kell szereznie egy hivatkozást a tárfiókra és arra a virtuális hálózati alhálózatra, amelyhez hozzá szeretné adni a privát végpontot. Cserélje le <storage-account-resource-group-name>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name>, és <vnet-subnet-name> az alábbiakkal:
storageAccountResourceGroupName="<storage-account-resource-group-name>"
storageAccountName="<storage-account-name>"
virtualNetworkResourceGroupName="<vnet-resource-group-name>"
virtualNetworkName="<vnet-name>"
subnetName="<vnet-subnet-name>"
# Get storage account ID
storageAccount=$(az storage account show \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--query "id" | \
tr -d '"')
# Get virtual network ID
virtualNetwork=$(az network vnet show \
--resource-group $virtualNetworkResourceGroupName \
--name $virtualNetworkName \
--query "id" | \
tr -d '"')
# Get subnet ID
subnet=$(az network vnet subnet show \
--resource-group $virtualNetworkResourceGroupName \
--vnet-name $virtualNetworkName \
--name $subnetName \
--query "id" | \
tr -d '"')
Privát végpont létrehozásához először meg kell győződnie arról, hogy az alhálózat privát végpontjának hálózati házirendje le van tiltva. Ezután létrehozhat egy privát végpontot a az network private-endpoint create paranccsal.
# Disable private endpoint network policies
az network vnet subnet update \
--ids $subnet \
--disable-private-endpoint-network-policies \
--output none
# Get virtual network location
region=$(az network vnet show \
--ids $virtualNetwork \
--query "location" | \
tr -d '"')
# Create a private endpoint
privateEndpoint=$(az network private-endpoint create \
--resource-group $storageAccountResourceGroupName \
--name "$storageAccountName-PrivateEndpoint" \
--location $region \
--subnet $subnet \
--private-connection-resource-id $storageAccount \
--group-id "file" \
--connection-name "$storageAccountName-Connection" \
--query "id" | \
tr -d '"')
Az Azure-beli privát DNS-zóna létrehozása lehetővé teszi a tárfiók eredeti nevét, például storageaccount.file.core.windows.net feloldható a virtuális hálózaton belüli privát IP-címre. Bár a privát végpont létrehozása szempontjából nem kötelező, kifejezetten szükséges az Azure-fájlmegosztás csatlakoztatása egy AD-felhasználónévvel vagy a REST API-val való hozzáféréshez.
# Get the desired storage account suffix (core.windows.net for public cloud).
# This is done like this so this script will seamlessly work for non-public Azure.
storageAccountSuffix=$(az cloud show \
--query "suffixes.storageEndpoint" | \
tr -d '"')
# For public cloud, this will generate the following DNS suffix:
# privatelink.file.core.windows.net.
dnsZoneName="privatelink.file.$storageAccountSuffix"
# Find a DNS zone matching desired name attached to this virtual network.
possibleDnsZones=""
possibleDnsZones=$(az network private-dns zone list \
--query "[?name == '$dnsZoneName'].id" \
--output tsv)
dnsZone=""
possibleDnsZone=""
for possibleDnsZone in $possibleDnsZones
do
possibleResourceGroupName=$(az resource show \
--ids $possibleDnsZone \
--query "resourceGroup" | \
tr -d '"')
link=$(az network private-dns link vnet list \
--resource-group $possibleResourceGroupName \
--zone-name $dnsZoneName \
--query "[?virtualNetwork.id == '$virtualNetwork'].id" \
--output tsv)
if [ -z $link ]
then
echo "1" > /dev/null
else
dnsZoneResourceGroup=$possibleResourceGroupName
dnsZone=$possibleDnsZone
break
fi
done
if [ -z $dnsZone ]
then
# No matching DNS zone attached to virtual network, so create a new one
dnsZone=$(az network private-dns zone create \
--resource-group $virtualNetworkResourceGroupName \
--name $dnsZoneName \
--query "id" | \
tr -d '"')
az network private-dns link vnet create \
--resource-group $virtualNetworkResourceGroupName \
--zone-name $dnsZoneName \
--name "$virtualNetworkName-DnsLink" \
--virtual-network $virtualNetwork \
--registration-enabled false \
--output none
dnsZoneResourceGroup=$virtualNetworkResourceGroupName
fi
Most, hogy már rendelkezik a privát DNS-zónára mutató hivatkozással, létre kell hoznia egy A rekordot a tárfiókhoz.
privateEndpointNIC=$(az network private-endpoint show \
--ids $privateEndpoint \
--query "networkInterfaces[0].id" | \
tr -d '"')
privateEndpointIP=$(az network nic show \
--ids $privateEndpointNIC \
--query "ipConfigurations[0].privateIPAddress" | \
tr -d '"')
az network private-dns record-set a create \
--resource-group $dnsZoneResourceGroup \
--zone-name $dnsZoneName \
--name $storageAccountName \
--output none
az network private-dns record-set a add-record \
--resource-group $dnsZoneResourceGroup \
--zone-name $dnsZoneName \
--record-set-name $storageAccountName \
--ipv4-address $privateEndpointIP \
--output none
Kapcsolat ellenőrzése
Ha virtuális géppel rendelkezik a virtuális hálózaton belül, vagy konfigurálta a DNS-továbbítást az Azure Files DNS-továbbításának konfigurálása című cikkben leírtak szerint, tesztelheti, hogy a privát végpont megfelelően van-e beállítva. Futtassa a következő parancsokat a PowerShellből, a parancssorból vagy a terminálból (Windows, Linux vagy macOS rendszeren működik). A megfelelő tárfiók nevére kell cserélnie <storage-account-name> :
nslookup <storage-account-name>.file.core.windows.net
Ha sikeres, a következő kimenetnek kell megjelennie, ahol 192.168.0.5 a virtuális hálózat magánvégpontjának privát IP-címe látható (a kimenet Windows esetén látható):
Server: UnKnown
Address: 10.2.4.4
Non-authoritative answer:
Name: storageaccount.privatelink.file.core.windows.net
Address: 192.168.0.5
Aliases: storageaccount.file.core.windows.net
Ha virtuális gépe van a virtuális hálózatán belül, vagy a DNS-továbbítást az Azure Files DNS-továbbításának konfigurálása szerint állította be, az alábbi parancsok futtatásával tesztelheti, hogy a privát végpont megfelelően van-e beállítva.
$storageAccountHostName = [System.Uri]::new($storageAccount.PrimaryEndpoints.file) | `
Select-Object -ExpandProperty Host
Resolve-DnsName -Name $storageAccountHostName
Ha sikeres, a következő kimenetnek kell megjelennie, ahol 192.168.0.5 a virtuális hálózat privát végpontjának privát IP-címe található:
Name Type TTL Section NameHost
---- ---- --- ------- --------
storageaccount.file.core.windows CNAME 60 Answer storageaccount.privatelink.file.core.windows.net
.net
Name : storageaccount.privatelink.file.core.windows.net
QueryType : A
TTL : 600
Section : Answer
IP4Address : 192.168.0.5
Ha virtuális gépe van a virtuális hálózatán belül, vagy a DNS-továbbítást az Azure Files DNS-továbbításának konfigurálása szerint állította be, az alábbi parancsok futtatásával tesztelheti, hogy a privát végpont megfelelően van-e beállítva.
httpEndpoint=$(az storage account show \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--query "primaryEndpoints.file" | \
tr -d '"')
hostName=$(echo $httpEndpoint | cut -c7-$(expr length $httpEndpoint) | tr -d "/")
nslookup $hostName
Ha minden sikeres, a következő kimenetnek kell megjelennie, ahol 192.168.0.5 a virtuális hálózat privát végpontjának privát IP-címe található. Az storageaccount.file.core.windows.net elérési út helyett továbbra is a privatelink-t kell használnia a fájlmegosztás csatlakoztatására.
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
storageaccount.file.core.windows.net canonical name = storageaccount.privatelink.file.core.windows.net.
Name: storageaccount.privatelink.file.core.windows.net
Address: 192.168.0.5
Nyilvános végpont hozzáférésének korlátozása
A nyilvános végpont hozzáférésének korlátozásához először le kell tiltania a nyilvános végponthoz való általános hozzáférést. A nyilvános végponthoz való hozzáférés letiltása nem befolyásolja a privát végpontokat. A nyilvános végpont letiltása után kiválaszthatja azokat a hálózatokat vagy IP-címeket, amelyek továbbra is hozzáférhetnek. A tárfiókok legtöbb tűzfalszabályzata általában egy vagy több virtuális hálózat hálózati hozzáférését korlátozza.
A nyilvános végponthoz való hozzáférés letiltása
Ha a nyilvános végponthoz való hozzáférés le van tiltva, a tárfiók továbbra is elérhető a privát végpontokon keresztül. Ellenkező esetben a tárfiók nyilvános végpontjára irányuló érvényes kérelmeket a rendszer elutasítja, kivéve, ha kifejezetten engedélyezett forrásból származnak.
Lépjen arra a tárfiókra, amelyhez korlátozni szeretné a nyilvános végponthoz való hozzáférést. A tárfiók tartalomjegyzékében válassza a Hálózatkezelés lehetőséget.
A lap tetején válassza az Engedélyezve lehetőséget a kijelölt virtuális hálózatok és IP-címek választógombja közül. Ez feloldja a nyilvános végpont korlátozásának szabályozására szolgáló számos beállítást. Válassza a Megbízható szolgáltatások listájában szereplő Azure-szolgáltatások hozzáférésének engedélyezése a tárfiókhoz, hogy a megbízható, első féltől származó Microsoft-szolgáltatások, például az Azure File Sync hozzáférjen a tárfiókhoz.
Az alábbi PowerShell-parancs megtagadja a tárfiók nyilvános végpontjára történő összes forgalmat. Vegye figyelembe, hogy ennek a parancsnak a -Bypass paramétere AzureServices értékre van állítva. Ez lehetővé teszi, hogy a megbízható, első féltől származó szolgáltatások, például az Azure File Sync hozzáférjenek a tárfiókhoz a nyilvános végponton keresztül.
# This assumes $storageAccount is still defined from the beginning of this of this guide.
$storageAccount | Update-AzStorageAccountNetworkRuleSet `
-DefaultAction Deny `
-Bypass AzureServices `
-WarningAction SilentlyContinue `
-ErrorAction Stop | `
Out-Null
Az alábbi CLI-parancs megtagadja a tárfiók nyilvános végpontjára történő összes forgalmat. Vegye figyelembe, hogy ennek a parancsnak a -bypass paramétere AzureServices értékre van állítva. Ez lehetővé teszi, hogy a megbízható, első féltől származó szolgáltatások, például az Azure File Sync hozzáférjenek a tárfiókhoz a nyilvános végponton keresztül.
# This assumes $storageAccountResourceGroupName and $storageAccountName
# are still defined from the beginning of this guide.
az storage account update \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--bypass "AzureServices" \
--default-action "Deny" \
--output none
Nyilvános végpont hozzáférésének korlátozása adott virtuális hálózatokhoz
Ha a tárfiókot meghatározott virtuális hálózatokra korlátozza, engedélyezi a nyilvános végpontra irányuló kéréseket a megadott virtuális hálózatokon belülről. Ez a virtuális hálózat szolgáltatásvégpontoknak nevezett képességével működik. Ez privát végpontokkal vagy anélkül is használható.
Keresse meg azt a tárfiókot, amelyhez a nyilvános végpontot adott virtuális hálózatokra szeretné korlátozni. A tárfiók tartalomjegyzékében válassza a Hálózatkezelés lehetőséget.
A lap tetején válassza az Engedélyezve lehetőséget a kijelölt virtuális hálózatok és IP-címek választógombja közül. Ez feloldja a nyilvános végpont korlátozásának szabályozására szolgáló számos beállítást. A +Meglévő virtuális hálózat hozzáadása lehetőséget választva válassza ki azt a virtuális hálózatot, amely számára engedélyezni kell a tárfiók nyilvános végponton keresztüli elérését. Válasszon ki egy virtuális hálózatot és egy alhálózatot a virtuális hálózathoz, majd válassza az Engedélyezés lehetőséget.
Válassza a Megbízható szolgáltatások listájában szereplő Azure-szolgáltatások hozzáférésének engedélyezése a tárfiókhoz, hogy a megbízható, első féltől származó Microsoft-szolgáltatások, például az Azure File Sync hozzáférjen a tárfiókhoz.
Ahhoz, hogy a tárfiók nyilvános végpontjához korlátozni tudjuk a hozzáférést konkrét virtuális hálózatokra szolgáltatásvégpontok használatával, először adatokat kell gyűjtenünk a tárfiókról és a virtuális hálózatról. Töltse ki <storage-account-resource-group>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name>, és <subnet-name> a fenti információk összegyűjtéséhez.
$storageAccountResourceGroupName = "<storage-account-resource-group>"
$storageAccountName = "<storage-account-name>"
$restrictToVirtualNetworkResourceGroupName = "<vnet-resource-group-name>"
$restrictToVirtualNetworkName = "<vnet-name>"
$subnetName = "<subnet-name>"
$storageAccount = Get-AzStorageAccount `
-ResourceGroupName $storageAccountResourceGroupName `
-Name $storageAccountName `
-ErrorAction Stop
$virtualNetwork = Get-AzVirtualNetwork `
-ResourceGroupName $restrictToVirtualNetworkResourceGroupName `
-Name $restrictToVirtualNetworkName `
-ErrorAction Stop
$subnet = $virtualNetwork | `
Select-Object -ExpandProperty Subnets | `
Where-Object { $_.Name -eq $subnetName }
if ($null -eq $subnet) {
Write-Error `
-Message "Subnet $subnetName not found in virtual network $restrictToVirtualNetworkName." `
-ErrorAction Stop
}
Ahhoz, hogy a virtuális hálózatról érkező forgalmat az Azure network fabric a tárfiók nyilvános végpontjához érje, a virtuális hálózat alhálózatának közzé kell tennie a Microsoft.Storage szolgáltatásvégpontot. Az alábbi PowerShell-parancsok hozzáadják a Microsoft.Storage szolgáltatásvégpontot az alhálózathoz, ha még nincs ott.
$serviceEndpoints = $subnet | `
Select-Object -ExpandProperty ServiceEndpoints | `
Select-Object -ExpandProperty Service
if ($serviceEndpoints -notcontains "Microsoft.Storage") {
if ($null -eq $serviceEndpoints) {
$serviceEndpoints = @("Microsoft.Storage")
} elseif ($serviceEndpoints -is [string]) {
$serviceEndpoints = @($serviceEndpoints, "Microsoft.Storage")
} else {
$serviceEndpoints += "Microsoft.Storage"
}
$virtualNetwork = $virtualNetwork | Set-AzVirtualNetworkSubnetConfig `
-Name $subnetName `
-AddressPrefix $subnet.AddressPrefix `
-ServiceEndpoint $serviceEndpoints `
-WarningAction SilentlyContinue `
-ErrorAction Stop | `
Set-AzVirtualNetwork `
-ErrorAction Stop
}
A tárfiók felé irányuló forgalom korlátozásának utolsó lépése egy hálózati szabály létrehozása és a tárfiók hálózati szabálykészletének hozzáadása.
$networkRule = $storageAccount | Add-AzStorageAccountNetworkRule `
-VirtualNetworkResourceId $subnet.Id `
-ErrorAction Stop
$storageAccount | Update-AzStorageAccountNetworkRuleSet `
-DefaultAction Deny `
-Bypass AzureServices `
-VirtualNetworkRule $networkRule `
-WarningAction SilentlyContinue `
-ErrorAction Stop | `
Out-Null
Ahhoz, hogy a tárfiók nyilvános végpontjához korlátozni tudjuk a hozzáférést konkrét virtuális hálózatokra szolgáltatásvégpontok használatával, először adatokat kell gyűjtenünk a tárfiókról és a virtuális hálózatról. Töltse ki <storage-account-resource-group>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name>, és <subnet-name> a fenti információk összegyűjtéséhez.
storageAccountResourceGroupName="<storage-account-resource-group>"
storageAccountName="<storage-account-name>"
restrictToVirtualNetworkResourceGroupName="<vnet-resource-group-name>"
restrictToVirtualNetworkName="<vnet-name>"
subnetName="<subnet-name>"
storageAccount=$(az storage account show \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--query "id" | \
tr -d '"')
virtualNetwork=$(az network vnet show \
--resource-group $restrictToVirtualNetworkResourceGroupName \
--name $restrictToVirtualNetworkName \
--query "id" | \
tr -d '"')
subnet=$(az network vnet subnet show \
--resource-group $restrictToVirtualNetworkResourceGroupName \
--vnet-name $restrictToVirtualNetworkName \
--name $subnetName \
--query "id" | \
tr -d '"')
Ahhoz, hogy a virtuális hálózatról érkező forgalmat az Azure network fabric a tárfiók nyilvános végpontjához érje, a virtuális hálózat alhálózatának közzé kell tennie a Microsoft.Storage szolgáltatásvégpontot. Az alábbi CLI-parancsok hozzáadják a Microsoft.Storage szolgáltatásvégpontot az alhálózathoz, ha még nincs ott.
serviceEndpoints=$(az network vnet subnet show \
--resource-group $restrictToVirtualNetworkResourceGroupName \
--vnet-name $restrictToVirtualNetworkName \
--name $subnetName \
--query "serviceEndpoints[].service" \
--output tsv)
foundStorageServiceEndpoint=false
for serviceEndpoint in $serviceEndpoints
do
if [ $serviceEndpoint = "Microsoft.Storage" ]
then
foundStorageServiceEndpoint=true
fi
done
if [ $foundStorageServiceEndpoint = false ]
then
serviceEndpointList=""
for serviceEndpoint in $serviceEndpoints
do
serviceEndpointList+=$serviceEndpoint
serviceEndpointList+=" "
done
serviceEndpointList+="Microsoft.Storage"
az network vnet subnet update \
--ids $subnet \
--service-endpoints $serviceEndpointList \
--output none
fi
A tárfiók felé irányuló forgalom korlátozásának utolsó lépése egy hálózati szabály létrehozása és a tárfiók hálózati szabálykészletének hozzáadása.
az storage account network-rule add \
--resource-group $storageAccountResourceGroupName \
--account-name $storageAccountName \
--subnet $subnet \
--output none
az storage account update \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--bypass "AzureServices" \
--default-action "Deny" \
--output none
Lásd még