Rychlý start: Vytvoření privátního koncového bodu pomocí šablony ARM
V tomto rychlém startu použijete šablonu Azure Resource Manageru (šablonu ARM) k vytvoření privátního koncového bodu.
Šablona Azure Resource Manageru je soubor JSON (JavaScript Object Notation), který definuje infrastrukturu a konfiguraci projektu. Tato šablona používá deklarativní syntaxi. Popíšete zamýšlené nasazení, aniž byste museli psát posloupnost programovacích příkazů pro vytvoření nasazení.
Privátní koncový bod můžete vytvořit také pomocí webu Azure Portal, Azure PowerShellu nebo Azure CLI.
Pokud vaše prostředí splňuje požadavky a znáte použití šablon ARM, vyberte tady tlačítko Nasadit do Azure . Šablona ARM se otevře na webu Azure Portal.
Požadavky
Potřebujete účet Azure s aktivním předplatným. Pokud ještě účet Azure nemáte, vytvořte si ho zdarma.
Kontrola šablony
Tato šablona vytvoří privátní koncový bod pro instanci služby Azure SQL Database.
Šablona, kterou tento rychlý start používá, je ze šablon Rychlého startu Azure.
{
"$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'))]"
]
}
]
}
Šablona definuje více prostředků Azure:
- Microsoft.Sql/servers: Instance služby SQL Database s ukázkovou databází.
- Microsoft.Sql/servers/databases: Ukázková databáze.
- Microsoft.Network/virtualNetworks: Virtuální síť, ve které je nasazený privátní koncový bod.
- Microsoft.Network/privateEndpoints: Privátní koncový bod, který používáte pro přístup k instanci služby SQL Database.
- Microsoft.Network/privateDnsZones: Zóna, kterou používáte k překladu IP adresy privátního koncového bodu.
- Microsoft.Network/privateDnsZones/virtualNetworkLinks
- Microsoft.Network/privateEndpoints/privateDnsZoneGroups: Skupina zón, kterou používáte k přidružení privátního koncového bodu k privátní zóně DNS.
- Microsoft.Network/publicIpAddresses: Veřejná IP adresa, kterou používáte pro přístup k virtuálnímu počítači.
- Microsoft.Network/networkInterfaces: Síťové rozhraní virtuálního počítače.
- Microsoft.Compute/virtualMachines: Virtuální počítač, který používáte k otestování připojení privátního koncového bodu k instanci služby SQL Database.
Nasazení šablony
Nasaďte šablonu ARM do Azure následujícím způsobem:
Přihlaste se k Azure a otevřete šablonu ARM výběrem tlačítka Nasadit do Azure . Šablona vytvoří privátní koncový bod, instanci služby SQL Database, síťovou infrastrukturu a virtuální počítač, který se má ověřit.
Vyberte skupinu prostředků nebo vytvořte novou.
Zadejte přihlašovací jméno a heslo správce SQL.
Zadejte uživatelské jméno a heslo správce virtuálního počítače.
Přečtěte si prohlášení o podmínkách a ujednáních. Pokud souhlasíte, vyberte Souhlasím s podmínkami a ujednáními uvedenými výše a pak vyberte Koupit. Dokončení nasazení může trvat 20 minut nebo déle.
Ověření nasazení
Poznámka:
Šablona ARM vygeneruje jedinečný název prostředku myVm{uniqueid} virtuálního počítače a pro prostředek SQL Database{uniqueid }. Nahraďte vygenerovanou hodnotu { uniqueid}.
Připojení k virtuálnímu počítači z internetu
Připojte se k virtuálnímu počítači myVm{uniqueid} z internetu následujícím způsobem:
Na panelu hledání portálu zadejte myVm{uniqueid}.
Vyberte Připojit. Otevře se připojení k virtuálnímu počítači .
Vyberte Stáhnout soubor RDP. Azure vytvoří soubor protokolu RDP (Remote Desktop Protocol) a stáhne ho do počítače.
Otevřete stažený soubor RDP.
a. Pokud se zobrazí výzva, vyberte Připojit.
b. Zadejte uživatelské jméno a heslo, které jste zadali při vytváření virtuálního počítače.Poznámka:
Možná budete muset vybrat Další volby>Použít jiný účet k zadání přihlašovacích údajů, které jste zadali při vytváření virtuálního počítače.
Vyberte OK.
Při přihlášení se může zobrazit upozornění na certifikát. Pokud to uděláte, vyberte Ano nebo Pokračovat.
Jakmile se zobrazí plocha virtuálního počítače, minimalizujte ji, abyste se vrátili na místní plochu.
Privátní přístup k serveru SQL Database z virtuálního počítače
Pokud se chcete z virtuálního počítače připojit k serveru SLUŽBY SQL Database pomocí privátního koncového bodu, postupujte takto:
Na vzdálené ploše virtuálního počítače myVM{uniqueid} otevřete PowerShell.
Spusťte následující příkaz:
nslookup sqlserver{uniqueid}.database.windows.net
Zobrazí se zpráva podobná této:
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
Nainstalujte SQL Server Management Studio.
V podokně Připojit k serveru postupujte takto:
- Jako typ serveru vyberte Databázový stroj.
- Jako název serveru vyberte sqlserver{uniqueid}.database.windows.net.
- Do pole Uživatelské jméno zadejte uživatelské jméno, které jste zadali dříve.
- Jako heslo zadejte heslo, které jste zadali dříve.
- Pokud si chcete zapamatovat heslo, vyberte Ano.
Vyberte Připojit.
V levém podokně vyberte Databáze. Volitelně můžete vytvořit nebo dotazovat informace z ukázkové databáze.
Zavřete připojení ke vzdálené ploše k virtuálnímu počítači myVm{uniqueid}.
Vyčištění prostředků
Pokud už nepotřebujete prostředky, které jste vytvořili pomocí privátního koncového bodu, odstraňte skupinu prostředků. Tím odeberete privátní koncový bod a všechny související prostředky.
Pokud chcete odstranit skupinu prostředků, spusťte rutinu Remove-AzResourceGroup
:
Remove-AzResourceGroup -Name <your resource group name>
Další kroky
Další informace o službách, které podporují privátní koncové body, najdete tady: