Schnellstart: Erstellen eines privaten Endpunkts mithilfe von Bicep
In diesem Schnellstart verwenden Sie Bicep zum Erstellen eines privaten Endpunkts.
Bicep ist eine domänenspezifische Sprache (Domain-Specific Language, DSL), die eine deklarative Syntax zur Bereitstellung von Azure-Ressourcen verwendet. Sie bietet eine präzise Syntax, zuverlässige Typsicherheit und Unterstützung für die Wiederverwendung von Code. Bicep bietet die beste Form der Erstellung für Ihre Infrastructure-as-Code-Lösungen in Azure.
Sie können einen privaten Endpunkt auch über das Azure-Portal, über Azure PowerShell, die Azure-Befehlszeilenschnittstelle oder eine Azure Resource Manager-Vorlage erstellen.
Voraussetzungen
Sie benötigen ein Azure-Konto mit einem aktiven Abonnement. Wenn Sie noch nicht über ein Azure-Konto verfügen, erstellen Sie ein kostenloses Konto.
Überprüfen der Bicep-Datei
Mit dieser Bicep-Datei wird ein privater Endpunkt für eine Instanz von Azure SQL-Datenbank erstellt.
Die in dieser Schnellstartanleitung verwendete Bicep-Datei stammt aus den Azure-Schnellstartvorlagen.
@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
}
]
}
}
}
Die Bicep-Datei definiert mehrere Azure-Ressourcen:
- Microsoft.Sql/servers: Die Instanz der SQL-Datenbank mit der Beispieldatenbank
- Microsoft.Sql/servers/databases: Die Beispieldatenbank
- Microsoft.Network/virtualNetworks: Das virtuelle Netzwerk, in dem der private Endpunkt bereitgestellt wird
- Microsoft.Network/privateEndpoints: Der private Endpunkt, den Sie für den Zugriff auf die Instanz von SQL-Datenbank verwenden
- Microsoft.Network/privateDnsZones: Die Zone, die Sie zum Auflösen der IP-Adresse des privaten Endpunkts verwenden
- Microsoft.Network/privateDnsZones/virtualNetworkLinks
- Microsoft.Network/privateEndpoints/privateDnsZoneGroups: Die Zonengruppe, die Sie zum Verknüpfen des privaten Endpunkts mit einer privaten DNS-Zone verwenden
- Microsoft.Network/publicIpAddresses: Die öffentliche IP-Adresse, mit der Sie auf den virtuellen Computer zugreifen
- Microsoft.Network/networkInterfaces: Die Netzwerkschnittstelle für den virtuellen Computer
- Microsoft.Compute/virtualMachines: Der virtuelle Computer, mit dem Sie die Verbindung des privaten Endpunkts mit der Instanz von SQL-Datenbank testen
Bereitstellen der Bicep-Datei
Speichern Sie die Bicep-Datei als main.bicep auf Ihrem lokalen Computer.
Stellen Sie die Bicep-Datei entweder mit Azure CLI oder mit Azure PowerShell bereit.
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>
Hinweis
Ersetzen Sie <admin-login> durch den Benutzernamen für den logischen SQL-Server. Ersetzen Sie <vm-login> durch den Benutzernamen für den virtuellen Computer. Sie werden zur Eingabe von sqlAdministratorLoginPassword aufgefordert. Sie werden auch aufgefordert, vmAdminPassword einzugeben. Dieses Kennwort muss mindestens zwölf Zeichen lang sein und mindestens einen Klein- und einen Großbuchstaben sowie ein Sonderzeichen enthalten.
Nach Abschluss der Bereitstellung sollte eine Meldung mit dem Hinweis angezeigt werden, dass die Bereitstellung erfolgreich war.
Überprüfen der Bereitstellung
Hinweis
Die Bicep-Datei generiert jeweils einen eindeutigen Namen für die VM-Ressource „myVm{eindeutige ID}“ und für die SQL-Datenbank-Ressource „sqlserver{eindeutige ID}“. Ersetzen Sie {eindeutige ID} durch den entsprechenden generierten Wert.
Herstellen einer Verbindung mit einem virtuellen Computer über das Internet
Stellen Sie wie folgt über das Internet eine Verbindung mit dem virtuellen Computer myVm{eindeutige ID} her:
Geben Sie in die Suchleiste des Azure-Portals myVm{eindeutige ID} ein.
Wählen Sie Verbinden. Verbindung mit virtuellem Computer herstellen wird geöffnet.
Wählen Sie RDP-Datei herunterladen aus. Azure erstellt eine RDP-Datei (Remotedesktopprotokoll) und lädt sie auf Ihren Computer herunter.
Öffnen Sie die heruntergeladene RDP-Datei.
a. Wählen Sie Verbinden aus, wenn eine entsprechende Aufforderung angezeigt wird.
b. Geben Sie den Benutzernamen und das Kennwort an, die Sie beim Erstellen des virtuellen Computers angegeben haben.Hinweis
Unter Umständen müssen Sie Weitere Optionen>Anderes Konto verwenden auswählen, um die Anmeldeinformationen anzugeben, die Sie beim Erstellen des virtuellen Computers eingegeben haben.
Klicken Sie auf OK.
Während des Anmeldevorgangs wird unter Umständen eine Zertifikatwarnung angezeigt. Ist dies der Fall, wählen Sie Ja oder Weiter aus.
Sobald der VM-Desktop angezeigt wird, minimieren Sie ihn, um zu Ihrem lokalen Desktop zurückzukehren.
Privates Zugreifen auf den SQL-Datenbank-Server über den virtuellen Computer
Stellen Sie wie folgt mithilfe des privaten Endpunkts über den virtuellen Computer eine Verbindung mit dem SQL-Datenbank-Server her:
Öffnen Sie auf dem Remotedesktop von myVM{eindeutige ID} PowerShell.
Führen Sie den folgenden Befehl aus:
nslookup sqlserver{uniqueid}.database.windows.net
Sie erhalten eine Meldung wie die folgende:
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
Installieren Sie SQL Server Management Studio.
Führen Sie im Bereich Mit Server verbinden folgende Aktionen aus:
- Wählen Sie unter Servertyp die Option Datenbank-Engine aus.
- Wählen Sie unter Servername die Option sqlserver{eindeutige ID}.database.windows.net aus.
- Geben Sie unter Benutzername den zuvor angegebenen Benutzernamen ein.
- Geben Sie unter Kennwort das zuvor angegebene Kennwort ein.
- Wählen Sie für Kennwort merken die Option Ja aus.
Wählen Sie Verbinden.
Wählen Sie im linken Bereich Datenbanken aus. Optional können Sie sample-db erstellen oder Informationen daraus abfragen.
Schließen Sie die Remotedesktopverbindung mit myVm{eindeutige ID} .
Bereinigen von Ressourcen
Wenn Sie die mit dem Private Link-Dienst erstellten Ressourcen nicht mehr benötigen, löschen Sie die Ressourcengruppe. Dadurch werden der Private Link-Dienst und alle zugehörigen Ressourcen entfernt.
az group delete --name exampleRG
Nächste Schritte
Weitere Informationen zu den Diensten, die private Endpunkte unterstützen, finden Sie unter: