Início Rápido: Criar um ponto de extremidade privado usando o Bicep
Neste início rápido, você usará o Bicep para criar um ponto de extremidade privado.
O Bicep é um DSL (linguagem específica de domínio) que usa sintaxe declarativa para implantar recursos do Azure. Ele fornece sintaxe concisa, segurança de tipos confiável e suporte para reutilização de código. O Bicep oferece a melhor experiência de criação para suas soluções de infraestrutura como código no Azure.
Você também pode criar um ponto de extremidade privado usando o portal do Azure, o Azure PowerShell, a CLI do Azure ou um Modelo do ARM.
Pré-requisitos
Você precisa de uma conta do Azure com uma assinatura ativa. Se você ainda não tiver uma conta do Azure, crie uma conta gratuitamente.
Examinar o arquivo Bicep
Este arquivo do Bicep cria um ponto de extremidade privado para uma instância do Banco de Dados SQL do Azure.
O arquivo do Bicep que usamos neste início rápido é proveniente dos Modelos de Início Rápido do 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
}
]
}
}
}
O arquivo Bicep define vários recursos do Azure:
- Microsoft.Sql/servers: a instância do Banco de Dados SQL com o banco de dados de exemplo.
- Microsoft.Sql/servers/databases: o banco de dados de exemplo.
- Microsoft.Network/virtualNetworks: a rede virtual em que o ponto de extremidade privado é implantado.
- Microsoft.Network/privateEndpoints: o ponto de extremidade privado que você usa para acessar a instância do Banco de Dados SQL.
- Microsoft.Network/privateDnsZones: a zona que você usa para resolver o endereço IP do ponto de extremidade privado.
- Microsoft.Network/privateDnsZones/virtualNetworkLinks
- Microsoft.Network/privateEndpoints/privateDnsZoneGroups: o grupo de zonas que você usa para associar o ponto de extremidade privado a uma zona DNS privada.
- Microsoft.Network/publicIpAddresses: o endereço IP público que você usa para acessar a máquina virtual.
- Microsoft.Network/networkInterfaces: o adaptador de rede da máquina virtual.
- Microsoft.Compute/virtualMachines: a máquina virtual que você usa para testar a conexão do ponto de extremidade privado com a instância do Banco de Dados SQL.
Implante o arquivo Bicep
Salve o arquivo Bicep como main.bicep em seu computador local.
Para implantar o arquivo Bicep, use a CLI do Azure ou o 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>
Observação
Substitua <admin-login> pelo nome de usuário do servidor lógico SQL. Substitua <vm-login> pelo nome de usuário da máquina virtual. Você será solicitado a inserir sqlAdministratorLoginPassword. Você também será solicitado a inserir vmAdminPassword, que deve ter pelo menos 12 caracteres e conter pelo menos um caractere minúsculo e um maiúsculo, além de um caractere especial.
Quando a implantação for concluída, você deverá ver uma mensagem indicando que ela foi bem-sucedida.
Validar a implantação
Observação
O arquivo do Bicep gera um nome exclusivo para o recurso myVm{uniqueid} da máquina virtual e para o recurso sqlserver{uniqueid} do Banco de Dados SQL. Substitua o valor gerado por {uniqueid} .
Conecte uma VM a partir da Internet
Conecte-se à VM myVm{uniqueid} a partir da Internet da seguinte forma:
Na barra de pesquisa do portal do Azure, insira myVm{uniqueid}.
Selecione Conectar. Conectar-se à máquina virtual é aberto.
Selecione Baixar Arquivo RDP. O Azure cria um arquivo .rdp (protocolo RDP) e ele é baixado no computador.
Abra o arquivo RDP baixado.
a. Se solicitado, selecione Conectar.
b. Insira o nome de usuário e a senha que você especificou quando criou a VM.Observação
Talvez seja necessário selecionar Mais opções>Usar uma conta diferente para especificar as credenciais inseridas durante a criação da VM.
Selecione OK.
Você pode receber um aviso de certificado durante o processo de entrada. Se você decidir, selecione Sim ou Continuar.
Depois que a área de trabalho da VM for exibida, minimize-a para voltar para a área de trabalho local.
Acessar o servidor do Banco de Dados SQL de maneira privada da VM
Para se conectar ao servidor do Banco de Dados SQL da VM usando o ponto de extremidade privado, faça o seguinte:
Na Área de Trabalho Remota de myVM{uniqueid}, abra o PowerShell.
Execute o comando a seguir:
nslookup sqlserver{uniqueid}.database.windows.net
Você receberá uma mensagem semelhante a esta:
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
Instale o SQL Server Management Studio.
Na janela Conectar ao servidor, faça o seguinte:
- Em Tipo de servidor, selecione Mecanismo de Banco de Dados.
- Em Nome do servidor, selecione sqlserver{uniqueid}.database.windows.net.
- Em Nome de usuário, insira o nome de usuário que foi fornecido anteriormente.
- Em Senha, insira a senha que foi fornecida anteriormente.
- Em Lembrar senha, selecione Sim.
Selecione Conectar.
No painel esquerdo, selecione Bancos de dados. Opcionalmente, crie ou consulte informações no sample-db.
Feche a conexão de Área de Trabalho Remota com myVm{uniqueid} .
Limpar os recursos
Quando não precisar mais dos recursos criados com o serviço de link privado, exclua o grupo de recursos. Isso remove o serviço de link privado e todos os recursos relacionados.
az group delete --name exampleRG
Próximas etapas
Para obter mais informações sobre os serviços que dão suporte a um ponto de extremidade privado, confira: