Configuración de puntos de conexión de red pública y privada de Azure File Sync
Artículo
Azure Files y Azure File Sync proporcionan dos tipos principales de puntos de conexión para el acceso a los recursos compartidos de archivos de Azure:
Puntos de conexión públicos, que tienen una dirección IP pública y a los que se puede acceder desde cualquier parte del mundo.
Puntos de conexión privados, que existen dentro de una red virtual y tienen una dirección IP privada en el espacio de direcciones de esa red virtual.
Tanto para Azure Files como para Azure File Sync, los objetos de administración de Azure (la cuenta de almacenamiento y el servicio de sincronización de almacenamiento) controlan los puntos de conexión públicos y privados. La cuenta de almacenamiento es una construcción de administración que representa un grupo compartido de almacenamiento en el que puede implementar varios recursos compartidos de archivos u otros recursos de almacenamiento, como blobs o colas. El servicio de sincronización de almacenamiento es una construcción de administración que representa servidores registrados, que son servidores de archivos de Windows con una relación de confianza establecida con Azure File Sync, y grupos de sincronización, que definen la topología de la relación de sincronización.
Este artículo se centra en cómo configurar los puntos de conexión de red para Azure Files y Azure File Sync. Para más información sobre cómo configurar los puntos de conexión de red para acceder directamente a los recursos compartidos de archivos de Azure, en lugar de almacenarlos en la caché local con Azure File Sync, consulte Configuración de puntos de conexión de red de Azure Files.
Tiene una suscripción de Azure. Si todavía no tiene una suscripción, cree una cuenta gratuita antes de empezar.
Ya ha creado un recurso compartido de archivos de Azure en una cuenta de almacenamiento a la que le gustaría conectarse desde el entorno local. Para aprender a crear un recurso compartido de archivos de Azure, consulte Creación de un recurso compartido de archivos de Azure.
Al crear un punto de conexión privado para un recurso de Azure, se implementan los recursos siguientes:
Punto de conexión privado: recurso de Azure que representa el punto de conexión privado de la cuenta de almacenamiento o el servicio de sincronización de almacenamiento. Piense en esto como un recurso que conecta su recurso de Azure y una interfaz de red.
Interfaz de red (NIC) : la interfaz de red que mantiene una dirección IP privada dentro de la red virtual o subred especificadas. Este es exactamente el mismo recurso que se utiliza cuando se implementa una máquina virtual (VM), sin embargo, en lugar de ser asignado a una VM, es propiedad del punto final privado.
Zona DNS privada: si nunca ha implementado antes un punto de conexión privado para esta red virtual, se implementará una nueva zona DNS privada para ella. También se creará un registro D de DNS para el recurso de Azure en esta zona DNS. Si ya ha implementado un punto de conexión privado en esta red virtual, se agregará un nuevo registro D para el recurso de Azure a la zona DNS existente. La implementación de una zona DNS es opcional, pero se recomienda encarecidamente para simplificar la administración de DNS.
Nota:
En este artículo se usan los sufijos DNS para las regiones públicas de Azure, core.windows.net para las cuentas de almacenamiento y afs.azure.net para los servicios de sincronización de almacenamiento. Esto también se aplica a nubes soberanas de Azure, como la nube de Azure US Government; simplemente sustituya los sufijos adecuados para su entorno.
Creación del punto de conexión privado de la cuenta de almacenamiento
Vaya a la cuenta de almacenamiento para la que desea crear un punto de conexión privado. En el menú del servicio, en Seguridad y redes, seleccione Redes, Conexiones de punto de conexión privado y, por último, + Punto de conexión privado para crear un punto de conexión privado.
El asistente resultante tiene varias páginas que debe completar:
En la hoja Aspectos básicos, seleccione la suscripción, el grupo de recursos, el nombre, el nombre de la interfaz de red y la región que quiera para el punto de conexión privado. Estos pueden ser cualquier cosa que desee y no tienen que coincidir con la cuenta de almacenamiento en ningún aspecto, aunque debe crear el punto de conexión privado en la misma región que la red virtual en la que quiere crear el punto de conexión privado. Después, seleccione Siguiente: Recurso.
En la hoja Recurso, seleccione archivo para el subrecurso de destino. A continuación, seleccione Siguiente: Red virtual.
La hoja Red virtual permite seleccionar la red virtual y la subred específicas a las que le gustaría agregar el punto de conexión privado. Seleccione la asignación de direcciones IP dinámicas o estáticas para el nuevo punto de conexión privado. Si selecciona estáticas, también deberá proporcionar un nombre y una dirección IP privada. También puede especificar opcionalmente un grupo de seguridad de aplicación. Al acabar, seleccione Siguiente: DNS.
La hoja DNS contiene la información de integración del punto de conexión privado con una zona DNS privada. Asegúrese de que la suscripción y el grupo de recursos sean correctos y seleccione Siguiente: Etiquetas.
Opcionalmente, puede aplicar etiquetas para clasificar los recursos, como aplicar el nombre Entorno y el valor Prueba a todos los recursos de prueba. Escriba pares nombre-valor si quiere y, a continuación, seleccione Siguiente: Revisar y crear.
Seleccione Crear para crear el punto de conexión privado.
Si tiene una máquina virtual dentro de la red virtual o ha configurado el reenvío de DNS tal como se describe en Configuración del reenvío de DNS para Azure Files, puede comprobar que el punto de conexión privado se ha configurado correctamente mediante la ejecución de los siguientes comandos desde PowerShell, la línea de comandos o el terminal (sirve para Windows, Linux o macOS). Debe reemplazar <storage-account-name> por el nombre adecuado de la cuenta de almacenamiento:
Si todo ha funcionado correctamente, verá la siguiente salida, donde 192.168.0.5 es la dirección IP privada del punto de conexión privado de la red virtual (salida mostrada para Windows):
Para crear un punto de conexión privado para la cuenta de almacenamiento, primero debe obtener una referencia a la cuenta de almacenamiento y la subred de la red virtual a la que quiere agregar el punto de conexión privado. Reemplace <storage-account-resource-group-name>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name> y <vnet-subnet-name> a continuación:
$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
}
Para crear un punto de conexión privado, debe crear una conexión de servicio de vínculo privado a la cuenta de almacenamiento. La conexión de servicio de vínculo privado es una entrada para la creación del punto de conexión privado.
# 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
La creación de una zona DNS privada de Azure permite que el nombre original de la cuenta de almacenamiento, como storageaccount.file.core.windows.net, se resuelva en la dirección IP privada dentro de la red virtual. Aunque desde el punto de vista de la creación de un punto de conexión privado este paso es opcional, se necesita explícitamente para montar el recurso compartido de archivos de Azure directamente con una entidad de seguridad de usuario de AD o para permitir el acceso mediante la API de REST.
# 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
}
Ahora que tiene una referencia a la zona DNS privada, debe crear un registro D para la cuenta de almacenamiento.
Si tiene una máquina virtual dentro de la red virtual o ha configurado el reenvío DNS como se describe en Configuración del reenvío DNS para Azure Files, puede probar que el punto de conexión privado está configurado correctamente mediante la ejecución de los siguientes comandos:
Si todo ha funcionado correctamente, debería ver la siguiente salida, donde 192.168.0.5 es la dirección IP privada del punto de conexión privado de la red virtual:
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
Para crear un punto de conexión privado para la cuenta de almacenamiento, primero debe obtener una referencia a la cuenta de almacenamiento y la subred de la red virtual a la que quiere agregar el punto de conexión privado. Reemplace <storage-account-resource-group-name>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name> y <vnet-subnet-name> a continuación:
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 '"')
Para crear un punto de conexión privado, primero debe asegurarse de que la directiva de red del punto de conexión privado de la subred está establecida en deshabilitado. Después, puede crear un punto de conexión privado con el comando az network private-endpoint create.
La creación de una zona DNS privada de Azure permite que el nombre original de la cuenta de almacenamiento, como storageaccount.file.core.windows.net, se resuelva en la dirección IP privada dentro de la red virtual. Aunque desde el punto de vista de la creación de un punto de conexión privado este paso es opcional, se necesita explícitamente para montar el recurso compartido de archivos de Azure mediante una entidad de seguridad de usuario de AD o para permitir el acceso mediante la API REST.
# 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
Ahora que tiene una referencia a la zona DNS privada, debe crear un registro D para la cuenta de almacenamiento.
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
Si tiene una máquina virtual dentro de la red virtual o ha configurado el reenvío DNS como se describe en Configuración del reenvío DNS para Azure Files, puede probar que el punto de conexión privado está configurado correctamente mediante la ejecución de los siguientes comandos:
Si todo ha funcionado correctamente, debería ver la siguiente salida, donde 192.168.0.5 es la dirección IP privada del punto de conexión privado de la red virtual:
Vaya a Private Link Center. Para ello, escriba Private Link en la barra de búsqueda de la parte superior de Azure Portal. En la tabla de contenido de Private Link Center, seleccione Puntos de conexión privados y, luego, + Agregar para crear un punto de conexión privado.
El asistente resultante tiene varias páginas que debe completar:
En la hoja Aspectos básicos, seleccione el grupo de recursos, el nombre y la región que quiera para el punto de conexión privado. Estos pueden ser cualquier cosa que desee y no tienen que coincidir con el servicio de sincronización de almacenamiento en ningún aspecto, aunque debe crear el punto de conexión privado en la misma región que la red virtual en la que quiere crear el punto de conexión privado.
En la hoja Recurso, seleccione el botón de radio Connect to an Azure resource in my directory (Conectarse a un recurso de Azure en mi directorio). En Tipo de recurso, seleccione Microsoft.StorageSync/storageSyncServices para el tipo de recurso.
La hoja Configuración permite seleccionar la red virtual y la subred específicas a las que le gustaría agregar el punto de conexión privado. Seleccione la misma red virtual que usó para la cuenta de almacenamiento anterior. La hoja Configuración también contiene la información para crear o actualizar la zona DNS privada.
Seleccione Revisar y crear para crear un punto de conexión privado.
Puede probar que el punto de conexión privado está configurado correctamente mediante la ejecución de los siguientes comandos de PowerShell.
Si todo ha funcionado correctamente, debería ver la siguiente salida, donde 192.168.1.4, 192.168.1.5, 192.168.1.6 y 192.168.1.7 son las direcciones IP privadas asignadas al punto de conexión privado:
Name : mysssmanagement.westus2.afs.azure.net
Type : CNAME
TTL : 60
Section : Answer
NameHost : mysssmanagement.westus2.privatelink.afs.azure.net
Name : mysssmanagement.westus2.privatelink.afs.azure.net
QueryType : A
TTL : 60
Section : Answer
IP4Address : 192.168.1.4
Name : myssssyncp.westus2.afs.azure.net
Type : CNAME
TTL : 60
Section : Answer
NameHost : myssssyncp.westus2.privatelink.afs.azure.net
Name : myssssyncp.westus2.privatelink.afs.azure.net
QueryType : A
TTL : 60
Section : Answer
IP4Address : 192.168.1.5
Name : myssssyncs.westus2.afs.azure.net
Type : CNAME
TTL : 60
Section : Answer
NameHost : myssssyncs.westus2.privatelink.afs.azure.net
Name : myssssyncs.westus2.privatelink.afs.azure.net
QueryType : A
TTL : 60
Section : Answer
IP4Address : 192.168.1.6
Name : mysssmonitoring.westus2.afs.azure.net
Type : CNAME
TTL : 60
Section : Answer
NameHost : mysssmonitoring.westus2.privatelink.afs.azure.net
Name : mysssmonitoring.westus2.privatelink.afs.azure.net
QueryType : A
TTL : 60
Section : Answer
IP4Address : 192.168.1.7
Para crear un punto de conexión privado para el servicio de sincronización de almacenamiento, primero debe obtener una referencia a dicho servicio. No olvide reemplazar <storage-sync-service-resource-group> y <storage-sync-service> por los valores correctos para su entorno. Los siguientes comandos de PowerShell suponen que ya ha rellenado la información de la red virtual.
$storageSyncServiceResourceGroupName = "<storage-sync-service-resource-group>"
$storageSyncServiceName = "<storage-sync-service>"
$storageSyncService = Get-AzStorageSyncService `
-ResourceGroupName $storageSyncServiceResourceGroupName `
-Name $storageSyncServiceName `
-ErrorAction SilentlyContinue
if ($null -eq $storageSyncService) {
$errorMessage = "Storage Sync Service $storageSyncServiceName not found "
$errorMessage += "in resource group $storageSyncServiceResourceGroupName."
Write-Error -Message $errorMessage -ErrorAction Stop
}
Para crear un punto de conexión privado, debe crear una conexión de servicio Private Link privada al servicio de sincronización de almacenamiento. La conexión de Private Link es una entrada para la creación del punto de conexión privado.
# 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 "$storageSyncServiceName-Connection" `
-PrivateLinkServiceId $storageSyncService.ResourceId `
-GroupId "Afs" `
-ErrorAction Stop
# Create a new private endpoint.
$privateEndpoint = New-AzPrivateEndpoint `
-ResourceGroupName $storageSyncServiceResourceGroupName `
-Name "$storageSyncServiceName-PrivateEndpoint" `
-Location $virtualNetwork.Location `
-Subnet $subnet `
-PrivateLinkServiceConnection $privateEndpointConnection `
-ErrorAction Stop
La creación de una zona DNS privada de Azure permite que los nombres de host del servicio de sincronización de almacenamiento, como mysssmanagement.westus2.afs.azure.net, se resuelvan en las direcciones IP privadas correctas para el servicio de sincronización de almacenamiento dentro de la red virtual. Aunque desde el punto de vista de la creación de un punto de conexión privado este paso es opcional, se necesita explícitamente para que el agente de Azure File Sync pueda acceder al servicio de sincronización de almacenamiento.
# Get the desired Storage Sync Service suffix (afs.azure.net for public cloud).
# This is done like this so this script will seamlessly work for non-public Azure.
$azureEnvironment = Get-AzContext | `
Select-Object -ExpandProperty Environment | `
Select-Object -ExpandProperty Name
switch($azureEnvironment) {
"AzureCloud" {
$storageSyncSuffix = "afs.azure.net"
}
"AzureUSGovernment" {
$storageSyncSuffix = "afs.azure.us"
}
"AzureChinaCloud" {
$storageSyncSuffix = "afs.azure.cn"
}
default {
Write-Error
-Message "The Azure environment $_ is not currently supported by Azure File Sync." `
-ErrorAction Stop
}
}
# For public cloud, this will generate the following DNS suffix:
# privatelink.afs.azure.net
$dnsZoneName = "privatelink.$storageSyncSuffix"
# 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
}
Ahora que tiene una referencia a la zona DNS privada, debe crear registros D para el servicio de sincronización de almacenamiento.
Para crear un punto de conexión privado para el servicio de sincronización de almacenamiento, primero debe obtener una referencia a dicho servicio. No olvide reemplazar <storage-sync-service-resource-group> y <storage-sync-service> por los valores correctos para su entorno. Los siguientes comandos de la CLI suponen que ya ha rellenado la información de la red virtual.
Para crear un punto de conexión privado, primero debe asegurarse de que la directiva de red del punto de conexión privado de la subred está establecida en deshabilitado. Después, puede crear un punto de conexión privado con el comando az network private-endpoint create.
La creación de una zona DNS privada de Azure permite que los nombres de host del servicio de sincronización de almacenamiento, como mysssmanagement.westus2.afs.azure.net, se resuelvan en las direcciones IP privadas correctas para el servicio de sincronización de almacenamiento dentro de la red virtual. Aunque desde el punto de vista de la creación de un punto de conexión privado este paso es opcional, se necesita explícitamente para que el agente de Azure File Sync pueda acceder al servicio de sincronización de almacenamiento.
# Get the desired storage account suffix (afs.azure.net for public cloud).
# This is done like this so this script will seamlessly work for non-public Azure.
azureEnvironment=$(az cloud show \
--query "name" |
tr -d '"')
storageSyncSuffix=""
if [ $azureEnvironment == "AzureCloud" ]
then
storageSyncSuffix="afs.azure.net"
elif [ $azureEnvironment == "AzureUSGovernment" ]
then
storageSyncSuffix="afs.azure.us"
else
echo "Unsupported Azure environment $azureEnvironment."
fi
# For public cloud, this will generate the following DNS suffix:
# privatelinke.afs.azure.net.
dnsZoneName="privatelink.$storageSyncSuffix"
# 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
Ahora que tiene una referencia a la zona DNS privada, debe crear registros D para el servicio de sincronización de almacenamiento.
privateEndpointNIC=$(az network private-endpoint show \
--ids $privateEndpoint \
--query "networkInterfaces[0].id" | \
tr -d '"')
privateIpAddresses=$(az network nic show \
--ids $privateEndpointNIC \
--query "ipConfigurations[].privateIpAddress" \
--output tsv)
hostNames=$(az network nic show \
--ids $privateEndpointNIC \
--query "ipConfigurations[].privateLinkConnectionProperties.fqdns[]" \
--output tsv)
i=0
for privateIpAddress in $privateIpAddresses
do
j=0
targetHostName=""
for hostName in $hostNames
do
if [ $i == $j ]
then
targetHostName=$hostName
break
fi
j=$(expr $j + 1)
done
endpointName=$(echo $targetHostName | \
cut -c1-$(expr $(expr index $targetHostName ".") - 1))
az network private-dns record-set a create \
--resource-group $dnsZoneResourceGroup \
--zone-name $dnsZoneName \
--name "$endpointName.$storageSyncServiceRegion" \
--output none
az network private-dns record-set a add-record \
--resource-group $dnsZoneResourceGroup \
--zone-name $dnsZoneName \
--record-set-name "$endpointName.$storageSyncServiceRegion" \
--ipv4-address $privateIpAddress \
--output none
i=$(expr $i + 1)
done
Restricción del acceso a los puntos de conexión públicos
Puede restringir el acceso a los puntos de conexión públicos de la cuenta de almacenamiento y de los servicios de sincronización de almacenamiento. La restricción del acceso al punto de conexión público proporciona seguridad adicional al garantizar que los paquetes de red solo se aceptan de ubicaciones aprobadas.
Restricción del acceso al punto de conexión público de la cuenta de almacenamiento
La restricción del acceso al punto de conexión público se lleva a cabo mediante la configuración del firewall de la cuenta de almacenamiento. En general, la mayoría de las directivas de firewall de una cuenta de almacenamiento restringirán el acceso de red a una o varias redes virtuales. Existen dos enfoques para restringir el acceso de una cuenta de almacenamiento a una red virtual:
Cree uno o varios puntos de conexión privados para la cuenta de almacenamiento y deshabilite el acceso al punto de conexión público. De esta forma se garantiza que solo el tráfico que se origina en las redes virtuales deseadas pueda acceder a los recursos compartidos de archivos de Azure dentro de la cuenta de almacenamiento.
Restrinja el punto de conexión público a una o más redes virtuales. Para ello, se usa una funcionalidad de la red virtual llamada puntos de conexión de servicio. Al restringir el tráfico a una cuenta de almacenamiento a través de un punto de conexión de servicio, sigue teniendo acceso a la cuenta de almacenamiento a través de la dirección IP pública.
Nota:
La excepción Permitir que los servicios de Azure de la lista de servicios de confianza accedan a esta cuenta de almacenamiento se debe seleccionar en la cuenta de almacenamiento para permitir que los servicios de Microsoft de terceros de confianza, como Azure File Sync, accedan a la cuenta de almacenamiento. Para más información, consulte Concesión de acceso a servicios de Azure de confianza.
Concesión de acceso a servicios de Azure de confianza y deshabilitación del acceso al punto de conexión público de la cuenta de almacenamiento
Si el acceso al punto de conexión público está deshabilitado, aún se puede acceder a la cuenta de almacenamiento a través de los puntos de conexión privados. De lo contrario, se rechazarán las solicitudes válidas al punto de conexión público de la cuenta de almacenamiento.
Vaya a la cuenta de almacenamiento para la que desea restringir todo el acceso al punto de conexión público. En la tabla de contenido de la cuenta de almacenamiento, seleccione la entrada Redes.
En la parte superior de la página, seleccione el botón de radio Habilitado desde redes virtuales y direcciones IP seleccionadas. Esta acción anulará la ocultación de una serie de opciones para controlar la restricción del punto de conexión público. Seleccione Permitir que los servicios de Azure de la lista de servicios de confianza accedan a esta cuenta de almacenamiento para permitir que los servicios de Microsoft de confianza de terceros, como Azure File Sync, accedan a la cuenta de almacenamiento.
El siguiente comando de PowerShell denegará todo el tráfico que llega al punto de conexión público de la cuenta de almacenamiento. Tenga en cuenta que este comando tiene el parámetro -Bypass establecido en AzureServices. De esta forma, los servicios propios de confianza, como Azure File Sync, acceden a la cuenta de almacenamiento mediante el punto de conexión público.
# 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
El siguiente comando de la CLI denegará todo el tráfico que llega al punto de conexión público de la cuenta de almacenamiento. Tenga en cuenta que este comando tiene el parámetro -bypass establecido en AzureServices. De esta forma, los servicios propios de confianza, como Azure File Sync, acceden a la cuenta de almacenamiento mediante el punto de conexión público.
# 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
Concesión de acceso a servicios de Azure de confianza y restricción del acceso al punto de conexión público de la cuenta de almacenamiento a redes virtuales específicas
Al restringir la cuenta de almacenamiento a redes virtuales específicas, permite solicitudes al punto de conexión público desde las redes virtuales especificadas. Para ello, se usa una funcionalidad de la red virtual llamada puntos de conexión de servicio. Esta funcionalidad se puede usar con o sin puntos de conexión privados.
Vaya a la cuenta de almacenamiento para la que desea restringir el punto de conexión público a redes virtuales específicas. En la tabla de contenido de la cuenta de almacenamiento, seleccione la entrada Redes.
En la parte superior de la página, seleccione el botón de radio Habilitado desde redes virtuales y direcciones IP seleccionadas. Esta acción anulará la ocultación de una serie de opciones para controlar la restricción del punto de conexión público. Seleccione +Agregar red virtual existente para seleccionar la red virtual específica a la que se debe permitir el acceso a la cuenta de almacenamiento a través del punto de conexión público. Seleccione una red virtual y una subred para esa red virtual y, luego, elija Habilitar.
Seleccione Permitir que los servicios de Azure de la lista de servicios de confianza accedan a esta cuenta de almacenamiento para permitir que los servicios de Microsoft de confianza de terceros, como Azure File Sync, accedan a la cuenta de almacenamiento.
Para restringir el acceso al punto de conexión público de la cuenta de almacenamiento a redes virtuales específicas mediante puntos de conexión de servicio, primero es necesario recopilar información sobre la cuenta de almacenamiento y la red virtual. Rellene <storage-account-resource-group>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name> y <subnet-name> para recopilar esta información.
Para que el tejido de red de Azure permita que el tráfico de la red virtual llegue al punto de conexión público de la cuenta de almacenamiento, la subred de la red virtual debe tener expuesto el punto de conexión de servicio Microsoft.Storage. Los siguientes comandos de PowerShell agregarán el punto de conexión de servicio Microsoft.Storage a la subred, si aún no está ahí.
El último paso en la restricción del tráfico a la cuenta de almacenamiento es crear una regla de red y agregarla al conjunto de reglas de red de la cuenta de almacenamiento.
Para restringir el acceso al punto de conexión público de la cuenta de almacenamiento a redes virtuales específicas mediante puntos de conexión de servicio, primero es necesario recopilar información sobre la cuenta de almacenamiento y la red virtual. Rellene <storage-account-resource-group>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name> y <subnet-name> para recopilar esta información.
Para que el tejido de red de Azure permita que el tráfico de la red virtual llegue al punto de conexión público de la cuenta de almacenamiento, la subred de la red virtual debe tener expuesto el punto de conexión de servicio Microsoft.Storage. Los siguientes comandos de la CLI agregarán el punto de conexión de servicio Microsoft.Storage a la subred, si aún no está ahí.
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
El último paso en la restricción del tráfico a la cuenta de almacenamiento es crear una regla de red y agregarla al conjunto de reglas de red de la cuenta de almacenamiento.
Deshabilitación del acceso al punto de conexión público del servicio de sincronización de almacenamiento
Azure File Sync le permite restringir el acceso a redes virtuales específicas a través de puntos de conexión privados únicamente; Azure File Sync no admite puntos de conexión de servicio para restringir el acceso al punto de conexión público a redes virtuales específicas. Esto significa que los dos estados del punto de conexión público del servicio de sincronización de almacenamiento se habilitan y deshabilitan.
Importante
Debe crear un punto de conexión privado antes de deshabilitar el acceso al punto de conexión público. Si el punto de conexión público está deshabilitado y no hay ningún punto de conexión privado configurado, la sincronización no puede funcionar.
Vaya al servicio de sincronización de almacenamiento y seleccione Configuración>Red en el panel de navegación izquierdo.
En Permitir acceso desde, seleccione Solo puntos de conexión privados.
Seleccione un punto de conexión privado en la lista Conexiones de punto de conexión privado.
Para deshabilitar el acceso al punto de conexión público del servicio de sincronización de almacenamiento, estableceremos la propiedad incomingTrafficPolicy en el servicio de sincronización de almacenamiento en AllowVirtualNetworksOnly. Si desea habilitar el acceso al punto de conexión público del servicio de sincronización de almacenamiento, establezca incomingTrafficPolicy en AllowAllTraffic en su lugar. Recuerde reemplazar <storage-sync-service-resource-group> y <storage-sync-service> por sus valores propios.
La CLI de Azure no admite el establecimiento de la propiedad incomingTrafficPolicy en el servicio de sincronización de almacenamiento. Seleccione la pestaña de Azure PowerShell para obtener instrucciones sobre cómo deshabilitar el punto de conexión público del servicio de sincronización de almacenamiento.
Azure Policy
Azure Policy ayuda a aplicar los estándares de la organización y a evaluar el cumplimiento con respecto a esos estándares a gran escala. Azure Files y Azure File Sync exponen varias directivas de red de auditoría y corrección útiles que le ayudan a supervisar y automatizar la implementación.
Las directivas auditan el entorno y le avisan si las cuentas de almacenamiento o los servicios de sincronización de almacenamiento difieren del comportamiento definido. Por ejemplo, si se habilitó un punto de conexión público cuando la directiva se estableció para tener deshabilitados los puntos de conexión públicos. La modificación o implementación de directivas van todavía más lejos al modificar de forma proactiva un recurso (por ejemplo, el servicio de sincronización de almacenamiento) o implementar recursos (por ejemplo, puntos de conexión privados) para alinearlos con las directivas.
Las siguientes directivas predefinidas están disponibles para Azure Files y Azure File Sync:
Deshabilite el punto de conexión público del servicio de sincronización de almacenamiento.
Modificar: configurar Azure File Sync para deshabilitar el acceso a la red pública
Implementar
Azure File Sync
Implemente un punto de conexión privado para el servicio de sincronización de almacenamiento.
Configurar Azure File Sync con puntos de conexión privados
Implementar
Azure File Sync
Implemente un registro D en la zona DNS privatelink.afs.azure.net.
Configurar Azure File Sync para usar zonas DNS privadas
Configuración de una directiva de implementación de puntos de conexión privados
Para configurar una directiva de implementación de puntos de conexión privados, vaya a Azure Portal y busque Directiva. El centro de Azure Policy debe aparecer en los primeros lugares. Vaya a Creación>Definiciones en la tabla de contenido del centro de Policy. El panel Definiciones resultante contiene las directivas predefinidas en todos los servicios de Azure. Para encontrar la directiva específica, seleccione la categoría Almacenamiento en el filtro de categoría o busque Configurar Azure File Sync con puntos de conexión privados. Seleccione ... y Asignar para crear una directiva a partir de la definición.
La hoja Aspectos básicos del asistente Asignar directiva le permite establecer una lista de exclusión de ámbitos, recursos o grupos de recursos y asignar un nombre descriptivo a la directiva para ayudarle a distinguirla. No es necesario modificarlos para que la directiva funcione, pero puede hacerlo si quiere realizar modificaciones. Seleccione Siguiente para avanzar a la página Parámetros.
En la hoja Parámetros, seleccione ... junto a la lista desplegable privateEndpointSubnetId para elegir la red virtual y la subred donde se deben implementar los puntos de conexión privados para los recursos del servicio de sincronización de almacenamiento. El asistente resultante puede tardar varios segundos en cargar las redes virtuales disponibles en la suscripción. Elija la red virtual o subred adecuada para su entorno y haga clic en Seleccionar. Seleccione Siguiente para avanzar a la página Corrección.
Para que el punto de conexión privado se implemente cuando se identifique un servicio de sincronización de almacenamiento sin un punto de conexión privado, debe seleccionar Crear una tarea de corrección en la página Corrección. Por último, seleccione Revisar y crear para revisar la asignación de directivas y Crear para crearla.
La asignación de directivas resultante se ejecutará de forma periódica y es posible que no lo haga inmediatamente después de su creación.