Rychlý start: Vytvoření privátního koncového bodu pomocí Bicep
V tomto rychlém startu použijete Bicep k vytvoření privátního koncového bodu.
Bicep je jazyk specifický pro doménu (DSL), který k nasazování prostředků Azure používá deklarativní syntaxi. Poskytuje stručnou syntaxi, spolehlivou bezpečnost typů a podporu pro opakované použití kódu. Bicep nabízí nejlepší prostředí pro vytváření obsahu pro řešení infrastruktury jako kódu v Azure.
Privátní koncový bod můžete vytvořit také pomocí webu Azure Portal, Azure PowerShellu, Azure CLI nebo šablony Azure Resource Manageru.
Požadavky
Potřebujete účet Azure s aktivním předplatným. Pokud ještě účet Azure nemáte, vytvořte si ho zdarma.
Kontrola souboru Bicep
Tento soubor Bicep vytvoří privátní koncový bod pro instanci služby Azure SQL Database.
Soubor Bicep, který tento rychlý start používá, je ze šablon Rychlého startu 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
}
]
}
}
}
Soubor Bicep definuje více prostředků Azure:
- Microsoft.Sql/servers: Instance služby SQL Database s ukázkovou databází.
- Microsoft.Sql/servers/databases: Ukázková databáze.
- Microsoft.Network/virtualNetworks: Virtuální síť, ve které je nasazený privátní koncový bod.
- Microsoft.Network/privateEndpoints: Privátní koncový bod, který používáte pro přístup k instanci služby SQL Database.
- Microsoft.Network/privateDnsZones: Zóna, kterou používáte k překladu IP adresy privátního koncového bodu.
- Microsoft.Network/privateDnsZones/virtualNetworkLinks
- Microsoft.Network/privateEndpoints/privateDnsZoneGroups: Skupina zón, kterou používáte k přidružení privátního koncového bodu k privátní zóně DNS.
- Microsoft.Network/publicIpAddresses: Veřejná IP adresa, kterou používáte pro přístup k virtuálnímu počítači.
- Microsoft.Network/networkInterfaces: Síťové rozhraní virtuálního počítače.
- Microsoft.Compute/virtualMachines: Virtuální počítač, který používáte k otestování připojení privátního koncového bodu k instanci služby SQL Database.
Nasazení souboru Bicep
Uložte soubor Bicep jako main.bicep do místního počítače.
Nasaďte soubor Bicep pomocí Azure CLI nebo Azure PowerShellu.
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>
Poznámka:
Nahraďte <přihlašovací jméno> správce uživatelským jménem pro logický server SQL. Nahraďte <vm-login> uživatelským jménem virtuálního počítače. Zobrazí se výzva k zadání sqlAdministratorLoginPassword. Zobrazí se také výzva k zadání vmAdminPassword, který musí mít délku nejméně 12 znaků a musí obsahovat aspoň jedno malé a velké písmeno a jeden speciální znak.
Po dokončení nasazení by se měla zobrazit zpráva, že nasazení bylo úspěšné.
Ověření nasazení
Poznámka:
Soubor Bicep vygeneruje jedinečný název prostředku myVm{uniqueid} virtuálního počítače a pro prostředek SQL Database{uniqueid} . Nahraďte vygenerovanou hodnotu { uniqueid}.
Připojení k virtuálnímu počítači z internetu
Připojte se k virtuálnímu počítači myVm{uniqueid} z internetu následujícím způsobem:
Na panelu hledání na webu Azure Portal zadejte myVm{uniqueid}.
Vyberte Připojit. Otevře se připojení k virtuálnímu počítači .
Vyberte Stáhnout soubor RDP. Azure vytvoří soubor protokolu RDP (Remote Desktop Protocol) a stáhne ho do počítače.
Otevřete stažený soubor RDP.
a. Pokud se zobrazí výzva, vyberte Připojit.
b. Zadejte uživatelské jméno a heslo, které jste zadali při vytváření virtuálního počítače.Poznámka:
Možná budete muset vybrat Další volby>Použít jiný účet k zadání přihlašovacích údajů, které jste zadali při vytváření virtuálního počítače.
Vyberte OK.
Při přihlášení se může zobrazit upozornění na certifikát. Pokud to uděláte, vyberte Ano nebo Pokračovat.
Jakmile se zobrazí plocha virtuálního počítače, minimalizujte ji, abyste se vrátili na místní plochu.
Privátní přístup k serveru SQL Database z virtuálního počítače
Pokud se chcete z virtuálního počítače připojit k serveru SLUŽBY SQL Database pomocí privátního koncového bodu, postupujte takto:
Na vzdálené ploše virtuálního počítače myVM{uniqueid} otevřete PowerShell.
Spusťte následující příkaz:
nslookup sqlserver{uniqueid}.database.windows.net
Zobrazí se zpráva podobná této:
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
Nainstalujte SQL Server Management Studio.
V podokně Připojit k serveru postupujte takto:
- Jako typ serveru vyberte Databázový stroj.
- Jako název serveru vyberte sqlserver{uniqueid}.database.windows.net.
- Do pole Uživatelské jméno zadejte uživatelské jméno, které jste zadali dříve.
- Jako heslo zadejte heslo, které jste zadali dříve.
- Pokud si chcete zapamatovat heslo, vyberte Ano.
Vyberte Připojit.
V levém podokně vyberte Databáze. Volitelně můžete vytvořit nebo dotazovat informace z ukázkové databáze.
Zavřete připojení ke vzdálené ploše k virtuálnímu počítači myVm{uniqueid}.
Vyčištění prostředků
Pokud už nepotřebujete prostředky, které jste vytvořili pomocí služby private link, odstraňte skupinu prostředků. Tím se odebere služba privátního propojení a všechny související prostředky.
az group delete --name exampleRG
Další kroky
Další informace o službách, které podporují privátní koncové body, najdete tady: