Inicio rápido: Creación de un punto de conexión privado mediante Azure PowerShell

Empiece con Azure Private Link con la creación y el uso de un punto de conexión privado para conectarse de forma segura a una aplicación web de Azure App Services.

En este inicio rápido, creará un punto de conexión privado para una aplicación web de Azure App Services y, a continuación, creará e implementará una máquina virtual (VM) para probar la conexión privada.

Puede crear puntos de conexión privados para varios servicios de Azure, como Azure SQL y Azure Storage.

Diagrama de los recursos creados en el inicio rápido del punto de conexión privado.

Requisitos previos

  • Una cuenta de Azure con una suscripción activa. Si aún no tiene una cuenta de Azure, cree una de forma gratuita.

  • Una aplicación web de Azure con un plan de servicio de aplicaciones de nivel PremiumV2 o superior implementado en la suscripción de Azure.

  • Azure Cloud Shell o Azure PowerShell.

    Los pasos de este inicio rápido ejecutarán los cmdlet de Azure PowerShell de forma interactiva en Azure Cloud Shell. Para ejecutar los comandos en Cloud Shell, seleccione Abrir CloudShell en la esquina superior derecha de un bloque de código. Seleccione Copiar para copiar el código y péguelo, a continuación, en Cloud Shell para ejecutarlo. También podrá ejecutar Cloud Shell desde Azure Portal.

    También podrá instalar Azure PowerShell localmente para ejecutar los cmdlet. Los pasos descritos en este artículo requieren el módulo Azure PowerShell versión 5.4.1 o posterior. Ejecute Get-Module -ListAvailable Az para buscar la versión instalada. Si necesitase actualizarlo, consulte Instalación del módulo Azure PowerShell.

    Si ejecutase PowerShell localmente, ejecute Connect-AzAccount para conectarse a Azure.

Crear un grupo de recursos

Un grupo de recursos de Azure es un contenedor lógico en el que se implementan y se administran los recursos de Azure.

Cree un grupo de recursos con New-AzResourceGroup:

$rg = @{
    Name = 'test-rg'
    Location = 'eastus2'
}
New-AzResourceGroup @rg

Creación de una red virtual

  1. Use New-AzVirtualNetwork para crear una red virtual denominada vnet-1 con el prefijo de dirección IP 10.0.0.0/16 en el grupo de recursostest-rg y la ubicación eastus2.

    $vnet = @{
        Name = 'vnet-1'
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        AddressPrefix = '10.0.0.0/16'
    }
    $virtualNetwork = New-AzVirtualNetwork @vnet
    
  2. Azure implementa recursos en una subred dentro de una red virtual. Use Add-AzVirtualNetworkSubnetConfig para crear una configuración de subred denominada subnet-1 con el prefijo de dirección 10.0.0.0/24.

    $subnet = @{
        Name = 'subnet-1'
        VirtualNetwork = $virtualNetwork
        AddressPrefix = '10.0.0.0/24'
    }
    $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
    
  3. A continuación, asocie la configuración de subred a la red virtual con Set-AzVirtualNetwork.

    $virtualNetwork | Set-AzVirtualNetwork
    

Implementación de Azure Bastion

Azure Bastion usa el explorador para conectarse a las máquinas virtuales de la red virtual a través del shell seguro (SSH) o el protocolo de escritorio remoto (RDP) mediante sus direcciones IP privadas. Las máquinas virtuales no necesitan direcciones IP públicas, software cliente ni configuración especial. Para más información sobre Azure Bastion, consulte Azure Bastion.

Nota:

Los precios por hora comienzan desde el momento en que se implementa Bastion, independientemente del uso de datos salientes. Para más información, consulte Precios y SKU. Si va a implementar Bastion como parte de un tutorial o prueba, se recomienda eliminar este recurso una vez que haya terminado de usarlo.

  1. Configure la subred de Azure Bastion en la red virtual. Esta subred se reservará exclusivamente para los recursos de Azure Bastion y deberá denominarse AzureBastionSubnet.

    $subnet = @{
        Name = 'AzureBastionSubnet'
        VirtualNetwork = $virtualNetwork
        AddressPrefix = '10.0.1.0/26'
    }
    $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
    
  2. Establezca la configuración.

    $virtualNetwork | Set-AzVirtualNetwork
    
  3. Cree una dirección IP pública para Azure Bastion. El host bastión usará la dirección IP pública para acceder al shell seguro (SSH) y al protocolo de escritorio remoto (RDP) a través del puerto 443.

    $ip = @{
            ResourceGroupName = 'test-rg'
            Name = 'public-ip'
            Location = 'eastus2'
            AllocationMethod = 'Static'
            Sku = 'Standard'
            Zone = 1,2,3
    }
    New-AzPublicIpAddress @ip
    
  4. Use el comando New-AzBastion para crear un nuevo host de Azure Bastion de SKU estándar en AzureBastionSubnet.

    $bastion = @{
        Name = 'bastion'
        ResourceGroupName = 'test-rg'
        PublicIpAddressRgName = 'test-rg'
        PublicIpAddressName = 'public-ip'
        VirtualNetworkRgName = 'test-rg'
        VirtualNetworkName = 'vnet-1'
        Sku = 'Basic'
    }
    New-AzBastion @bastion
    

Los recursos de Bastion tardan varios minutos en implementarse.

Creación de un punto de conexión privado

Se requiere un servicio de Azure que admita puntos de conexión privados para configurar el punto de conexión privado y la conexión a la red virtual. Para los ejemplos de este artículo, utilizaremos una Azure App Services WebApp de los requisitos previos. Para más información sobre los servicios de Azure que admiten un punto de conexión privado, consulte Disponibilidad de Azure Private Link.

Un punto de conexión privado puede tener una dirección IP estática o asignada dinámicamente.

Importante

Debe tener una Azure App Services WebApp previamente implementada para continuar con los pasos de este artículo. Para obtener más información, consulte Requisitos previos.

En esta sección:

## Place the previously created webapp into a variable. ##
$webapp = Get-AzWebApp -ResourceGroupName test-rg -Name webapp-1

## Create the private endpoint connection. ## 
$pec = @{
    Name = 'connection-1'
    PrivateLinkServiceId = $webapp.ID
    GroupID = 'sites'
}
$privateEndpointConnection = New-AzPrivateLinkServiceConnection @pec

## Place the virtual network you created previously into a variable. ##
$vnet = Get-AzVirtualNetwork -ResourceGroupName 'test-rg' -Name 'vnet-1'

## Create the private endpoint. ##
$pe = @{
    ResourceGroupName = 'test-rg'
    Name = 'private-endpoint'
    Location = 'eastus2'
    Subnet = $vnet.Subnets[0]
    PrivateLinkServiceConnection = $privateEndpointConnection
}
New-AzPrivateEndpoint @pe

Configuración de la zona DNS privada

Se usa una zona DNS privada para resolver el nombre DNS del punto de conexión privado en la red virtual. Para este ejemplo, utilizaremos la información DNS de una aplicación web de Azure App Services. Para obtener más información sobre la configuración DNS de puntos de conexión privados, consulte Configuración DNS de puntos de conexión privados de Azure.

En esta sección:

## Place the virtual network into a variable. ##
$vnet = Get-AzVirtualNetwork -ResourceGroupName 'test-rg' -Name 'vnet-1'

## Create the private DNS zone. ##
$zn = @{
    ResourceGroupName = 'test-rg'
    Name = 'privatelink.azurewebsites.net'
}
$zone = New-AzPrivateDnsZone @zn

## Create a DNS network link. ##
$lk = @{
    ResourceGroupName = 'test-rg'
    ZoneName = 'privatelink.azurewebsites.net'
    Name = 'dns-link'
    VirtualNetworkId = $vnet.Id
}
$link = New-AzPrivateDnsVirtualNetworkLink @lk

## Configure the DNS zone. ##
$cg = @{
    Name = 'privatelink.azurewebsites.net'
    PrivateDnsZoneId = $zone.ResourceId
}
$config = New-AzPrivateDnsZoneConfig @cg

## Create the DNS zone group. ##
$zg = @{
    ResourceGroupName = 'test-rg'
    PrivateEndpointName = 'private-endpoint'
    Name = 'zone-group'
    PrivateDnsZoneConfig = $config
}
New-AzPrivateDnsZoneGroup @zg

Creación de una máquina virtual de prueba

Para comprobar la dirección IP estática y la funcionalidad del punto de conexión privado, se requiere una máquina virtual de prueba conectada a la red virtual.

En esta sección:

## Create the credential for the virtual machine. Enter a username and password at the prompt. ##
$cred = Get-Credential

## Place the virtual network into a variable. ##
$vnet = Get-AzVirtualNetwork -Name vnet-1 -ResourceGroupName test-rg

## Create a network interface for the virtual machine. ##
$nic = @{
    Name = 'nic-1'
    ResourceGroupName = 'test-rg'
    Location = 'eastus2'
    Subnet = $vnet.Subnets[0]
}
$nicVM = New-AzNetworkInterface @nic

## Create the configuration for the virtual machine. ##
$vm1 = @{
    VMName = 'vm-1'
    VMSize = 'Standard_DS1_v2'
}
$vm2 = @{
    ComputerName = 'vm-1'
    Credential = $cred
}
$vm3 = @{
    PublisherName = 'MicrosoftWindowsServer'
    Offer = 'WindowsServer'
    Skus = '2022-Datacenter'
    Version = 'latest'
}
$vmConfig = 
New-AzVMConfig @vm1 | Set-AzVMOperatingSystem -Windows @vm2 | Set-AzVMSourceImage @vm3 | Add-AzVMNetworkInterface -Id $nicVM.Id

## Create the virtual machine. ##
New-AzVM -ResourceGroupName 'test-rg' -Location 'eastus2' -VM $vmConfig

Nota

Las máquinas virtuales de una red virtual con un host bastión no necesitarán direcciones IP públicas. Bastion proporcionará la dirección IP pública y las máquinas virtuales usarán direcciones IP privadas para comunicarse dentro de la red. Es posible quitar las direcciones IP públicas de cualquier máquina virtual en redes virtuales hospedadas por Bastion. Para obtener más información, consulte Desasociación de una dirección IP pública de una máquina virtual de Azure.

Nota:

Azure proporciona una dirección IP de acceso de salida predeterminada para las máquinas virtuales que no tienen asignada una dirección IP pública o están en el grupo back-end de un equilibrador de carga de Azure básico interno. El mecanismo de dirección IP de acceso de salida predeterminado proporciona una dirección IP de salida que no se puede configurar.

La dirección IP de acceso de salida predeterminada está deshabilitada cuando se produce uno de los siguientes eventos:

  • Se asigna una dirección IP pública a la máquina virtual.
  • La máquina virtual se coloca en el grupo back-end de un equilibrador de carga estándar, con o sin reglas de salida.
  • Se asigna un recurso de Azure NAT Gateway a la sub red de la máquina virtual.

Las máquinas virtuales creadas mediante conjuntos de escalado de máquinas virtuales en modo de orquestación flexible no tienen acceso de salida predeterminado.

Para más información sobre las conexiones de salida en Azure, vea Acceso de salida predeterminado en Azure y Uso de traducción de direcciones de red (SNAT) de origen para conexiones de salida.

Prueba de la conectividad con el punto de conexión privado

Use la máquina virtual que creó anteriormente para conectarse a la aplicación web a través del punto de conexión privado.

  1. En el cuadro de búsqueda que aparece en la parte superior del portal, escriba Máquina virtual. Seleccione Máquinas virtuales.

  2. Seleccione vm-1.

  3. En la página de información general para vm-1, seleccione Conectar y, luego, la pestaña Bastion.

  4. Seleccione Usar Bastion.

  5. Escriba el nombre de usuario y la contraseña que usó al crear la máquina virtual.

  6. Seleccione Conectar.

  7. Después de haberse conectado, abra PowerShell en el servidor.

  8. Escriba nslookup webapp-1.azurewebsites.net. Recibirá un mensaje similar al siguiente ejemplo:

    Server:  UnKnown
    Address:  168.63.129.16
    
    Non-authoritative answer:
    Name:    webapp-1.privatelink.azurewebsites.net
    Address:  10.0.0.10
    Aliases:  webapp-1.azurewebsites.net
    

    Se devuelve una dirección IP privada de 10.0.0.10 para el nombre de la aplicación web si eligió una dirección IP estática en los pasos anteriores. Esta dirección se encuentra en la subred de la red virtual que creó anteriormente.

  9. En la conexión de bastión a vm-1, abra el explorador web.

  10. Escriba la dirección URL de la aplicación web, https://webapp-1.azurewebsites.net.

    Si la aplicación web no se ha implementado, aparecerá la siguiente página predeterminada de la aplicación web:

    Captura de pantalla de la página de la aplicación web predeterminada en un navegador.

Limpieza de recursos

Cuando ya no los necesite, puede usar el comando Remove-AzResourceGroup para quitar el grupo de recursos, la red virtual y el resto de los recursos.

Remove-AzResourceGroup -Name 'test-rg'

Pasos siguientes

Para más información sobre los servicios que admiten puntos de conexión privados, consulte: