Azure 专用终结点是 Azure 中专用链接的构建基块。 它使 Azure 资源(例如虚拟机 (VM))能够以私密方式来与专用链接资源通信。
本教程介绍如何执行下列操作:
- 创建虚拟网络和 Bastion 主机。
- 创建虚拟机。
- 创建 Azure SQL 服务器和专用终结点。
- 测试到 SQL 服务器专用终结点的连接。
- 具有活动订阅的 Azure 帐户。 创建试用版订阅。
- 如果选择在本地安装并使用 PowerShell,则本文需要 Azure PowerShell 模块 5.4.1 或更高版本。 运行
Get-Module -ListAvailable Az
查找已安装的版本。 如果需要进行升级,请参阅 Install Azure PowerShell module(安装 Azure PowerShell 模块)。 如果在本地运行 PowerShell,则还需运行Connect-AzAccount -Environment AzureChinaCloud
以创建与 Azure 的连接。
Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。
使用 New-AzResourceGroup 创建资源组:
New-AzResourceGroup -Name 'CreateSQLEndpointTutorial-rg' -Location 'chinaeast2'
在本部分中,你将创建虚拟网络、子网和堡垒主机。
堡垒主机将用于安全地连接到虚拟机,以测试专用终结点。
使用以下命令创建虚拟网络和堡垒主机:
## Create backend subnet config. ##
$subnetConfig = New-AzVirtualNetworkSubnetConfig -Name myBackendSubnet -AddressPrefix 10.0.0.0/24
## Create Azure Bastion subnet. ##
$bastsubnetConfig = New-AzVirtualNetworkSubnetConfig -Name AzureBastionSubnet -AddressPrefix 10.0.1.0/24
## Create the virtual network. ##
$parameters1 = @{
Name = 'MyVNet'
ResourceGroupName = 'CreateSQLEndpointTutorial-rg'
Location = 'chinaeast2'
AddressPrefix = '10.0.0.0/16'
Subnet = $subnetConfig, $bastsubnetConfig
}
$vnet = New-AzVirtualNetwork @parameters1
## Create public IP address for bastion host. ##
$parameters2 = @{
Name = 'myBastionIP'
ResourceGroupName = 'CreateSQLEndpointTutorial-rg'
Location = 'chinaeast2'
Sku = 'Standard'
AllocationMethod = 'Static'
}
$publicip = New-AzPublicIpAddress @parameters2
## Create bastion host ##
$parameters3 = @{
ResourceGroupName = 'CreateSQLEndpointTutorial-rg'
Name = 'myBastion'
PublicIpAddress = $publicip
VirtualNetwork = $vnet
}
New-AzBastion @parameters3
部署 Azure Bastion 主机需要几分钟时间。
在本部分中,你将创建将用来测试专用终结点的虚拟机。
使用以下内容创建虚拟机:
- Get-Credential
- New-AzNetworkInterface
- New-AzVM
- New-AzVMConfig
- Set-AzVMOperatingSystem
- Set-AzVMSourceImage
- Add-AzVMNetworkInterface
## Set credentials for server admin and password. ##
$cred = Get-Credential
## Command to get virtual network configuration. ##
$vnet = Get-AzVirtualNetwork -Name myVNet -ResourceGroupName CreateSQLEndpointTutorial-rg
## Command to create network interface for VM ##
$parameters1 = @{
Name = 'myNicVM'
ResourceGroupName = 'CreateSQLEndpointTutorial-rg'
Location = 'chinaeast2'
Subnet = $vnet.Subnets[0]
}
$nicVM = New-AzNetworkInterface @parameters1
## Create a virtual machine configuration.##
$parameters2 = @{
VMName = 'myVM'
VMSize = 'Standard_DS1_v2'
}
$parameters3 = @{
ComputerName = 'myVM'
Credential = $cred
}
$parameters4 = @{
PublisherName = 'MicrosoftWindowsServer'
Offer = 'WindowsServer'
Skus = '2019-Datacenter'
Version = 'latest'
}
$vmConfig =
New-AzVMConfig @parameters2 | Set-AzVMOperatingSystem -Windows @parameters3 | Set-AzVMSourceImage @parameters4 | Add-AzVMNetworkInterface -Id $nicVM.Id
## Create the virtual machine ##
New-AzVM -ResourceGroupName 'CreateSQLEndpointTutorial-rg' -Location 'chinaeast2' -VM $vmConfig
注意
Azure 会为未分配公共 IP 地址的 VM 或位于内部基本 Azure 负载均衡器的后端池中的 VM 提供默认出站访问 IP。 默认出站访问 IP 机制会提供不可配置的出站 IP 地址。
发生以下事件之一时,将禁用默认出站访问 IP:
- 将公共 IP 地址分配给 VM。
- 虚拟机被放置在标准负载平衡器的后端池中,有无出站规则均可。
- 向 VM 的子网分配了 Azure NAT 网关资源。
在灵活业务流程模式下通过使用虚拟机规模集创建的 VM 没有默认的出站访问权限。
有关 Azure 中的出站连接的详细信息,请参阅 Azure 中的默认出站访问权限和使用用于出站连接的源网络地址转换 (SNAT)。
在本部分中,你将使用以下内容创建 SQL 服务器和数据库:
创建 SQL 服务器和数据库。 将 <sql-server-name> 替换为唯一服务器名称:
## Set and administrator and password for the SQL server. ##
$cred = Get-Credential
## Create SQL server ##
$parameters1 = @{
ResourceGroupName = 'CreateSQLEndpointTutorial-rg'
ServerName = '<sql-server-name>'
SqlAdministratorCredentials = $cred
Location = 'chinaeast2'
}
New-AzSqlServer @parameters1
## Create database. ##
$parameters2 = @{
ResourceGroupName = 'CreateSQLEndpointTutorial-rg'
ServerName = '<sql-server-name>'
DatabaseName = 'mysqldatabase'
RequestedServiceObjectiveName = 'S0'
SampleName = 'AdventureWorksLT'
}
New-AzSqlDatabase @parameters2
在本部分中,你将使用以下命令创建专用终结点和连接:
## Place SQL server into variable. Replace <sql-server-name> with your server name ##
$server = Get-AzSqlServer -ResourceGroupName CreateSQLEndpointTutorial-rg -ServerName <sql-server-name>
## Create private endpoint connection. ##
$parameters1 = @{
Name = 'myConnection'
PrivateLinkServiceId = $server.ResourceID
GroupID = 'sqlserver'
}
$privateEndpointConnection = New-AzPrivateLinkServiceConnection @parameters1
## Place virtual network into variable. ##
$vnet = Get-AzVirtualNetwork -ResourceGroupName 'CreateSQLEndpointTutorial-rg' -Name 'myVNet'
## Disable private endpoint network policy ##
$vnet.Subnets[0].PrivateEndpointNetworkPolicies = "Disabled"
$vnet | Set-AzVirtualNetwork
## Create private endpoint
$parameters2 = @{
ResourceGroupName = 'CreateSQLEndpointTutorial-rg'
Name = 'myPrivateEndpoint'
Location = 'chinaeast2'
Subnet = $vnet.Subnets[0]
PrivateLinkServiceConnection = $privateEndpointConnection
}
New-AzPrivateEndpoint @parameters2
在本部分中,你将使用以下命令创建和配置专用 DNS 区域:
- New-AzPrivateDnsZone
- New-AzPrivateDnsVirtualNetworkLink
- New-AzPrivateDnsZoneConfig
- New-AzPrivateDnsZoneGroup
## Place virtual network into variable. ##
$vnet = Get-AzVirtualNetwork -ResourceGroupName 'CreateSQLEndpointTutorial-rg' -Name 'myVNet'
## Create private dns zone. ##
$parameters1 = @{
ResourceGroupName = 'CreateSQLEndpointTutorial-rg'
Name = 'privatelink.database.chinacloudapi.cn'
}
$zone = New-AzPrivateDnsZone @parameters1
## Create dns network link. ##
$parameters2 = @{
ResourceGroupName = 'CreateSQLEndpointTutorial-rg'
ZoneName = 'privatelink.database.chinacloudapi.cn'
Name = 'myLink'
VirtualNetworkId = $vnet.Id
}
$link = New-AzPrivateDnsVirtualNetworkLink @parameters2
## Create DNS configuration ##
$parameters3 = @{
Name = 'privatelink.database.chinacloudapi.cn'
PrivateDnsZoneId = $zone.ResourceId
}
$config = New-AzPrivateDnsZoneConfig @parameters3
## Create DNS zone group. ##
$parameters4 = @{
ResourceGroupName = 'CreateSQLEndpointTutorial-rg'
PrivateEndpointName = 'myPrivateEndpoint'
Name = 'myZoneGroup'
PrivateDnsZoneConfig = $config
}
New-AzPrivateDnsZoneGroup @parameters4
本部分将使用在上一步骤中创建的虚拟机通过专用终结点连接到 SQL 服务器。
登录 Azure 门户。
在左侧导航窗格中选择“资源组”。
选择“CreateSQLEndpointTutorial-rg”。
选择“myVM”。
在 myVM的“概述”页上,选择“连接”,然后选择“堡垒”。
选择蓝色的“使用堡垒”按钮。
输入在创建虚拟机期间输入的用户名和密码。
连接后,在服务器上打开 Windows PowerShell。
输入
nslookup <sqlserver-name>.database.chinacloudapi.cn
。 将 <sqlserver-name> 替换为在上一步骤中创建的 SQL 服务器的名称。 你将收到类似于以下所示内容的消息:Server: UnKnown Address: 168.63.129.16 Non-authoritative answer: Name: mysqlserver8675.privatelink.database.chinacloudapi.cn Address: 10.0.0.5 Aliases: mysqlserver8675.database.chinacloudapi.cn
将为 SQL 服务器名称返回专用 IP 地址 10.0.0.5。 此地址位于你之前创建的虚拟网络的子网中。
在 myVM 上安装 SQL Server Management Studio。
打开 SQL Server Management Studio。
在连接服务器中,输入或选择以下信息:
设置 值 服务器类型 选择数据库引擎。 服务器名称 输入 <sql-server-name>.database.chinacloudapi.cn 身份验证 选择SQL Server 身份验证。 用户名 输入在服务器创建过程中所输入的用户名 Password 输入在服务器创建过程中所输入的密码 记住密码 选择是。 选择“连接”。
浏览左侧菜单中的数据库。
(可选)创建或查询 mydatabase 中的信息。
关闭到 myVM 的堡垒连接。
用完专用终结点、SQL 服务器和 VM 之后,请删除资源组及其包含的所有资源:
在门户顶部的“搜索”框中输入“CreateSQLEndpointTutorial-rg”,然后从搜索结果中选择“CreateSQLEndpointTutorial-rg” 。
选择“删除资源组”。
在“键入资源组名称”中输入“CreateSQLEndpointTutorial-rg”,然后选择“删除” 。
在本教程中,你已创建:
- 虚拟网络和堡垒主机。
- 虚拟机。
- 具有专用终结点的 Azure SQL 服务器。
你使用虚拟机通过专用终结点安全测试了到 SQL 服务器的连接。
对于下一步,你可能还会对“与 Azure SQL 数据库建立专用连接的 Web 应用”体系结构场景感兴趣,该场景将虚拟网络以外的 Web 应用程序连接到数据库的专用终结点。