Sdílet prostřednictvím


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.

Tlačítko pro nasazení šablony Resource Manageru do Azure

Diagram prostředků vytvořených v rychlém startu privátního koncového bodu

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:

Nasazení šablony

Nasaďte šablonu ARM do Azure následujícím způsobem:

  1. 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.

    Tlačítko pro nasazení šablony Resource Manageru do Azure

  2. Vyberte skupinu prostředků nebo vytvořte novou.

  3. Zadejte přihlašovací jméno a heslo správce SQL.

  4. Zadejte uživatelské jméno a heslo správce virtuálního počítače.

  5. 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:

  1. Na panelu hledání portálu zadejte myVm{uniqueid}.

  2. Vyberte Připojit. Otevře se připojení k virtuálnímu počítači .

  3. Vyberte Stáhnout soubor RDP. Azure vytvoří soubor protokolu RDP (Remote Desktop Protocol) a stáhne ho do počítače.

  4. 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.

  5. 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.

  6. 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:

  1. Na vzdálené ploše virtuálního počítače myVM{uniqueid} otevřete PowerShell.

  2. 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
    
  3. Nainstalujte SQL Server Management Studio.

  4. 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.
  5. Vyberte Připojit.

  6. V levém podokně vyberte Databáze. Volitelně můžete vytvořit nebo dotazovat informace z ukázkové databáze.

  7. 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: