返回

如何在 Azure 虚拟网络中仅对前端层安全公开 MySQL 端口?

mysql

## 在 Azure 虚拟网络中安全地向前端层公开 MySQL 端口

### 问题:安全地将 MySQL 端口暴露给前端层

在 Azure 虚拟网络中运行的 MySQL 数据库需要将端口 3306 暴露给前端应用程序服务器。但是,直接将端口暴露在互联网上会带来安全风险。本文将探讨一种更安全的方法,即仅将端口暴露给位于同一虚拟网络中的前端层。

### 解决方法

步骤 1:创建虚拟网络(VNet)和子网

创建一个虚拟网络 (VNet) 并将其划分为两个子网:一个用于前端虚拟机,另一个用于 MySQL 虚拟机。

步骤 2:创建网络安全组 (NSG)

为每个子网创建 NSG。为前端虚拟机的 NSG 添加一条允许来自 MySQL 虚拟机的端口 3306 入站流量的规则。

步骤 3:将虚拟机添加到子网

将前端虚拟机和 MySQL 虚拟机添加到相应的子网中。

步骤 4:配置公共 IP 地址(可选)

如果需要从 VNet 外部访问前端虚拟机,请为其配置公共 IP 地址。

### 详细步骤

创建 VNet 和子网

New-AzVirtualNetwork -Name "MyVNet" -ResourceGroupName "MyResourceGroup" -AddressPrefix "10.0.0.0/16"
New-AzSubnet -Name "FrontendSubnet" -VirtualNetworkName "MyVNet" -AddressPrefix "10.0.0.0/24"
New-AzSubnet -Name "MySQLSubnet" -VirtualNetworkName "MyVNet" -AddressPrefix "10.0.1.0/24"

创建 NSG

New-AzNetworkSecurityGroup -Name "FrontendNSG" -ResourceGroupName "MyResourceGroup" -Location "westus"
New-AzNetworkSecurityGroup -Name "MySQLNSG" -ResourceGroupName "MyResourceGroup" -Location "westus"

为前端 NSG 添加规则

New-AzNetworkSecurityRule -Name "AllowMySQL" -NetworkSecurityGroupName "FrontendNSG" -Direction Inbound -SourceAddressPrefix "10.0.1.0/24" -SourcePortRange "*" -DestinationAddressPrefix "10.0.0.0/24" -DestinationPortRange "3306" -Access Allow -Priority 100

将虚拟机添加到子网

Add-AzVirtualMachineSubnetConfig -VirtualMachine "FrontendVM" -SubnetId $(Get-AzVirtualNetworkSubnetConfig -VirtualNetwork "MyVNet" -Name "FrontendSubnet").Id
Add-AzVirtualMachineSubnetConfig -VirtualMachine "MySQLVM" -SubnetId $(Get-AzVirtualNetworkSubnetConfig -VirtualNetwork "MyVNet" -Name "MySQLSubnet").Id

配置公共 IP 地址(可选)

Set-AzVirtualMachine -VirtualMachine "FrontendVM" -PublicIpAddressName "MyPublicIP"

### 结论

通过遵循这些步骤,可以在 Azure 虚拟网络中安全地将 MySQL 的端口 3306 仅暴露给前端层。这样,就可以访问 MySQL 数据库,同时将攻击面降至最低。

### 常见问题解答

  1. 为什么不应该将 MySQL 端口直接暴露在互联网上?

    • 直接暴露端口会增加安全风险,因为外部攻击者可能会尝试利用它。
  2. 为什么需要创建 VNet 和子网?

    • VNet 和子网可以隔离虚拟机并控制流量。
  3. NSG 的作用是什么?

    • NSG 允许配置规则,以控制网络流量的流入和流出。
  4. 前端虚拟机为什么需要公共 IP 地址?

    • 如果需要从 VNet 外部访问前端虚拟机,则需要公共 IP 地址。
  5. 如何配置前端虚拟机上的应用程序服务器以连接到 MySQL 数据库?

    • 请遵循数据库和应用程序服务器的具体文档,配置连接信息,例如主机名或 IP 地址、端口和凭据。