Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam panduan memulai cepat ini, Anda akan menggunakan templat Azure Resource Manager (ARM template) 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 diinginkan tanpa menulis urutan perintah pemrograman untuk menyusun 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 ARM akan terbuka di portal Azure.
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 panduan cepat ini berasal dari Templat Azure Quickstart.
{
"$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:
- Microsoft.Sql/server: Instans SQL Database dengan database sampel.
- Microsoft.Sql/servers/databases: Database contoh.
- Microsoft.Network/virtualNetworks: Jaringan virtual tempat titik akhir privat diterapkan.
- Microsoft.Network/privateEndpoints: Titik akhir privati yang Anda gunakan untuk mengakses instans Azure SQL Database.
- Microsoft.Network/privateDnsZones: Zona yang digunakan untuk mengatasi alamat IP titik akhir privat.
- Microsoft.Network/privateDnsZones/virtualNetworkLinks
- Microsoft.Network/privateEndpoints/privateDnsZoneGroups: Grup zona yang digunakan untuk mengaitkan titik akhir privat dengan zona DNS privat.
- Microsoft.Network/publicIpAddresses: Alamat IP publik yang digunakan untuk mengakses mesin virtual.
- Microsoft.Network/networkInterfaces: Antarmuka jaringan untuk komputer virtual.
- Microsoft.Compute/virtualMachines: Mesin virtual yang Anda gunakan untuk menguji koneksi titik akhir privat ke instans SQL Database.
Menyebarkan templat
Sebarkan templat ARM ke Azure dengan mengikuti langkah-langkah berikut:
Masuk ke Azure dan buka template ARM dengan memilih tombol Terapkan ke Azure di sini. Templat membuat titik akhir privat, instans SQL Database, infrastruktur jaringan, dan mesin virtual untuk divalidasi.
Pilih grup sumber daya Anda, atau buat yang baru.
Masukkan nama dan kata sandi masuk administrator SQL.
Masukkan nama pengguna dan kata sandi administrator mesin virtual.
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 untuk diselesaikan.
Validasikan penggelaran
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:
Di bilah pencarian portal, masukkan myVm{uniqueid}.
Pilih Sambungkan. Sambungkan ke komputer virtual terbuka.
Pilih Unduh File RDP. Azure membuat file Protokol Desktop Jauh (RDP) dan mengunduhnya ke komputer Anda.
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.
Pilih OK.
Anda mungkin menerima peringatan sertifikat selama proses masuk. Jika menerima, pilih Ya atau Lanjutkan.
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:
Di Desktop Jauh myVM{uniqueid}, buka PowerShell.
Jalankan perintah berikut:
nslookup sqlserver{uniqueid}.database.windows.netAnda 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.netInstal SQL Server Management Studio.
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.
Pilih Sambungkan.
Di panel sebelah kiri, pilih Database. Anda memiliki opsi untuk membuat atau meminta informasi dari sample-db.
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: