إنشاء تطبيقين للويب متصلين بأمان من خلال تكامل نقطة النهاية الخاصة وVNet
توضح هذه المقالة مثالا لاستخدام نقطة النهاية الخاصة وتكامل VNet الإقليمي لتوصيل تطبيقي ويب (الواجهة الأمامية والخلفية) بشكل آمن بتكوين terraform التالي:
- نشر VNet
- إنشاء أول شبكة فرعية للتكامل
- قم بإنشاء الشبكة الفرعية الثانية لنقطة النهاية الخاصة، يجب عليك تعيين معلمة محددة لتعطيل سياسات الشبكة
- نشر خطة App Service واحدة من النوع Basic، Standard، PremiumV2، PremiumV3، IsolatedV2، Functions Premium (يشار إليها أحيانا باسم خطة Elastic Premium)، المطلوبة لميزة نقطة النهاية الخاصة
- أنشئ تطبيق الويب للواجهة الأمامية باستخدام إعدادات التطبيق المحددة لاستهلاك منطقة DNS الخاصة، مزيد من التفاصيل
- قم بتوصيل تطبيق الويب للواجهة الأمامية بالشبكة الفرعية للتكامل
- إنشاء تطبيق الويب الخلفي
- قم بإنشاء منطقة DNS الخاصة باسم منطقة الارتباط الخاصة لتطبيق الويب privatelink.azurewebsites.net
- اربط هذه المنطقة بشبكة VNet
- قم بإنشاء نقطة النهاية الخاصة لتطبيق الويب الخلفي في الشبكة الفرعية لنقطة النهاية، وقم بتسجيل أسماء DNS (موقع الويب وSCM) في منطقة DNS الخاصة التي تم إنشاؤها مسبقًا
كيفية استخدام terraform في Azure
استعرض وثائق Azure للتعرف على كيفية استخدام terraform مع Azure.
ملف terraform الكامل
لاستخدام هذا الملف، استبدل العناصر النائبة unique-frontend-app-name> و <unique-backend-app-name> (يتم استخدام اسم التطبيق لتشكيل اسم DNS فريد في جميع أنحاء العالم).<
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~>3.0"
}
}
}
provider "azurerm" {
features {}
}
resource "azurerm_resource_group" "rg" {
name = "appservice-rg"
location = "francecentral"
}
resource "azurerm_virtual_network" "vnet" {
name = "vnet"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
address_space = ["10.0.0.0/16"]
}
resource "azurerm_subnet" "integrationsubnet" {
name = "integrationsubnet"
resource_group_name = azurerm_resource_group.rg.name
virtual_network_name = azurerm_virtual_network.vnet.name
address_prefixes = ["10.0.1.0/24"]
delegation {
name = "delegation"
service_delegation {
name = "Microsoft.Web/serverFarms"
}
}
}
resource "azurerm_subnet" "endpointsubnet" {
name = "endpointsubnet"
resource_group_name = azurerm_resource_group.rg.name
virtual_network_name = azurerm_virtual_network.vnet.name
address_prefixes = ["10.0.2.0/24"]
private_endpoint_network_policies_enabled = true
}
resource "azurerm_service_plan" "appserviceplan" {
name = "appserviceplan"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
os_type = "Windows"
sku_name = "P1v2"
}
resource "azurerm_windows_web_app" "frontwebapp" {
name = "<unique-frontend-app-name>"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
service_plan_id = azurerm_service_plan.appserviceplan.id
site_config {}
app_settings = {
"WEBSITE_DNS_SERVER": "168.63.129.16",
"WEBSITE_VNET_ROUTE_ALL": "1"
}
}
resource "azurerm_app_service_virtual_network_swift_connection" "vnetintegrationconnection" {
app_service_id = azurerm_windows_web_app.frontwebapp.id
subnet_id = azurerm_subnet.integrationsubnet.id
}
resource "azurerm_windows_web_app" "backwebapp" {
name = "<unique-backend-app-name>"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
service_plan_id = azurerm_service_plan.appserviceplan.id
site_config {}
}
resource "azurerm_private_dns_zone" "dnsprivatezone" {
name = "privatelink.azurewebsites.net"
resource_group_name = azurerm_resource_group.rg.name
}
resource "azurerm_private_dns_zone_virtual_network_link" "dnszonelink" {
name = "dnszonelink"
resource_group_name = azurerm_resource_group.rg.name
private_dns_zone_name = azurerm_private_dns_zone.dnsprivatezone.name
virtual_network_id = azurerm_virtual_network.vnet.id
}
resource "azurerm_private_endpoint" "privateendpoint" {
name = "backwebappprivateendpoint"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
subnet_id = azurerm_subnet.endpointsubnet.id
private_dns_zone_group {
name = "privatednszonegroup"
private_dns_zone_ids = [azurerm_private_dns_zone.dnsprivatezone.id]
}
private_service_connection {
name = "privateendpointconnection"
private_connection_resource_id = azurerm_windows_web_app.backwebapp.id
subresource_names = ["sites"]
is_manual_connection = false
}
}
الخطوات التالية
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ