Inicio rápido: Creación de un punto de conexión privado mediante Bicep
En este inicio rápido, usará Bicep para crear un punto de conexión privado.
Bicep es un lenguaje específico de dominio (DSL) que usa una sintaxis declarativa para implementar recursos de Azure. Brinda sintaxis concisa, seguridad de tipos confiable y compatibilidad con la reutilización de código. Bicep ofrece la mejor experiencia de creación para sus soluciones de infraestructura como código en Azure.
También puede crear un punto de conexión privado mediante Azure Portal, Azure PowerShell, la CLI de Azure o una plantilla de Azure Resource Manager.
Requisitos previos
Necesita una cuenta de Azure con una suscripción activa. Si aún no tiene una cuenta de Azure, cree una de forma gratuita.
Revisión del archivo de Bicep
Este archivo de Bicep crea un punto de conexión privado para una instancia de Azure SQL Database.
El archivo de Bicep usado en este inicio rápido forma parte de las plantillas de inicio rápido de Azure.
@description('The administrator username of the SQL logical server')
param sqlAdministratorLogin string
@description('The administrator password of the SQL logical server.')
@secure()
param sqlAdministratorLoginPassword string
@description('Username for the Virtual Machine.')
param vmAdminUsername string
@description('Password for the Virtual Machine. The password must be at least 12 characters long and have lower case, upper characters, digit and a special character (Regex match)')
@secure()
param vmAdminPassword string
@description('The size of the VM')
param VmSize string = 'Standard_D2_v3'
@description('Location for all resources.')
param location string = resourceGroup().location
var vnetName = 'myVirtualNetwork'
var vnetAddressPrefix = '10.0.0.0/16'
var subnet1Prefix = '10.0.0.0/24'
var subnet1Name = 'mySubnet'
var sqlServerName = 'sqlserver${uniqueString(resourceGroup().id)}'
var databaseName = '${sqlServerName}/sample-db'
var privateEndpointName = 'myPrivateEndpoint'
var privateDnsZoneName = 'privatelink${environment().suffixes.sqlServerHostname}'
var pvtEndpointDnsGroupName = '${privateEndpointName}/mydnsgroupname'
var vmName = take('myVm${uniqueString(resourceGroup().id)}', 15)
var publicIpAddressName = '${vmName}PublicIP'
var networkInterfaceName = '${vmName}NetInt'
var osDiskType = 'StandardSSD_LRS'
resource sqlServer 'Microsoft.Sql/servers@2021-11-01-preview' = {
name: sqlServerName
location: location
tags: {
displayName: sqlServerName
}
properties: {
administratorLogin: sqlAdministratorLogin
administratorLoginPassword: sqlAdministratorLoginPassword
version: '12.0'
publicNetworkAccess: 'Disabled'
}
}
resource database 'Microsoft.Sql/servers/databases@2021-11-01-preview' = {
name: databaseName
location: location
sku: {
name: 'Basic'
tier: 'Basic'
capacity: 5
}
tags: {
displayName: databaseName
}
properties: {
collation: 'SQL_Latin1_General_CP1_CI_AS'
maxSizeBytes: 104857600
sampleName: 'AdventureWorksLT'
}
dependsOn: [
sqlServer
]
}
resource vnet 'Microsoft.Network/virtualNetworks@2021-05-01' = {
name: vnetName
location: location
properties: {
addressSpace: {
addressPrefixes: [
vnetAddressPrefix
]
}
}
}
resource subnet 'Microsoft.Network/virtualNetworks/subnets@2021-05-01' = {
parent: vnet
name: subnet1Name
properties: {
addressPrefix: subnet1Prefix
privateEndpointNetworkPolicies: 'Disabled'
}
}
resource privateEndpoint 'Microsoft.Network/privateEndpoints@2021-05-01' = {
name: privateEndpointName
location: location
properties: {
subnet: {
id: subnet.id
}
privateLinkServiceConnections: [
{
name: privateEndpointName
properties: {
privateLinkServiceId: sqlServer.id
groupIds: [
'sqlServer'
]
}
}
]
}
dependsOn: [
vnet
]
}
resource privateDnsZone 'Microsoft.Network/privateDnsZones@2020-06-01' = {
name: privateDnsZoneName
location: 'global'
properties: {}
dependsOn: [
vnet
]
}
resource privateDnsZoneLink 'Microsoft.Network/privateDnsZones/virtualNetworkLinks@2020-06-01' = {
parent: privateDnsZone
name: '${privateDnsZoneName}-link'
location: 'global'
properties: {
registrationEnabled: false
virtualNetwork: {
id: vnet.id
}
}
}
resource pvtEndpointDnsGroup 'Microsoft.Network/privateEndpoints/privateDnsZoneGroups@2021-05-01' = {
name: pvtEndpointDnsGroupName
properties: {
privateDnsZoneConfigs: [
{
name: 'config1'
properties: {
privateDnsZoneId: privateDnsZone.id
}
}
]
}
dependsOn: [
privateEndpoint
]
}
resource publicIpAddress 'Microsoft.Network/publicIPAddresses@2021-05-01' = {
name: publicIpAddressName
location: location
tags: {
displayName: publicIpAddressName
}
properties: {
publicIPAllocationMethod: 'Dynamic'
}
}
resource networkInterface 'Microsoft.Network/networkInterfaces@2021-05-01' = {
name: networkInterfaceName
location: location
tags: {
displayName: networkInterfaceName
}
properties: {
ipConfigurations: [
{
name: 'ipConfig1'
properties: {
privateIPAllocationMethod: 'Dynamic'
publicIPAddress: {
id: publicIpAddress.id
}
subnet: {
id: subnet.id
}
}
}
]
}
dependsOn: [
vnet
]
}
resource vm 'Microsoft.Compute/virtualMachines@2021-11-01' = {
name: vmName
location: location
tags: {
displayName: vmName
}
properties: {
hardwareProfile: {
vmSize: VmSize
}
osProfile: {
computerName: vmName
adminUsername: vmAdminUsername
adminPassword: vmAdminPassword
}
storageProfile: {
imageReference: {
publisher: 'MicrosoftWindowsServer'
offer: 'WindowsServer'
sku: '2019-Datacenter'
version: 'latest'
}
osDisk: {
name: '${vmName}OsDisk'
caching: 'ReadWrite'
createOption: 'FromImage'
managedDisk: {
storageAccountType: osDiskType
}
diskSizeGB: 128
}
}
networkProfile: {
networkInterfaces: [
{
id: networkInterface.id
}
]
}
}
}
El archivo de Bicep define diversos recursos de Azure:
- Microsoft.Sql/servers: la instancia de SQL Database con la base de datos de ejemplo.
- Microsoft.Sql/servers/databases: la base de datos de ejemplo.
- Microsoft.Network/virtualNetworks: la red virtual donde se implementa el punto de conexión privado.
- Microsoft.Network/privateEndpoints: punto de conexión privado que se usa para acceder a la instancia de SQL Database.
- Microsoft.Network/privateDnsZones: zona que se usa para resolver la dirección IP del punto de conexión privado.
- Microsoft.Network/privateDnsZones/virtualNetworkLinks
- Microsoft.Network/privateEndpoints/privateDnsZoneGroups: grupo de zonas que se usa para asociar el punto de conexión privado con una zona DNS privada.
- Microsoft.Network/publicIpAddresses: dirección IP pública que se usa para acceder a la máquina virtual.
- Microsoft.Network/networkInterfaces: la interfaz de red de la máquina virtual.
- Microsoft.Compute/virtualMachines: máquina virtual que se usa para probar la conexión del punto de conexión privado a la instancia de SQL Database.
Implementación del archivo de Bicep
Guarde el archivo de Bicep como main.bicep en el equipo local.
Implemente el archivo de Bicep mediante la CLI de Azure o Azure PowerShell.
az group create --name exampleRG --location eastus az deployment group create --resource-group exampleRG --template-file main.bicep --parameters sqlAdministratorLogin=<admin-login> vmAdminUsername=<vm-login>
Nota
Reemplace <admin-login> por el nombre de usuario del servidor lógico de SQL. Reemplace <vm-login> por el nombre de usuario de la máquina virtual. Se le pedirá que introduzca sqlAdministratorLoginPassword. También se le pedirá que introduzca vmAdminPassword, que debe tener al menos 12 caracteres de longitud y contener como mínimo un carácter en minúsculas, uno en mayúsculas y un carácter especial.
Una vez finalizada la implementación, debería mostrarse un mensaje indicando que la implementación se realizó correctamente.
Validación de la implementación
Nota
El archivo de Bicep genera un nombre único para el recurso de la máquina virtual myVm{uniqueid} y para el recurso sqlserver{uniqueid} de SQL Database. Sustituya el valor generado para {uniqueid} .
Conexión a una máquina virtual desde Internet
Conéctese a la VM myVm{uniqueid} desde Internet de la siguiente manera:
En la barra de búsqueda de Azure Portal, escriba myVm{uniqueid}.
Seleccione Conectar. Se abre Connect to virtual machine (Conectarse a una máquina virtual).
Seleccione Descargar archivo RDP. Azure crea un archivo de Protocolo de Escritorio remoto (RDP) y lo descarga en su equipo.
Abra el archivo RDP descargado.
a. Si se le pide, seleccione Conectar.
b. Escriba el nombre de usuario y la contraseña que especificó cuando creó la máquina virtual.Nota
Puede que deba seleccionar Más opciones>Usar otra cuenta para especificar las credenciales que escribió al crear la máquina virtual.
Seleccione Aceptar.
Puede recibir una advertencia de certificado durante el proceso de inicio de sesión. Si la recibe, seleccione Sí o Continuar.
Cuando aparezca el escritorio de la máquina virtual, minimícelo para volver al escritorio local.
Acceso al servidor de SQL Database de forma privada desde la máquina virtual
Para conectarse al servidor de SQL Database desde la máquina virtual mediante el punto de conexión privado, realice lo siguiente:
En el Escritorio remoto de myVm{uniqueid}, abra PowerShell.
Ejecute el siguiente comando:
nslookup sqlserver{uniqueid}.database.windows.net
Recibirá un mensaje similar a este:
Server: UnKnown Address: 168.63.129.16 Non-authoritative answer: Name: sqlserver.privatelink.database.windows.net Address: 10.0.0.5 Aliases: sqlserver.database.windows.net
Instale SQL Server Management Studio.
En el panel Conectar al servidor, haga lo siguiente:
- En Tipo de servidor, seleccione Motor de base de datos.
- En Nombre de servidor, seleccione sqlserver{uniqueid}.database.windows.net.
- En Nombre de usuario, escriba el nombre de usuario que se proporcionó anteriormente.
- En Contraseña, escriba la contraseña que se proporcionó anteriormente.
- En Recordar contraseña, seleccione Sí.
Seleccione Conectar.
En el panel izquierdo, seleccione Bases de datos. También tiene la opción de crear o consultar información desde sample-db.
Cierre la conexión a Escritorio remoto a myVm{uniqueid} .
Limpieza de recursos
Cuando ya no necesite los recursos que ha creado con el servicio Private Link, elimine el grupo de recursos. Esta acción quita el servicio Private Link y todos los recursos relacionados.
az group delete --name exampleRG
Pasos siguientes
Para más información sobre los servicios que admiten puntos de conexión privados, consulte: