Bagikan melalui


Mulai cepat: Membuat titik akhir privat dengan menggunakan templat ARM

Dalam mulai cepat ini, Anda menggunakan templat Azure Resource Manager (templat Azure Resource Manager) untuk membuat titik akhir privat.

Templat Azure Resource Manager adalah file JavaScript Object Notation (JSON) yang menentukan infrastruktur dan konfigurasi untuk proyek Anda. Template tersebut menggunakan sintaksis deklaratif. Anda menjelaskan penyebaran yang Dimaksudkan tanpa menulis urutan perintah pemrograman untuk membuat penyebaran.

Anda dapat membuat titik akhir privat dengan menggunakanportal Microsoft Azure, Azure PowerShell, atau Azure CLI.

Jika lingkungan Anda memenuhi prasyarat dan Anda sudah memahami cara menggunakan templat Azure Resource Manager, pilih tombol Sebarkan ke Azure di sini. Templat Azure Resource Manager akan terbuka di portal Microsoft Azure.

Tombol untuk menyebarkan templat Resource Manager ke Azure.

Diagram sumber daya yang dibuat dalam mulai cepat titik akhir privat.

Prasyarat

Anda memerlukan akun Azure dengan langganan aktif. Jika Anda belum memiliki akun Azure, buat akun secara gratis.

Meninjau templat

Templat ini membuat titik akhir privat untuk instans Azure SQL Database.

Template yang digunakan mulai cepat ini berasal dariTemplat Azure Mulai Cepat.

{
  "$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'))]"
      ]
    }
  ]
}

Templat ini menentukan beberapa sumber daya Azure:

Menyebarkan templat

Sebarkan templat Azure Resource Manager ke Azure dengan melakukan hal berikut:

  1. Masuk ke Azure dan buka templat Azure Resource Manager dengan memilih tombolSebarkan ke Azure di sini. Templat membuat titik akhir privat, instans Azure SQL Database, infrastruktur jaringan, dan mesin virtual untuk divalidasi.

    Tombol untuk menyebarkan templat Resource Manager ke Azure.

  2. Pilih grup sumber daya Anda, atau buat yang baru.

  3. Masukkan nama dan kata sandi masuk administrator SQL.

  4. Masukkan nama pengguna dan kata sandi administrator mesin virtual.

  5. Baca pernyataan syarat dan ketentuan. Jika Anda setuju, pilih Saya menyetujui ketentuan yang dinyatakan di atas, dan lalu pilih Beli. Penyebaran dapat memakan waktu 20 menit atau lebih lama sampai selesai.

Memvalidasi penyebaran

Catatan

Templat ARM menghasilkan nama unik untuk sumber daya komputer virtual myVm{uniqueid}, dan untuk sumber daya SQL Database sqlserver{uniqueid}. Ganti nilai yang Anda hasilkan dengan {uniqueid}.

Menyambungkan ke Komputer Virtual dari internet

Sambungkan ke mesin virtual myVm{uniqueid} dari internet sebagai berikut:

  1. Di bilah pencarian portal, masukkan myVm{uniqueid}.

  2. Pilih Sambungkan. Sambungkan ke komputer virtual terbuka.

  3. Pilih Unduh File RDP. Azure membuat file Protokol Desktop Jauh (RDP) dan mengunduhnya ke komputer Anda.

  4. Membuka file RDP yang diunduh.

    a. Ketika diminta, pilih Hubungkan.
    b. Masukkan nama pengguna dan kata sandi yang Anda tentukan saat membuat mesin virtual.

    Catatan

    Anda mungkin perlu memilih Pilihan lainnya>Gunakan akun yang berbeda, untuk menentukan informasi masuk yang Anda masukkan saat membuat mesin virtual.

  5. Pilih OK.

    Anda mungkin menerima peringatan sertifikat selama proses masuk. Jika menerima, pilih Ya atau Lanjutkan.

  6. Setelah desktop VM muncul, kecilkan untuk kembali ke desktop lokal Anda.

Mengakses server SQL Database secara privat dari VM

Untuk menyambungkan ke server Microsoft Azure SQL Database dari mesin virtual menggunakan titik akhir privat, lakukan hal berikut:

  1. Di Desktop Jauh myVM{uniqueid}, buka PowerShell.

  2. Jalankan perintah berikut:

    nslookup sqlserver{uniqueid}.database.windows.net

    Anda akan menerima pesan yang mirip dengan yang berikut:

      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. Instal SQL Server Management Studio.

  4. Pada panel Sambungkan ke server, lakukan hal berikut:

    • Untuk Jenis server: Pilih Mesin Database.
    • Untuk Nama server: Pilih sqlserver{uniqueid}.database.windows.net.
    • Untuk Nama Pengguna, masukkan nama pengguna yang disediakan sebelumnya.
    • Untuk Kata Sandi, masukkan kata sandi yang disediakan sebelumnya.
    • Untuk Ingat kata sandi, PilihYa.
  5. Pilih Sambungkan.

  6. Di panel sebelah kiri, pilih Database. Anda memiliki opsi untuk membuat atau meminta informasi dari sample-db.

  7. Tutup sambungan Desktop Jauh ke myVm{uniqueid}.

Membersihkan sumber daya

Saat Anda tidak lagi membutuhkan sumber daya yang Anda buat dengan titik akhir pribadi, hapus grup sumber daya. Ini menghapus titik akhir privat dan semua sumber daya terkait.

Untuk menghapus grup sumber daya tersebut, jalankan cmdlet Remove-AzResourceGroup:

Remove-AzResourceGroup -Name <your resource group name>

Langkah berikutnya

Untuk informasi selengkapnya tentang layanan yang mendukung titik akhir privat, lihat: