Azure Bastion 如何工作?
Azure Bastion 部署是按虚拟网络或对等虚拟网络进行的, 而不是按订阅、帐户或虚拟机 (VM) 进行的。 在虚拟网络中预配 Azure Bastion 服务后,同一虚拟网络中的所有 VM 都可以使用 RDP 或 SSH 体验。
下图概述了通过门户连接时 Azure Bastion 的工作原理:
- 在 Azure 门户中连接到 VM:在 Azure 门户的 VM 概述页面上,选择“连接”>“Bastion”>“使用 Bastion”然后为 VM 输入凭据。
- 浏览器连接到 Azure Bastion 主机:浏览器使用传输层安全性 (TLS) 和 Azure Bastion 主机的公共 IP 通过 Internet 连接到 Azure Bastion。 Azure 网关管理器管理端口 443 或 4443 上到 Azure Bastion 服务的门户连接。
- Bastion 使用 RDP 或 SSH 连接到 VM:Azure Bastion 部署在虚拟网络中名为 AzureBastionSubnet 的单独子网中。 部署 Azure Bastion 时,将创建子网。 子网中地址空间的子网掩码为 /26 或更大。 不要将其他 Azure 资源部署到此子网或更改子网名称。
- Bastion 将 VM 流式传输到浏览器:Azure Bastion 使用基于 HTML5 的 Web 客户端,该客户端自动流式传输到本地设备。 Azure Bastion 服务使用自定义协议打包会话信息。 该包通过 TLS 传输。
验证 Azure Bastion 是否适用于网络安全组
如果尚未为组织部署和配置特定的网络安全组,则无需执行任何操作。 Azure Bastion 适用于使用 VM 创建的默认网络安全组。
如果为组织配置了网络安全组,请验证 Azure Bastion 是否可通过 RDP 或 SSH 连接到 VM。 建议添加一个入站规则,以允许从 Azure Bastion 子网 IP 地址范围到 VM 的 RDP 和 SSH 连接。
为了使 Azure Bastion 正常工作,网络安全组需要允许以下流量:
方向 | Allow |
---|---|
入站 | 从 Azure Bastion 子网 IP 地址范围到 VM 子网的 RDP 和 SSH 连接。 |
入站 | 在端口 443 上从 Internet 到 Azure Bastion 公共 IP 的 TCP 访问。 |
入站 | 在端口 443 或 4443 上从 Azure 网关管理器进行 TCP 访问。 Azure 网关管理器管理到 Azure Bastion 服务的门户连接。 |
出站 | 在端口 443 上从 Azure 平台进行的 TCP 访问。 此流量用于诊断日志记录。 |
在 Azure 门户中部署 Azure Bastion 主机
在部署 Azure Bastion 之前,需要一个虚拟网络。 可以使用现有虚拟网络或在创建虚拟网络时部署 Azure Bastion。 在虚拟网络中创建一个名为 AzureBastionSubnet 的子网。 如果 VM 位于相同或对等虚拟网络上,请在连接到 VM 时,通过选择 Azure Bastion 在 Azure 门户中完成部署。
以下两部分介绍了 Azure 门户中的每个 Azure Bastion 部署选项所涉及的步骤。 你尚不需要完成上述任何步骤;这些步骤将在下一个练习中执行。
创建虚拟网络时启用 Azure Bastion
如果还没有要用于 Azure Bastion 的虚拟网络,请在“安全”选项卡上创建一个虚拟网络并启用 Azure Bastion。
- 选择“启用”并输入 Azure Bastion 主机的名称。
- 添加子网掩码为 /26 或更大的子网地址。
- 如果还没有要使用的公共 IP 地址,请选择“新建”。
- 创建虚拟网络后,将 VM 添加到此虚拟网络,或将此虚拟网络与 VM 的虚拟网络对等互连。
将子网添加到现有虚拟网络并预配 Azure Bastion 资源
在现有虚拟网络中,添加一个名为 AzureBastionSubnet 的子网。
若要预配 Azure Bastion,请在 VM 上的门户中选择“连接”>“Bastion”>“手动配置”。 输入 Azure Bastion 资源的名称、选择子网、创建公共 IP 等。 在部署 Azure Bastion 后,可以连接到 VM。
使用 Azure PowerShell 或 Azure CLI 部署 Azure Bastion
如果要使用 Azure PowerShell 或 Azure CLI 来部署 Azure Bastion,请运行命令以创建以下资源:
- 子网
- 公共 IP
- Azure Bastion 资源
以下部分介绍了可用于部署 Azure Bastion 的示例。
使用 Azure PowerShell 部署 Azure Bastion
使用 cmdlet
New-AzVirtualNetworkSubnetConfig
创建 Azure Bastion 子网,然后使用Add-AzVirtualNetworkSubnetConfig
将该子网添加到现有虚拟网络。 例如,以下命令假设你已有一个虚拟网络:$subnetName = "AzureBastionSubnet" $virtualNetwork = MyVirtualNetwork $addressPrefix = "10.0.2.0/24" $subnet = New-AzVirtualNetworkSubnetConfig ` -Name $subnetName ` -AddressPrefix $addressPrefix ` Add-AzVirtualNetworkSubnetConfig ` -Name $subnetName ` -VirtualNetwork $virtualNetwork ` -AddressPrefix $addressprefix
为 Azure Bastion 创建一个公共 IP 地址。 Azure Bastion 使用公共 IP 地址来允许通过端口 443 进行 RDP/SSH 连接。 公共 IP 地址必须与 Azure Bastion 资源位于同一区域。
$publicip = New-AzPublicIpAddress ` -ResourceGroupName "myBastionRG" ` -name "myPublicIP" ` -location "westus2" ` -AllocationMethod Static ` -Sku Standard
在虚拟网络的名为 AzureBastionSubnet 的子网中创建 Azure Bastion 资源。
$bastion = New-AzBastion ` -ResourceGroupName "myBastionRG" ` -Name "myBastion" ` -PublicIpAddress $publicip ` -VirtualNetwork $virtualNetwork
使用 Azure CLI 部署 Azure Bastion
创建 Azure Bastion 子网:
az network vnet subnet create \ --resource-group myBastionRG \ --vnet-name MyVirtualNetwork \ --name AzureBastionSubnet \ --address-prefixes 10.0.2.0/24
为 Azure Bastion 创建一个公共 IP 地址:
az network public-ip create \ --resource-group MyResourceGroup \ --name MyPublicIp \ --sku Standard \ --location westus2
创建 Azure Bastion 资源:
az network bastion create \ --name MyBastion \ --public-ip-address MyPublicIp \ --resource-group MyResourceGroup \ --vnet-name MyVnet \ --location westus2
使用 Azure Bastion 连接到 VM
利用所需的资源,应该能够连接到相同虚拟网络或对等虚拟网络上的 VM。 在 VM 上的 Azure 门户中,选择“Bastion”并输入凭据。
在下一个单元中,你将完成为现有虚拟网络部署 Azure Bastion 的步骤。