Quickstart: Een privé-eindpunt maken met behulp van een ARM-sjabloon
In deze quickstart gebruikt u een Azure Resource Manager-sjabloon (ARM-sjabloon) om een privé-eindpunt te maken.
Een Azure Resource Manager-sjabloon is een JSON-bestand (JavaScript Object Notation) dat de infrastructuur en configuratie voor uw project definieert. Voor de sjabloon is declaratieve syntaxis vereist. U beschrijft de beoogde implementatie zonder de reeks programmeeropdrachten te schrijven om de implementatie te maken.
U kunt ook een privé-eindpunt maken met behulp van Azure Portal, Azure PowerShell of de Azure CLI.
Als uw omgeving voldoet aan de vereisten en u bekend bent met het gebruik van ARM-sjablonen, selecteert u hier de knop Implementeren in Azure . De ARM-sjabloon wordt geopend in Azure Portal.
Vereisten
U hebt een Azure-account met een actief abonnement nodig. Als u nog geen Azure-account hebt, maakt u gratis een account.
De sjabloon controleren
Met deze sjabloon maakt u een privé-eindpunt voor een exemplaar van Azure SQL Database.
De sjabloon die in deze quickstart wordt gebruikt, is afkomstig van Azure-quickstartsjablonen.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.5.6.12127",
"templateHash": "14846974543330599630"
}
},
"parameters": {
"sqlAdministratorLogin": {
"type": "string",
"metadata": {
"description": "The administrator username of the SQL logical server"
}
},
"sqlAdministratorLoginPassword": {
"type": "secureString",
"metadata": {
"description": "The administrator password of the SQL logical server."
}
},
"vmAdminUsername": {
"type": "string",
"metadata": {
"description": "Username for the Virtual Machine."
}
},
"vmAdminPassword": {
"type": "secureString",
"metadata": {
"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)"
}
},
"VmSize": {
"type": "string",
"defaultValue": "Standard_D2_v3",
"metadata": {
"description": "The size of the VM"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
}
},
"variables": {
"vnetName": "myVirtualNetwork",
"vnetAddressPrefix": "10.0.0.0/16",
"subnet1Prefix": "10.0.0.0/24",
"subnet1Name": "mySubnet",
"sqlServerName": "[format('sqlserver{0}', uniqueString(resourceGroup().id))]",
"databaseName": "[format('{0}/sample-db', variables('sqlServerName'))]",
"privateEndpointName": "myPrivateEndpoint",
"privateDnsZoneName": "[format('privatelink{0}', environment().suffixes.sqlServerHostname)]",
"pvtEndpointDnsGroupName": "[format('{0}/mydnsgroupname', variables('privateEndpointName'))]",
"vmName": "[take(format('myVm{0}', uniqueString(resourceGroup().id)), 15)]",
"publicIpAddressName": "[format('{0}PublicIP', variables('vmName'))]",
"networkInterfaceName": "[format('{0}NetInt', variables('vmName'))]",
"osDiskType": "StandardSSD_LRS"
},
"resources": [
{
"type": "Microsoft.Sql/servers",
"apiVersion": "2021-11-01-preview",
"name": "[variables('sqlServerName')]",
"location": "[parameters('location')]",
"tags": {
"displayName": "[variables('sqlServerName')]"
},
"properties": {
"administratorLogin": "[parameters('sqlAdministratorLogin')]",
"administratorLoginPassword": "[parameters('sqlAdministratorLoginPassword')]",
"version": "12.0",
"publicNetworkAccess": "Disabled"
}
},
{
"type": "Microsoft.Sql/servers/databases",
"apiVersion": "2021-11-01-preview",
"name": "[variables('databaseName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Basic",
"tier": "Basic",
"capacity": 5
},
"tags": {
"displayName": "[variables('databaseName')]"
},
"properties": {
"collation": "SQL_Latin1_General_CP1_CI_AS",
"maxSizeBytes": 104857600,
"sampleName": "AdventureWorksLT"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', variables('sqlServerName'))]"
]
},
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2021-05-01",
"name": "[variables('vnetName')]",
"location": "[parameters('location')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[variables('vnetAddressPrefix')]"
]
}
}
},
{
"type": "Microsoft.Network/virtualNetworks/subnets",
"apiVersion": "2021-05-01",
"name": "[format('{0}/{1}', variables('vnetName'), variables('subnet1Name'))]",
"properties": {
"addressPrefix": "[variables('subnet1Prefix')]",
"privateEndpointNetworkPolicies": "Disabled"
},
"dependsOn": [
"[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]"
]
},
{
"type": "Microsoft.Network/privateEndpoints",
"apiVersion": "2021-05-01",
"name": "[variables('privateEndpointName')]",
"location": "[parameters('location')]",
"properties": {
"subnet": {
"id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), variables('subnet1Name'))]"
},
"privateLinkServiceConnections": [
{
"name": "[variables('privateEndpointName')]",
"properties": {
"privateLinkServiceId": "[resourceId('Microsoft.Sql/servers', variables('sqlServerName'))]",
"groupIds": [
"sqlServer"
]
}
}
]
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', variables('sqlServerName'))]",
"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), variables('subnet1Name'))]",
"[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]"
]
},
{
"type": "Microsoft.Network/privateDnsZones",
"apiVersion": "2020-06-01",
"name": "[variables('privateDnsZoneName')]",
"location": "global",
"properties": {},
"dependsOn": [
"[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]"
]
},
{
"type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks",
"apiVersion": "2020-06-01",
"name": "[format('{0}/{1}', variables('privateDnsZoneName'), format('{0}-link', variables('privateDnsZoneName')))]",
"location": "global",
"properties": {
"registrationEnabled": false,
"virtualNetwork": {
"id": "[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]"
}
},
"dependsOn": [
"[resourceId('Microsoft.Network/privateDnsZones', variables('privateDnsZoneName'))]",
"[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]"
]
},
{
"type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups",
"apiVersion": "2021-05-01",
"name": "[variables('pvtEndpointDnsGroupName')]",
"properties": {
"privateDnsZoneConfigs": [
{
"name": "config1",
"properties": {
"privateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', variables('privateDnsZoneName'))]"
}
}
]
},
"dependsOn": [
"[resourceId('Microsoft.Network/privateDnsZones', variables('privateDnsZoneName'))]",
"[resourceId('Microsoft.Network/privateEndpoints', variables('privateEndpointName'))]"
]
},
{
"type": "Microsoft.Network/publicIPAddresses",
"apiVersion": "2021-05-01",
"name": "[variables('publicIpAddressName')]",
"location": "[parameters('location')]",
"tags": {
"displayName": "[variables('publicIpAddressName')]"
},
"properties": {
"publicIPAllocationMethod": "Dynamic"
}
},
{
"type": "Microsoft.Network/networkInterfaces",
"apiVersion": "2021-05-01",
"name": "[variables('networkInterfaceName')]",
"location": "[parameters('location')]",
"tags": {
"displayName": "[variables('networkInterfaceName')]"
},
"properties": {
"ipConfigurations": [
{
"name": "ipConfig1",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIpAddressName'))]"
},
"subnet": {
"id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), variables('subnet1Name'))]"
}
}
}
]
},
"dependsOn": [
"[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIpAddressName'))]",
"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), variables('subnet1Name'))]",
"[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]"
]
},
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2021-11-01",
"name": "[variables('vmName')]",
"location": "[parameters('location')]",
"tags": {
"displayName": "[variables('vmName')]"
},
"properties": {
"hardwareProfile": {
"vmSize": "[parameters('VmSize')]"
},
"osProfile": {
"computerName": "[variables('vmName')]",
"adminUsername": "[parameters('vmAdminUsername')]",
"adminPassword": "[parameters('vmAdminPassword')]"
},
"storageProfile": {
"imageReference": {
"publisher": "MicrosoftWindowsServer",
"offer": "WindowsServer",
"sku": "2019-Datacenter",
"version": "latest"
},
"osDisk": {
"name": "[format('{0}OsDisk', variables('vmName'))]",
"caching": "ReadWrite",
"createOption": "FromImage",
"managedDisk": {
"storageAccountType": "[variables('osDiskType')]"
},
"diskSizeGB": 128
}
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]"
}
]
}
},
"dependsOn": [
"[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]"
]
}
]
}
De sjabloon definieert meerdere Azure-resources:
- Microsoft.Sql/servers: het exemplaar van SQL Database met de voorbeelddatabase.
- Microsoft.Sql/servers/databases: de voorbeelddatabase.
- Microsoft.Network/virtualNetworks: het virtuele netwerk waar het privé-eindpunt wordt geïmplementeerd.
- Microsoft.Network/privateEndpoints: het privé-eindpunt dat u gebruikt voor toegang tot het exemplaar van SQL Database.
- Microsoft.Network/privateDnsZones: de zone die u gebruikt om het IP-adres van het privé-eindpunt op te lossen.
- Microsoft.Network/privateDnsZones/virtualNetworkLinks
- Microsoft.Network/privateEndpoints/privateDnsZoneGroups: de zonegroep die u gebruikt om het privé-eindpunt te koppelen aan een privé-DNS-zone.
- Microsoft.Network/publicIpAddresses: het openbare IP-adres dat u gebruikt voor toegang tot de virtuele machine.
- Microsoft.Network/networkInterfaces: De netwerkinterface voor de virtuele machine.
- Microsoft.Compute/virtualMachines: de virtuele machine die u gebruikt om de verbinding van het privé-eindpunt met het exemplaar van SQL Database te testen.
De sjabloon implementeren
Implementeer de ARM-sjabloon als volgt in Azure:
Meld u aan bij Azure en open de ARM-sjabloon door hier de knop Implementeren in Azure te selecteren. De sjabloon maakt het privé-eindpunt, het exemplaar van SQL Database, de netwerkinfrastructuur en een virtuele machine die moet worden gevalideerd.
Selecteer uw resourcegroep of maak een nieuwe.
Voer de aanmeldingsnaam en het wachtwoord van de SQL-beheerder in.
Voer de gebruikersnaam en het wachtwoord van de beheerder van de virtuele machine in.
Lees de algemene voorwaarden. Als u akkoord gaat, selecteer ik akkoord met de bovenstaande voorwaarden en selecteer vervolgens Aankoop. De implementatie kan 20 minuten of langer duren.
De implementatie valideren
Notitie
De ARM-sjabloon genereert een unieke naam voor de virtuele machine myVm{uniekeid}-resource en voor de SQL Database sqlserver{uniekeid}-resource. Gebruik de voor u gegenereerde waarde in plaats van {uniekeid}.
Verbinding maken met een virtuele machine via internet
Maak als volgt verbinding met de VM myVm{uniqueid} via internet:
Voer in de zoekbalk van de portal myVm{uniekeid} in.
Selecteer Verbinding maken. Het venster Verbinding maken met virtuele machine wordt geopend.
Selecteer RDP-bestand downloaden. Azure maakt een RDP-bestand (Remote Desktop Protocol) en downloadt het naar uw computer.
Open het gedownloade RDP-bestand.
a. Selecteer Verbinding maken wanneer u hierom wordt gevraagd.
b. Voer de gebruikersnaam en het wachtwoord in die u hebt opgegeven bij het maken van de virtuele machine.Notitie
Mogelijk moet u Meer opties>selecteren. Gebruik een ander account om de referenties op te geven die u hebt ingevoerd bij het maken van de virtuele machine.
Selecteer OK.
Er wordt mogelijk een certificaatwaarschuwing weergegeven tijdens het aanmelden. Als dit het geval is, selecteert u Ja of Doorgaan.
Wanneer het VM-bureaublad wordt weergegeven, minimaliseert u het om terug te gaan naar het lokale bureaublad.
Privé-toegang tot de SQL Database-server vanuit de VM
Ga als volgt te werk om verbinding te maken met de SQL Database-server vanaf de VIRTUELE machine met behulp van het privé-eindpunt:
Open PowerShell op het extern bureaublad van myVM{uniqueid}.
Voer de volgende opdracht uit:
nslookup sqlserver{uniqueid}.database.windows.net
U ontvangt een bericht dat vergelijkbaar is met deze:
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
Installeer SQL Server Management Studio.
Ga als volgt te werk in het deelvenster Verbinding maken met de server :
- Selecteer database-engine voor servertype.
- Selecteer voor servernaam sqlserver{uniqueid}.database.windows.net.
- Voer bij Gebruikersnaam de gebruikersnaam in die u eerder hebt opgegeven.
- Voer voor Wachtwoord het wachtwoord in dat eerder is opgegeven.
- Als wachtwoord onthouden selecteert u Ja.
Selecteer Verbinding maken.
Selecteer Databases in het linkerdeelvenster. U kunt desgewenst sample-db maken of er een query op uitvoeren.
Sluit de externe bureaubladverbinding met myVm{uniekeid}.
Resources opschonen
Wanneer u de resources die u met het privé-eindpunt hebt gemaakt niet meer nodig hebt, verwijdert u de resourcegroep. Als u dit doet, worden het privé-eindpunt en alle gerelateerde resources verwijderd.
Voer de Remove-AzResourceGroup
cmdlet uit om de resourcegroep te verwijderen:
Remove-AzResourceGroup -Name <your resource group name>
Volgende stappen
Zie voor meer informatie over de services die ondersteuning bieden voor privé-eindpunten: