Mulai cepat: Membuat titik akhir privat menggunakan Bicep
Dalam panduan mulai cepat ini, Anda akan menggunakan Bicep untuk membuat layanan titik akhir privat.
Bicep adalah bahasa pemrogram khusus domain (DSL) yang menggunakan sintaks deklaratif untuk menyebarkan sumber daya Azure. Bicep menyediakan sintaks ringkas, keamanan jenis yang andal, dan dukungan untuk penggunaan kembali kode. Bicep menawarkan pengalaman penulisan terbaik untuk solusi infrastructure-as-code di Azure.
Anda juga dapat membuat titik akhir privat dengan menggunakanportal Microsoft Azure, Azure PowerShell, Azure CLI atau Templat Azure Resource Manager.
Prasyarat
Anda memerlukan akun Azure dengan langganan aktif. Jika Anda belum memiliki akun Azure, buat akun secara gratis.
Tinjau file Bicep
File Bicep ini membuat titik akhir privat untuk instans Azure SQL Database.
File Bicep yang digunakan dalam mulai cepat ini berasal dariTemplat Mulai Cepat Azure.
@description('The administrator username of the SQL logical server')
param sqlAdministratorLogin string
@description('The administrator password of the SQL logical server.')
@secure()
param sqlAdministratorLoginPassword string
@description('Username for the Virtual Machine.')
param vmAdminUsername string
@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)')
@secure()
param vmAdminPassword string
@description('The size of the VM')
param VmSize string = 'Standard_D2_v3'
@description('Location for all resources.')
param location string = resourceGroup().location
var vnetName = 'myVirtualNetwork'
var vnetAddressPrefix = '10.0.0.0/16'
var subnet1Prefix = '10.0.0.0/24'
var subnet1Name = 'mySubnet'
var sqlServerName = 'sqlserver${uniqueString(resourceGroup().id)}'
var databaseName = '${sqlServerName}/sample-db'
var privateEndpointName = 'myPrivateEndpoint'
var privateDnsZoneName = 'privatelink${environment().suffixes.sqlServerHostname}'
var pvtEndpointDnsGroupName = '${privateEndpointName}/mydnsgroupname'
var vmName = take('myVm${uniqueString(resourceGroup().id)}', 15)
var publicIpAddressName = '${vmName}PublicIP'
var networkInterfaceName = '${vmName}NetInt'
var osDiskType = 'StandardSSD_LRS'
resource sqlServer 'Microsoft.Sql/servers@2021-11-01-preview' = {
name: sqlServerName
location: location
tags: {
displayName: sqlServerName
}
properties: {
administratorLogin: sqlAdministratorLogin
administratorLoginPassword: sqlAdministratorLoginPassword
version: '12.0'
publicNetworkAccess: 'Disabled'
}
}
resource database 'Microsoft.Sql/servers/databases@2021-11-01-preview' = {
name: databaseName
location: location
sku: {
name: 'Basic'
tier: 'Basic'
capacity: 5
}
tags: {
displayName: databaseName
}
properties: {
collation: 'SQL_Latin1_General_CP1_CI_AS'
maxSizeBytes: 104857600
sampleName: 'AdventureWorksLT'
}
dependsOn: [
sqlServer
]
}
resource vnet 'Microsoft.Network/virtualNetworks@2021-05-01' = {
name: vnetName
location: location
properties: {
addressSpace: {
addressPrefixes: [
vnetAddressPrefix
]
}
}
}
resource subnet 'Microsoft.Network/virtualNetworks/subnets@2021-05-01' = {
parent: vnet
name: subnet1Name
properties: {
addressPrefix: subnet1Prefix
privateEndpointNetworkPolicies: 'Disabled'
}
}
resource privateEndpoint 'Microsoft.Network/privateEndpoints@2021-05-01' = {
name: privateEndpointName
location: location
properties: {
subnet: {
id: subnet.id
}
privateLinkServiceConnections: [
{
name: privateEndpointName
properties: {
privateLinkServiceId: sqlServer.id
groupIds: [
'sqlServer'
]
}
}
]
}
dependsOn: [
vnet
]
}
resource privateDnsZone 'Microsoft.Network/privateDnsZones@2020-06-01' = {
name: privateDnsZoneName
location: 'global'
properties: {}
dependsOn: [
vnet
]
}
resource privateDnsZoneLink 'Microsoft.Network/privateDnsZones/virtualNetworkLinks@2020-06-01' = {
parent: privateDnsZone
name: '${privateDnsZoneName}-link'
location: 'global'
properties: {
registrationEnabled: false
virtualNetwork: {
id: vnet.id
}
}
}
resource pvtEndpointDnsGroup 'Microsoft.Network/privateEndpoints/privateDnsZoneGroups@2021-05-01' = {
name: pvtEndpointDnsGroupName
properties: {
privateDnsZoneConfigs: [
{
name: 'config1'
properties: {
privateDnsZoneId: privateDnsZone.id
}
}
]
}
dependsOn: [
privateEndpoint
]
}
resource publicIpAddress 'Microsoft.Network/publicIPAddresses@2021-05-01' = {
name: publicIpAddressName
location: location
tags: {
displayName: publicIpAddressName
}
properties: {
publicIPAllocationMethod: 'Dynamic'
}
}
resource networkInterface 'Microsoft.Network/networkInterfaces@2021-05-01' = {
name: networkInterfaceName
location: location
tags: {
displayName: networkInterfaceName
}
properties: {
ipConfigurations: [
{
name: 'ipConfig1'
properties: {
privateIPAllocationMethod: 'Dynamic'
publicIPAddress: {
id: publicIpAddress.id
}
subnet: {
id: subnet.id
}
}
}
]
}
dependsOn: [
vnet
]
}
resource vm 'Microsoft.Compute/virtualMachines@2021-11-01' = {
name: vmName
location: location
tags: {
displayName: vmName
}
properties: {
hardwareProfile: {
vmSize: VmSize
}
osProfile: {
computerName: vmName
adminUsername: vmAdminUsername
adminPassword: vmAdminPassword
}
storageProfile: {
imageReference: {
publisher: 'MicrosoftWindowsServer'
offer: 'WindowsServer'
sku: '2019-Datacenter'
version: 'latest'
}
osDisk: {
name: '${vmName}OsDisk'
caching: 'ReadWrite'
createOption: 'FromImage'
managedDisk: {
storageAccountType: osDiskType
}
diskSizeGB: 128
}
}
networkProfile: {
networkInterfaces: [
{
id: networkInterface.id
}
]
}
}
}
File Bicep menentukan beberapa sumber daya Azure:
- Microsoft.Sql/server: Instans SQL Database dengan database sampel.
- Microsoft.Sql/server/databases: Database sampel.
- Microsoft.Network/virtualNetworks: Jaringan virtual tempat titik akhir privat disebarkan.
- 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 digunakan untuk menguji koneksi privat dengan titik akhir privat ke instans Azure SQL Database.
Menerapkan file Bicep
Simpan file Bicep sebagai main.bicep ke penyimpanan lokal komputer Anda.
Sebarkan file Bicep menggunakan Azure CLI atau Azure PowerShell.
az group create --name exampleRG --location eastus az deployment group create --resource-group exampleRG --template-file main.bicep --parameters sqlAdministratorLogin=<admin-login> vmAdminUsername=<vm-login>
Catatan
Ganti <masuk-admin> dengan nama pengguna server logis SQL. Ganti <masuk-vm> dengan nama pengguna mesin virtual. Anda akan diminta untuk memasukkan sqlAdministratorLoginPassword. Anda juga akan diminta untuk memasukkan vmAdminPassword, yang panjangnya harus minimal 12 karakter dan berisi setidaknya satu karakter huruf kecil dan huruf besar dan satu karakter khusus.
Setelah penyebaran selesai, Anda akan melihat pesan yang menunjukkan penyebaran berhasil.
Memvalidasi penyebaran
Catatan
File Bicep menghasilkan nama unik untuk sumber daya mesin 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 Microsoft Azure, 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.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
Instal 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 memerlukan sumber daya yang Anda buat dengan layanan link privat, hapus grup sumber daya. Ini akan menghapus layanan tautan pribadi dan semua sumber daya terkait.
az group delete --name exampleRG
Langkah berikutnya
Untuk informasi selengkapnya tentang layanan yang mendukung titik akhir privat, lihat: