Quickstart: Een privé-eindpunt maken met Bicep
In deze quickstart gebruikt u Bicep om een privé-eindpunt te maken.
Bicep is een domeinspecifieke taal (DSL) die declaratieve syntaxis gebruikt om Azure-resources te implementeren. Deze taal voorziet in een beknopte syntaxis, betrouwbare typeveiligheid en ondersteuning voor hergebruik van code. Bicep biedt de beste ontwerpervaring voor uw infrastructuur als code-oplossingen in Azure.
U kunt ook een privé-eindpunt maken met behulp van Azure Portal, Azure PowerShell, de Azure CLI of een Azure Resource Manager-sjabloon.
Vereisten
U hebt een Azure-account met een actief abonnement nodig. Als u nog geen Azure-account hebt, maakt u gratis een account.
Het Bicep-bestand controleren
Met dit Bicep-bestand maakt u een privé-eindpunt voor een exemplaar van Azure SQL Database.
Het Bicep-bestand dat in deze quickstart wordt gebruikt, is afkomstig van Azure Quickstart-sjablonen.
@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
}
]
}
}
}
Het Bicep-bestand definieert meerdere Azure-resources:
- Microsoft.Sql/servers: het exemplaar van SQL Database met de voorbeelddatabase.
- Microsoft.Sql/servers/databases: de voorbeelddatabase.
- Microsoft.Network/virtualNetworks: het virtuele netwerk waar het privé-eindpunt wordt geïmplementeerd.
- Microsoft.Network/privateEndpoints: het privé-eindpunt dat u gebruikt voor toegang tot het exemplaar van SQL Database.
- Microsoft.Network/privateDnsZones: de zone die u gebruikt om het IP-adres van het privé-eindpunt op te lossen.
- Microsoft.Network/privateDnsZones/virtualNetworkLinks
- Microsoft.Network/privateEndpoints/privateDnsZoneGroups: de zonegroep die u gebruikt om het privé-eindpunt te koppelen aan een privé-DNS-zone.
- Microsoft.Network/publicIpAddresses: het openbare IP-adres dat u gebruikt voor toegang tot de virtuele machine.
- Microsoft.Network/networkInterfaces: De netwerkinterface voor de virtuele machine.
- Microsoft.Compute/virtualMachines: de virtuele machine die u gebruikt om de verbinding van het privé-eindpunt met het exemplaar van SQL Database te testen.
Het Bicep-bestand implementeren
Sla het Bicep-bestand op als main.bicep op uw lokale computer.
Implementeer het Bicep-bestand met behulp van Azure CLI of 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>
Notitie
Vervang <beheerdersaanmelding> door de gebruikersnaam voor de logische SQL-server. Vervang <vm-aanmelding> door de gebruikersnaam voor de virtuele machine. U wordt gevraagd om sqlAdministratorLoginPassword in te voeren. U wordt ook gevraagd om vmAdminPassword in te voeren. Dit moet ten minste 12 tekens lang zijn en ten minste één kleine letter en hoofdletter en één speciaal teken bevatten.
Wanneer de implementatie is voltooid, ziet u een bericht waarin wordt aangegeven dat de implementatie is voltooid.
De implementatie valideren
Notitie
Het Bicep-bestand genereert een unieke naam voor de resource myVm{uniqueid} van de virtuele machine en voor de SQL Database sqlserver{uniqueid} -resource. Gebruik de voor u gegenereerde waarde in plaats van {uniekeid}.
Verbinding maken met een virtuele machine via internet
Maak als volgt verbinding met de VM myVm{uniqueid} via internet:
Voer in de zoekbalk van Azure Portal myVm{uniqueid} in.
Selecteer Verbinding maken. Het venster Verbinding maken met virtuele machine wordt geopend.
Selecteer RDP-bestand downloaden. Azure maakt een RDP-bestand (Remote Desktop Protocol) en downloadt het naar uw computer.
Open het gedownloade RDP-bestand.
a. Selecteer Verbinding maken wanneer u hierom wordt gevraagd.
b. Voer de gebruikersnaam en het wachtwoord in die u hebt opgegeven bij het maken van de virtuele machine.Notitie
Mogelijk moet u Meer opties>selecteren. Gebruik een ander account om de referenties op te geven die u hebt ingevoerd bij het maken van de virtuele machine.
Selecteer OK.
Er wordt mogelijk een certificaatwaarschuwing weergegeven tijdens het aanmelden. Als dit het geval is, selecteert u Ja of Doorgaan.
Wanneer het VM-bureaublad wordt weergegeven, minimaliseert u het om terug te gaan naar het lokale bureaublad.
Privé-toegang tot de SQL Database-server vanuit de VM
Ga als volgt te werk om verbinding te maken met de SQL Database-server vanaf de VIRTUELE machine met behulp van het privé-eindpunt:
Open PowerShell op het extern bureaublad van myVM{uniqueid}.
Voer de volgende opdracht uit:
nslookup sqlserver{uniqueid}.database.windows.net
U ontvangt een bericht dat vergelijkbaar is met deze:
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
Installeer SQL Server Management Studio.
Ga als volgt te werk in het deelvenster Verbinding maken met de server :
- Selecteer database-engine voor servertype.
- Selecteer voor servernaam sqlserver{uniqueid}.database.windows.net.
- Voer bij Gebruikersnaam de gebruikersnaam in die u eerder hebt opgegeven.
- Voer voor Wachtwoord het wachtwoord in dat eerder is opgegeven.
- Als wachtwoord onthouden selecteert u Ja.
Selecteer Verbinding maken.
Selecteer Databases in het linkerdeelvenster. U kunt desgewenst sample-db maken of er een query op uitvoeren.
Sluit de externe bureaubladverbinding met myVm{uniekeid}.
Resources opschonen
Wanneer u de resources die u met de Private Link-service hebt gemaakt niet meer nodig hebt, verwijdert u de resourcegroep. Hiermee verwijdert u de Private Link-service en alle gerelateerde resources.
az group delete --name exampleRG
Volgende stappen
Zie voor meer informatie over de services die ondersteuning bieden voor privé-eindpunten: