Snabbstart: Skapa en privat slutpunkt med hjälp av en ARM-mall
I den här snabbstarten använder du en Azure Resource Manager-mall (ARM-mall) för att skapa en privat slutpunkt.
En Azure Resource Manager-mall är en JSON-fil (JavaScript Object Notation) som definierar infrastrukturen och konfigurationen för projektet. Mallen använder deklarativ syntax. Du beskriver den avsedda distributionen utan att skriva sekvensen med programmeringskommandon för att skapa distributionen.
Du kan också skapa en privat slutpunkt med hjälp av Azure-portalen, Azure PowerShell eller Azure CLI.
Om din miljö uppfyller kraven och du är bekant med att använda ARM-mallar väljer du knappen Distribuera till Azure här. ARM-mallen öppnas i Azure-portalen.
Förutsättningar
Du behöver ett Azure-konto med en aktiv prenumeration. Om du inte redan har ett Azure-konto skapar du ett konto kostnadsfritt.
Granska mallen
Den här mallen skapar en privat slutpunkt för en instans av Azure SQL Database.
Den mall som den här snabbstarten använder kommer från Azure-snabbstartsmallar.
{
"$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'))]"
]
}
]
}
Mallen definierar flera Azure-resurser:
- Microsoft.Sql/servers: Instansen av SQL Database med exempeldatabasen.
- Microsoft.Sql/servers/databases: Exempeldatabasen.
- Microsoft.Network/virtualNetworks: Det virtuella nätverk där den privata slutpunkten distribueras.
- Microsoft.Network/privateEndpoints: Den privata slutpunkt som du använder för att komma åt instansen av SQL Database.
- Microsoft.Network/privateDnsZones: Den zon som du använder för att matcha ip-adressen för den privata slutpunkten.
- Microsoft.Network/privateDnsZones/virtualNetworkLinks
- Microsoft.Network/privateEndpoints/privateDnsZoneGroups: Den zongrupp som du använder för att associera den privata slutpunkten med en privat DNS-zon.
- Microsoft.Network/publicIpAddresses: Den offentliga IP-adress som du använder för att komma åt den virtuella datorn.
- Microsoft.Network/networkInterfaces: Nätverksgränssnittet för den virtuella datorn.
- Microsoft.Compute/virtualMachines: Den virtuella dator som du använder för att testa anslutningen för den privata slutpunkten till instansen av SQL Database.
Distribuera mallen
Distribuera ARM-mallen till Azure genom att göra följande:
Logga in på Azure och öppna ARM-mallen genom att välja knappen Distribuera till Azure här. Mallen skapar den privata slutpunkten, instansen av SQL Database, nätverksinfrastrukturen och en virtuell dator som ska verifieras.
Välj din resursgrupp eller skapa en ny.
Ange sql-administratörens inloggningsnamn och lösenord.
Ange användarnamnet och lösenordet för den virtuella datorns administratör.
Läs instruktionen allmänna villkor. Om du godkänner väljer du Jag godkänner de villkor som anges ovan och väljer sedan Köp. Distributionen kan ta 20 minuter eller längre att slutföra.
Verifiera distributionen
Kommentar
ARM-mallen genererar ett unikt namn för den virtuella datorn myVm{uniqueid} -resursen och för SQL Database sqlserver{uniqueid} -resursen. Ersätt det genererade värdet med {uniqueid}.
Ansluta till en virtuell dator från Internet
Anslut till den virtuella datorn myVm{uniqueid} från Internet genom att göra följande:
I portalens sökfält anger du myVm{uniqueid}.
Välj Anslut. Anslut till den virtuella datorn öppnas.
Välj Hämta RDP-fil. Azure skapar en RDP-fil (Remote Desktop Protocol) och laddar ned den till datorn.
Öppna den nedladdade RDP-filen.
a. Välj Anslut om du uppmanas att göra det.
b. Ange det användarnamn och lösenord som du angav när du skapade den virtuella datorn.Kommentar
Du kan behöva välja Fler alternativ>Använd ett annat konto för att ange de autentiseringsuppgifter som du angav när du skapade den virtuella datorn.
Välj OK.
Du kan få en certifikatvarning under inloggningen. Om så är fallet väljer du Ja eller Fortsätt.
När det virtuella datorskrivbordet visas minimerar du det så att det går tillbaka till det lokala skrivbordet.
Få åtkomst till SQL Database-servern privat från den virtuella datorn
Gör följande för att ansluta till SQL Database-servern från den virtuella datorn med hjälp av den privata slutpunkten:
Öppna PowerShell på fjärrskrivbordet för myVM{uniqueid}.
Kör följande kommando:
nslookup sqlserver{uniqueid}.database.windows.net
Du får ett meddelande som liknar det här:
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
Installera SQL Server Management Studio.
Gör följande i fönstret Anslut till server :
- Som Servertyp väljer du Databasmotor.
- Som Servernamn väljer du sqlserver{uniqueid}.database.windows.net.
- Som Användarnamn anger du det användarnamn som angavs tidigare.
- För Lösenord anger du det lösenord som angavs tidigare.
- För Kom ihåg lösenord väljer du Ja.
Välj Anslut.
Välj Databaser i den vänstra rutan. Du kan också skapa eller fråga efter information från sample-db.
Stäng fjärrskrivbordsanslutningen till myVm{uniqueid}.
Rensa resurser
När du inte längre behöver de resurser som du skapade med den privata slutpunkten tar du bort resursgruppen. Detta tar bort den privata slutpunkten och alla relaterade resurser.
Om du vill ta bort resursgruppen kör du cmdleten Remove-AzResourceGroup
:
Remove-AzResourceGroup -Name <your resource group name>
Nästa steg
Mer information om de tjänster som stöder privata slutpunkter finns i: