Snabbstart: Skapa en privat slutpunkt med Bicep
I den här snabbstarten använder du Bicep för att skapa en privat slutpunkt.
Bicep är ett domänspecifikt språk (DSL) som använder deklarativ syntax för att distribuera Azure-resurser. Det ger koncis syntax, tillförlitlig typsäkerhet och stöd för återanvändning av kod. Bicep erbjuder den bästa redigeringsupplevelsen för dina infrastruktur-som-kod-lösningar i Azure.
Du kan också skapa en privat slutpunkt med hjälp av Azure-portalen, Azure PowerShell, Azure CLI eller en Azure Resource Manager-mall.
Förutsättningar
Du behöver ett Azure-konto med en aktiv prenumeration. Om du inte redan har ett Azure-konto skapar du ett konto kostnadsfritt.
Granska Bicep-filen
Den här Bicep-filen skapar en privat slutpunkt för en instans av Azure SQL Database.
Bicep-filen som den här snabbstarten använder kommer från Azure-snabbstartsmallar.
@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
}
]
}
}
}
Bicep-filen definierar flera Azure-resurser:
- Microsoft.Sql/servers: Instansen av SQL Database med exempeldatabasen.
- Microsoft.Sql/servers/databases: Exempeldatabasen.
- Microsoft.Network/virtualNetworks: Det virtuella nätverk där den privata slutpunkten distribueras.
- Microsoft.Network/privateEndpoints: Den privata slutpunkt som du använder för att komma åt instansen av SQL Database.
- Microsoft.Network/privateDnsZones: Den zon som du använder för att matcha ip-adressen för den privata slutpunkten.
- Microsoft.Network/privateDnsZones/virtualNetworkLinks
- Microsoft.Network/privateEndpoints/privateDnsZoneGroups: Den zongrupp som du använder för att associera den privata slutpunkten med en privat DNS-zon.
- Microsoft.Network/publicIpAddresses: Den offentliga IP-adress som du använder för att komma åt den virtuella datorn.
- Microsoft.Network/networkInterfaces: Nätverksgränssnittet för den virtuella datorn.
- Microsoft.Compute/virtualMachines: Den virtuella dator som du använder för att testa anslutningen för den privata slutpunkten till instansen av SQL Database.
Distribuera Bicep-filen
Spara Bicep-filen som main.bicep på den lokala datorn.
Distribuera Bicep-filen med antingen Azure CLI eller 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>
Kommentar
Ersätt <administratörsinloggning> med användarnamnet för den logiska SQL-servern. Ersätt <vm-login> med användarnamnet för den virtuella datorn. Du uppmanas att ange sqlAdministratorLoginPassword. Du uppmanas också att ange vmAdminPassword, som måste vara minst 12 tecken långt och innehålla minst ett gemener och versaler och ett specialtecken.
När distributionen är klar bör du se ett meddelande som anger att distributionen lyckades.
Verifiera distributionen
Kommentar
Bicep-filen genererar ett unikt namn för den virtuella datorn myVm{uniqueid} -resursen och för SQL Database sqlserver{uniqueid} -resursen. Ersätt det genererade värdet med {uniqueid}.
Ansluta till en virtuell dator från Internet
Anslut till den virtuella datorn myVm{uniqueid} från Internet genom att göra följande:
I sökfältet i Azure-portalen anger du myVm{uniqueid}.
Välj Anslut. Anslut till den virtuella datorn öppnas.
Välj Hämta RDP-fil. Azure skapar en RDP-fil (Remote Desktop Protocol) och laddar ned den till datorn.
Öppna den nedladdade RDP-filen.
a. Välj Anslut om du uppmanas att göra det.
b. Ange det användarnamn och lösenord som du angav när du skapade den virtuella datorn.Kommentar
Du kan behöva välja Fler alternativ>Använd ett annat konto för att ange de autentiseringsuppgifter som du angav när du skapade den virtuella datorn.
Välj OK.
Du kan få en certifikatvarning under inloggningen. Om så är fallet väljer du Ja eller Fortsätt.
När det virtuella datorskrivbordet visas minimerar du det så att det går tillbaka till det lokala skrivbordet.
Få åtkomst till SQL Database-servern privat från den virtuella datorn
Gör följande för att ansluta till SQL Database-servern från den virtuella datorn med hjälp av den privata slutpunkten:
Öppna PowerShell på fjärrskrivbordet för myVM{uniqueid}.
Kör följande kommando:
nslookup sqlserver{uniqueid}.database.windows.net
Du får ett meddelande som liknar det här:
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
Installera SQL Server Management Studio.
Gör följande i fönstret Anslut till server :
- Som Servertyp väljer du Databasmotor.
- Som Servernamn väljer du sqlserver{uniqueid}.database.windows.net.
- Som Användarnamn anger du det användarnamn som angavs tidigare.
- För Lösenord anger du det lösenord som angavs tidigare.
- För Kom ihåg lösenord väljer du Ja.
Välj Anslut.
Välj Databaser i den vänstra rutan. Du kan också skapa eller fråga efter information från sample-db.
Stäng fjärrskrivbordsanslutningen till myVm{uniqueid}.
Rensa resurser
När du inte längre behöver de resurser som du skapade med tjänsten private link tar du bort resursgruppen. Detta tar bort den privata länktjänsten och alla relaterade resurser.
az group delete --name exampleRG
Nästa steg
Mer information om de tjänster som stöder privata slutpunkter finns i: