首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure容器实例安全VPN

Azure容器实例安全VPN
EN

Stack Overflow用户
提问于 2021-09-03 05:36:45
回答 1查看 138关注 0票数 0

我有一个蓝色容器实例...我已经把它添加到vnet中了。使用内网IP地址..10.0.0.4

我只希望少数azure应用程序服务能够调用此azure容器实例公开的rest API,我如何为这些azure应用程序服务提供调用容器的能力?

干杯安德鲁

EN

回答 1

Stack Overflow用户

发布于 2021-09-03 09:10:49

有几种方法可以实现这一点。

一种是用这种方法Configure a single public IP address for outbound and inbound traffic to an Azure container group,你可以像你已经做的那样使用deploy an Azure Container Instance in a Virtual network

然后,

在网络中部署Azure防火墙

首先,使用az network vnet subnet create为防火墙添加一个名为AzureFirewallSubnet的子网。AzureFirewallSubnet是该子网的必需名称。

代码语言:javascript
复制
az network vnet subnet create \
  --name AzureFirewallSubnet \
  --resource-group $RESOURCE_GROUP_NAME \
  --vnet-name $aci-vnet   \
  --address-prefix 10.0.1.0/26

使用以下Azure CLI commands在子网中创建防火墙。

如果尚未安装,请使用az extension add命令将防火墙扩展添加到Azure CLI:

代码语言:javascript
复制
az extension add --name azure-firewall

创建防火墙资源:

代码语言:javascript
复制
az network firewall create \
  --name myFirewall \
  --resource-group $RESOURCE_GROUP_NAME \
  --location eastus

az network public-ip create \
  --name fw-pip \
  --resource-group $RESOURCE_GROUP_NAME \
  --location eastus \
  --allocation-method static \
  --sku standard
    
az network firewall ip-config create \
  --firewall-name myFirewall \
  --name FW-config \
  --public-ip-address fw-pip \
  --resource-group $RESOURCE_GROUP_NAME \
  --vnet-name $aci-vnet

使用az network firewall update命令更新防火墙配置:

代码语言:javascript
复制
az network firewall update \
  --name myFirewall \
  --resource-group $RESOURCE_GROUP_NAME

使用az network firewall ip-config list命令获取防火墙的专用IP地址。此私有IP地址将在后面的命令中使用。

代码语言:javascript
复制
FW_PRIVATE_IP="$(az network firewall ip-config list \
  --resource-group $RESOURCE_GROUP_NAME \
  --firewall-name myFirewall \
  --query "[].privateIpAddress" --output tsv)"

使用az network public-ip show命令获取防火墙的公有IP地址。此公有IP地址将在后面的命令中使用。

代码语言:javascript
复制
FW_PUBLIC_IP="$(az network public-ip show \
  --name fw-pip \
  --resource-group $RESOURCE_GROUP_NAME \
  --query ipAddress --output tsv)"

在ACI子网上定义用户定义的路由

在ACI子网上定义使用定义的路由,以将流量转移到Azure防火墙。有关详细信息,请参阅Route network traffic

创建路由表

首先,运行以下az network route-table create命令创建路由表。在与虚拟网络相同的地域创建路由表。

代码语言:javascript
复制
az network route-table create \
  --name Firewall-rt-table \
  --resource-group $RESOURCE_GROUP_NAME \
  --location eastus \
  --disable-bgp-route-propagation true

创建路由

运行az network-route-table route create在路由表中创建路由。要将流量路由到防火墙,请将下一跳类型设置为VirtualAppliance,并将防火墙的私有IP地址作为下一跳地址传递。

代码语言:javascript
复制
az network route-table route create \
  --resource-group $RESOURCE_GROUP_NAME \
  --name DG-Route \
  --route-table-name Firewall-rt-table \
  --address-prefix 0.0.0.0/0 \
  --next-hop-type VirtualAppliance \
  --next-hop-ip-address $FW_PRIVATE_IP

将路由表关联到ACI子网

运行az network vnet subnet update命令以将路由表与委派给Azure容器实例的子网相关联。

代码语言:javascript
复制
az network vnet subnet update \
  --name $aci-subnet \
  --resource-group $RESOURCE_GROUP_NAME \
  --vnet-name $aci-vnet \
  --address-prefixes 10.0.0.0/24 \
  --route-table Firewall-rt-table

最后,

在防火墙上配置规则

默认情况下,Azure防火墙拒绝(阻止)入站和出站流量。

在防火墙上配置到ACI子网的NAT规则

在防火墙上创建NAT rule,以将入站internet流量转换和过滤到您先前在网络中启动的应用程序容器。有关详情,请参阅Filter inbound Internet traffic with Azure Firewall DNAT

使用az network firewall nat-rule create命令创建NAT规则和集合:

代码语言:javascript
复制
az network firewall nat-rule create \
  --firewall-name myFirewall \
  --collection-name myNATCollection \
  --action dnat \
  --name myRule \
  --protocols TCP \
  --source-addresses '$SOURCE_ADDRESSES' \
  --destination-addresses $FW_PUBLIC_IP \
  --destination-ports 80 \
  --resource-group $RESOURCE_GROUP_NAME \
  --translated-address $ACI_PRIVATE_IP \
  --translated-port 80 \
  --priority 200

根据需要添加NAT规则,将流量过滤到子网中的其他IP地址。例如,子网中的其他容器组可以公开入站流量的IP地址,或者可以在重新启动后将其他内部IP地址分配给容器组。

注意:将$SOURCE_ADDRESSES替换为以空格分隔的App Services' outbound IP Addresses列表。

在防火墙上创建出站应用程序规则

运行以下az network firewall application-rule create命令,在防火墙上创建出站规则。此示例规则允许从委派给Azure容器实例的子网访问完全限定域名checkip.dyndns.org。在稍后的步骤中将使用对站点的HTTP访问来确认来自Azure容器实例的出口IP地址。

代码语言:javascript
复制
az network firewall application-rule create \
  --collection-name myAppCollection \
  --firewall-name myFirewall \
  --name Allow-CheckIP \
  --protocols Http=80 Https=443 \
  --resource-group $RESOURCE_GROUP_NAME \
  --target-fqdns checkip.dyndns.org \
  --source-addresses 10.0.0.0/24 \
  --priority 200 \
  --action Allow

另一种方法可以是Integrate your App Service with an Azure virtual network。使用Azure Virtual Network (VNets),你可以将你的许多Azure资源放在一个不可路由的网络中。VNet集成功能使您的应用程序能够访问VNet中的资源或通过a访问资源。VNet集成不会使您的应用程序能够以方式私下访问。

请找到图片示例here。然后,您可以通过Vnet-toVnet peeringVnet-to-Vnet VPN Gateway将App Service虚拟网络与ACI虚拟网络连接起来

但是,使用此方法时,您必须集成将使用虚拟网络连接到您的ACI的所有Azure应用程序服务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69039982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档