Azure Microsoft Cloud Enterprise Account: ใช้ Bicep / Terraform เป็นเวลา10นาทีเพื่อปรับใช้สภาพแวดล้อมเครือข่ายมาตรฐานบน Azure ในคลิกเดียว

เมฆ 2026-06-01 阅读 5
1

ในการใช้งานและการบำรุงรักษาระบบคลาวด์คอมพิวติ้งสมัยใหม่มีฉากโรลโอเวอร์สไตล์ "รับสมัคร" แบบคลาสสิกมาก:

สถาปนิกของบริษัทได้ทำงานอย่างหนักเพื่อออกแบบชุดโซลูชันส่วนเครือข่ายที่ตรงตามข้อกำหนดด้านความปลอดภัยซึ่งจะนำไปใช้ในการดำเนินการและการบำรุงรักษาผลลัพธ์การดำเนินการและการบำรุงรักษาเข้าสู่คอนโซลพอร์ทัล Azure หันหน้าไปทางแบบฟอร์มที่หนาแน่นคลิกเมาส์ขณะตรวจสอบด้วยตาเปล่าคลิกลงครึ่งชั่วโมงโดยไม่ได้ตั้งใจ

/16

พิมพ์ผิด

/24

หรือย้อนกลับลำดับของกฎการเข้าของ Network Security Group (NSG) ผลลัพธ์คือ:

การปรับใช้เครื่องเสมือนในภายหลังอาจขาดการเชื่อมต่ออย่างสมบูรณ์หรือฐานข้อมูลหลักจะถูกเปิดเผยโดยตรงไปยังเครือข่ายสาธารณะและจะต้องใช้เวลามากกว่าครึ่งวันในการตรวจสอบสาเหตุ

วิธีการดำเนินการและการบำรุงรักษาที่อาศัยเนื้อมนุษย์อย่างหมดจดเพื่อ "ชี้ประเทศ" บนหน้าเว็บเรียกว่า "รถปราบดินด้วยตนเอง" ในอุตสาหกรรมไม่เพียงแต่ไม่มีประสิทธิภาพเท่านั้นแต่ที่อันตรายที่สุดคือ

ไม่สามารถคัดลอกได้เลย

。หากคุณต้องการโคลนสภาพแวดล้อมเดียวกันในสภาพแวดล้อมการทดสอบก่อนการเปิดตัวและการผลิตคุณแทบจะไม่สามารถรับประกันได้ว่าคุณจะคลิกเมาส์หลายร้อยครั้งโดยไม่ทำผิดพลาด

เพื่อที่จะยุติการดำเนินการและการบำรุงรักษาในรูปแบบเวิร์กช็อปที่ไม่มีประสิทธิภาพและมีความเสี่ยงสูงนี้โดยสิ้นเชิงโครงสร้างพื้นฐานคือรหัส (IaC,Infrastructure as Code) จึงเกิดขึ้นในระบบนิเวศของ Microsoft Cloud (Azure) มีอาวุธการเขียนโปรแกรม IaC ที่โดดเด่นสองอย่าง:

หนึ่งคือ Bicep ลูกชายของ Microsoft (ภาษา DSL ที่ประกาศสมัยใหม่) และอีกอันคือ Terraform มาตรฐานที่เป็นที่ยอมรับในอุตสาหกรรม

ตรรกะพื้นฐานของพวกเขาเป็นฮาร์ดคอร์มาก:

ใช้วิธีการเขียนโค้ดเพื่อ "วาด" โทโพโลยีเครือข่ายของคุณ

คุณเพียงแค่ต้องเขียนไฟล์ข้อความขนาดเล็กที่กำหนดสิ่งที่คุณต้องการจากนั้นคำสั่งจะถูกผลักไปที่ระบบคลาวด์และสมองการจัดเรียงอัตโนมัติของ Azure จะสร้างอาคารสูงให้คุณโดยไม่มีข้อผิดพลาดในระดับพิกเซลภายใน1นาทีและสร้างสภาพแวดล้อมเครือข่ายพื้นฐานที่ตรงตามมาตรฐานของโรงงานขนาดใหญ่ในทันที

วันนี้เราปฏิเสธแนวคิดที่น่าเบื่อและเข้าสู่การเผชิญหน้าแบบฮาร์ดคอร์โดยตรงเราจะใช้แยกกัน

Bicep

และ

เทอร์ราฟอร์ม

ทั้งสองประเภทนี้จับมือคุณด้วยชุดรหัสมาตรฐานและบัดกรีชุดมาตรฐานระดับองค์กรที่มี "1 VNet (เครือข่ายเสมือน) 2เครือข่ายย่อยอิสระและ1กลุ่มความปลอดภัยเครือข่ายที่มีการป้องกันสูง" ใน10นาทีเครือข่ายมูลนิธิ.

ขั้นตอนแรก: การรื้อลึก "แบบจำลองสามมิติ" ของเครือข่ายมาตรฐาน

ก่อนที่จะเขียนโค้ดด้วยมือคุณต้องเข้าใจโทโพโลยีทางกายภาพของเครือข่ายพื้นฐานที่เราต้องการปรับใช้อย่างละเอียดชุดของรากฐานเครือข่าย Azure ระดับองค์กรที่ผ่านการรับรองนั้นไม่ได้เป็นเพียงแค่การเปิด VNet เท่านั้นแต่ต้องเป็นไปตามสถาปัตยกรรมการแยกขั้นพื้นฐานที่สุด:

Virtual Network (VNet): นี่คืออาณาจักรอิสระพิเศษของคุณบน Azure ซึ่งแยกออกจากเครือข่ายสาธารณะภายนอกเราวางแผนส่วนเครือข่ายเป็นส่วนเครือข่ายภายในมาตรฐานของโรงงานขนาดใหญ่: 10.0.0.0/16

Subnets อิสระที่ปลายด้านหน้าและด้านหลัง: สองตำแหน่งจะต้องถูกตัดออกในแนวนอนภายในแชสซีขนาดใหญ่แต่ละตำแหน่งปฏิบัติหน้าที่การแยกทางกายภาพ: We

B Subnet-Frontend: ส่วนเครือข่ายแบ่งออกเป็น10.0.1.0/24ซึ่งจะใช้เพื่อติดตั้งเว็บแอปพลิเคชันสาธารณะหรือตัวโหลดบาลานซ์ในอนาคต Subnet-Backend (Subnet-Backend): ส่วนเครือข่ายแบ่งออกเป็น10.0.2.0/24ในอนาคตจะจัดเก็บฐานข้อมูลหลักหรือบริการแบ็คเอนด์ที่ละเอียดอ่อนโดยเฉพาะและตัดการเข้าถึงเครือข่ายภายนอกโดยตรง

ผู้เฝ้าประตูป้องกันสูง: Network Security Group (NSG): นี่คือไฟร์วอลล์แบบกระจายที่ติดอยู่ที่ทางเข้าของเครือข่ายย่อยเราต้องการเขียนกฎการประทับตราความปลอดภัย: อนุญาตให้เฉพาะการรับส่งข้อมูล443(HTTPS) และ80(HTTP) ของเครือข่ายสาธารณะเท่านั้นที่จะเข้าสู่เครือข่ายย่อยส่วนหน้าและส่วนที่เหลือทั้งหมดจะถูกดักจับโดยตรงในสถานที่

ขั้นตอนที่สอง: ประเภทหนึ่ง-ลูกชายของ Microsoft Picep Blitz

หากคุณเป็นทีม Microsoft Family Bucket ล้วนๆคุณไม่จำเป็นต้องติดตั้งเครื่องมือกำหนดค่าของบุคคลที่สาม Azure Command Line Tool (Azure CLI) เข้าใจ Bicep 100% ไม่มีไฟล์สถานะที่ยุ่งยาก (State File) ที่ต้องได้รับการดูแลและไวยากรณ์ก็สะอาดเหมือนน้ำใส

บนคอมพิวเตอร์ในเครื่องให้สร้างไฟล์ใหม่ชื่อ

Main.bicep

ไฟล์วางเทมเพลตการผลิตความละเอียดสูงต่อไปนี้โดยตรง:

// 1.กำหนดพารามิเตอร์คงที่ทั่วโลกเพื่ออำนวยความสะดวกในการเปลี่ยนชื่อด้วยคลิกเดียวในอนาคต

Param location string = resourceGroup().location

Param vnetName string = 'vnet-core-prod'

Param nsgName string = 'nsg-web-firewall'

// 2.ลุกขึ้นจากพื้นดิน: ตั้งยาม (ทีมรักษาความปลอดภัยเครือข่าย)

Resource nsg 'Microsoft .Network/networkSecurityGroups @ 2023-11-01 '= {

Name: nsgName

Location: location

Properties: {

SecurityRules: [

{

Name: 'Allow-HTTPS-Inbound'

Properties: {

Priority: 10

0 // ลำดับความสำคัญสูงสุด

Protocol: 'Tcp'

Access: 'Allow'

Direction: 'Inbound'

SourceAddressPrefix: '*' // จากทุกที่ในโลก

SourcePortRange: '*'

DestinationAddressPrefix: '*'

DestinationPortRange: '443' // การปล่อยที่แม่นยำ443พอร์ตป้องกันสูง

}

}

]

}

}

// 3.Qiankun Big Move: สร้างเครือข่ายเสมือนแชสซีขนาดใหญ่ตัดเครือข่ายย่อยสองเครือข่ายและผูกลุงกับเครือข่ายเทอร์มินัลหน้า

Resource vnet 'Microsoft .Network/virtualNetworks @ 2023-11-01 '= {

Name: vnetName

ตำแหน่ง: ตำแหน่ง

คุณสมบัติ: {

AddressSpace: {

AddressPrefixes: [

'10.0.0.0/16 '// แกนส่วนเครือข่ายขนาดใหญ่

]

}

Subnets: [

{

Name: 'Subnet-Frontend'

คุณสมบัติ: {

AddressPrefix: '10.0.1.0/24 '// ตำแหน่งส่วนหน้า

NetworkSecurityGroup: {

Id: nsg.id // ยิงไฟร์วอลล์ NSG โดยตรงบนซับเน็ตนี้

}

}

}

{

Name: 'Subnet-Backend'

คุณสมบัติ: {

AddressPrefix: '10.0.2.0/24 '// ตำแหน่งลับฐานข้อมูลส่วนหลัง

}

}

]

}

}

คำสั่งการยกออกด้วยปุ่มเดียว30วินาที (Bicep)

เปิดเทอร์มินัลภายในของคุณลงชื่อเข้าใช้บัญชี Azure ของคุณและระบุกลุ่มทรัพยากรที่คุณสร้างขึ้น (เช่น

Rg-infra-prod

) พิมพ์คำสั่งสั้นๆที่น่าทึ่งนี้โดยตรง:

แบช

Az deployment group create -- resource-group rg-infra-prod -- template-file main.bicep

หลังจากกด Enter แล้วให้ออกจากแป้นพิมพ์ด้วยมือทั้งสองข้างคุณจะเห็นแถบความคืบหน้ากระพริบในเทอร์มินัลหลังจากผ่านไปประมาณ20วินาทีคอนโซลจะส่งคืนรายงานความสำเร็จของ JSON ที่หนาแน่นให้คุณ

ในตอนนี้หากคุณลงชื่อเข้าใช้พื้นหลังของหน้าเว็บ Azure เพื่อรีเฟรชคุณจะพบว่า VNet นอนอยู่ที่นั่นอย่างเรียบร้อยเครือข่ายย่อยทั้งสองและ NSG ถูกผูกไว้เพื่อให้ไม่มีการรั่วไหลและรูปแบบจะเหมือนกับพิกเซลที่วางแผนไว้ในโค้ดทุกประการ

ขั้นตอนที่สาม: ประเภทที่สอง-อุตสาหกรรมไม่ใช่ต้นสนเก่า Terraform เกรดอุตสาหกรรมวงปิด

หากบริษัทของคุณมีสถาปัตยกรรมแบบคลาวด์ยกเว้น Azure

นอกจากนี้ยังดูแล AWS หรือ Alibaba Cloud ดังนั้นมาตรฐานทองคำขาวระดับอุตสาหกรรมที่ได้รับการยอมรับในอุตสาหกรรมจึงยังคงเป็นของตระกูล HashiCorp

เทอร์ราฟอร์ม

บนคอมพิวเตอร์ในระบบสร้างไดเร็กทอรีว่างใหม่และสร้างไดเร็กทอรีชื่อ

ไฟล์ main.tf

ไฟล์ดังกล่าว Terraform ใช้ไวยากรณ์ HCL แบบคลาสสิกและตรรกะนั้นหนักกว่าเล็กน้อยแต่เนื่องจากกลไกการล็อกสถานะที่มีประสิทธิภาพจึงมีความเสถียรในการทำงานร่วมกันของทีมขนาดใหญ่: #1.ประกาศรหัสร่วม: เราต้องการเรียกไดรเวอร์อย่างเป็นทางการของ Microsoft Azure (Provider)

terraform {

ผู้ให้บริการที่จำเป็น {

Azurerm = {

Source = "hashicorp/azurerm"

เวอร์ชัน = "~>" 3.0"

}

}

}

Provider "azurerm" {

Features {} # ต้องประกาศคุณสมบัติการเปิดอย่างชัดเจน

}

#2.สิ่งที่แนบมา: ประกาศว่าเราต้องการปลูกเครือข่ายในกลุ่มทรัพยากรที่มีอยู่

Data "azurerm_resource_group" "core_rg" {

Name = "rg-infra-prod"

}

#3.หล่อโล่: สร้างกลุ่มรักษาความปลอดภัยเครือข่ายสูง (NSG)

Resource "azurerm_network_security_group" "web_nsg" {

Name = "nsg-web-firewall"

Location = data.azurerm_resource_group.core_rg.location

Resource_group_name = data.azurerm_resource_group.core_rg.name

Security_rule {

Name & nbs

P; = "Allow-HTTPS-Inbound"

Priority = 100

Direction = "Inbound"

Access = "Allow"

Protocol = "Tcp"

Source_port_range = "*"

Destination_port_range = "443"

Source_address_prefix = "*"

Destination_address_prefix = "*"

}

}

#4.เปิดแชสซีขนาดใหญ่: สร้างเครือข่ายเสมือน (VNet)

Resource "azurerm_virtual_network" "core_vnet" {

Name = "vnet-core-prod"

ที่ตั้ง = ข้อมูล.azurerm_resource_group.core_rg.ที่ตั้ง

Resource_group_name = da

Ta.azurerm_resource_group.core_rg.name

Address_space = ["10.0.0.0/16"]

}

#5.การแบ่งที่แม่นยำ: ตัดซับเน็ตส่วนหน้าด้วยตนเองและผูกกับ NSG

Resource "azurerm_subnet" "sub_frontend" {

Name = "Subnet-Frontend"

ชื่อกลุ่มทรัพยากร = ค่าของ data.azurerm_resource_group.core_rg.name

Virtual_network_name = azurerm_virtual_network.core_vnet.name

Address_prefixes = ["10.0.1.0/24"]

}

Resource "azurerm_subnet_network_security_group_association" "bind_nsg" {

Subnet_id = azurerm_subnet.sub_frontend.id

Network_security_group_id = azurerm_network_security_group.web_nsg.id

}

#6.การแบ่งที่แม่นยำ: ตัดซับเน็ตอินทราเน็ตบริสุทธิ์ออกด้วยตนเอง

Resource "azurerm_subnet" "sub_backend" {

Name = "Subnet-Backend"

ชื่อกลุ่มทรัพยากร = ค่าของ data.azurerm_resource_group.core_rg.name

Virtual_network_name = azu

Rerm_virtual_network.core_vnet.name

Address_prefixes = ["10.0.2.0/24"]

}

คำแนะนำในการลงจอดด้วยปุ่มเดียว (Terraform)

เปิดเทอร์มินัลและเปลี่ยนไปใช้

ไฟล์ main.tf

ในไดเร็กทอรีที่คุณอยู่ให้พิมพ์ "Tyra Boom Three Axes" แบบคลาสสิก:

แบช

# ขวานแรก: เริ่มต้นดาวน์โหลดแพ็คเกจไดรเวอร์ส่วนประกอบเครือข่ายล่าสุดอย่างเป็นทางการของ Microsoft

terraform init

# Second Axe: แบบฝึกหัดการซ้อมให้ Terraform แสดงให้คุณเห็นสิ่งที่จะสร้างขึ้นในภายหลังโดยไม่ต้องเสียเงิน

แผนทรัฟเฟิร์ม

# ขวานที่สาม: การโจมตีทั้งหมดเริ่มต้นขึ้นและมีการเปิดตัวการเรียกเก็บเงินโครงสร้างพื้นฐานไปยังระบบคลาวด์อย่างแท้จริง (เพิ่ม-auto-approve เพื่อกำจัดการยืนยันโดยการเคาะเนื้อมนุษย์)

Terraform apply -- auto-approve

ภายในเวลาไม่ถึง30วินาทีเทอร์มินัลจะสว่างเป็นสีเขียว

สมัครเสร็จสิ้นแล้ว! Resources: 4 added

。ชุดสภาพแวดล้อมเครือข่ายการแยกระดับโรงงานขนาดใหญ่มาตรฐานทั้งหมดได้ทำลายโลกทางกายภาพบนคลาวด์ของ Azure อย่างสมบูรณ์แบบ

ขั้นตอนที่สี่: ประวัติการหลีกเลี่ยงเลือดและน้ำตาของโครงสร้างพื้นฐานระดับอุตสาหกรรมหรือรหัส

ด้วยรหัสทั้งสองชุดนี้คุณสามารถเพิกเฉยต่อผู้ดูแลเว็บแบบดั้งเดิมทั้งหมดที่ยังคงดิ้นรนเพื่อคลิกเมาส์บนหน้าเว็บแต่เพื่อให้อยู่รอดในสายการประกอบ DevOps ที่มีการทำงานพร้อมกันสูงในเชิงพาณิชย์ที่เข้มงวดอย่างแท้จริงในฐานะหัวหน้าสถาปนิกคุณต้องเชื่อมสองบรรทัดล่างสุดต่อไปนี้ให้กับทีมทันที:

1.โศกนาฏกรรมร้ายแรง "ไฟล์สถานะ Terraform หายไป" (State Lock)

หากคุณใช้ Terraform เมื่อคุณดำเนินการเสร็จแล้ว

Terraform apply

ต่อมาในไดเรกทอรีท้องถิ่นชื่อ

เทอร์ราฟอร์ม.ทีเอฟสเตต

ไฟล์ข้อความ

อันตรายจากภัยพิบัติ: ไฟล์นี้เป็น "สมองความจำเดียว" ที่จดจำว่าเครือข่ายคลาวด์ในปัจจุบันมีลักษณะอย่างไรหากนักพัฒนารายอื่นเรียกใช้รหัสนี้บนคอมพิวเตอร์ของตนเองเนื่องจากพวกเขาไม่มีไฟล์ tfstate ของคุณในเครื่อง Terraform จะกลายเป็นคนตาบอดโดยเข้าใจผิดคิดว่าไม่มีอะไรในระบบคลาวด์ดังนั้นในขณะที่เรียกใช้แอพพลิเคชันคุณจะอยู่ในเครือข่ายการผลิตที่สร้างขึ้นในระบบคลาวด์และเครื่องเสมือนภายในถอนรากถอนโคนอย่างไร้ความปรานีและลบออกทางกายภาพ!

การกำหนดค่าเหรียญทองมาตรฐานของผู้ผลิตรายใหญ่: ห้ามเก็บ tfstate ไว้บนคอมพิวเตอร์ในเครื่องโดยเด็ดขาด! กลยุทธ์ Backend "azurerm" ต้องได้รับการกำหนดค่าในบล็อก terraform { ... } บังคับให้ล็อกไฟล์หน่วยความจำสถานะนี้ในการเข้ารหัสอย่างเป็นทางการของ Azure Storage Acc

นับ (เก็บบัญชี Blob) และเปิด State Locking ด้วยวิธีนี้ใครก็ตามที่เรียกใช้รหัสในทุกมุมโลกจะจัดตำแหน่งข้อมูลในสมองส่วนกลางเดียวกันและเชื่อมโศกนาฏกรรมของ "การครอบคลุมและการลบโดยไม่ได้ตั้งใจ" โดยสิ้นเชิง

2.ระวังอัมพาตข้ามภูมิภาคที่เกิดจาก "ฮาร์ดโค้ด" ใน Bicep

เมื่อเขียนโค้ด Bicep มือใหม่หลายคนจะเขียนโค้ดโดยตรงเพื่อประหยัดปัญหา

Location: 'eastasia'

(ฮ่องกง).

เหตุผลในการถอดชิ้นส่วน: หากวันหนึ่งธุรกิจของบริษัทกำลังจะไปต่างประเทศในสหรัฐอเมริกาคุณจะต้องโคลนเครือข่ายแยกที่เหมือนกันทั้งหมดใน eastus (ห้องคอมพิวเตอร์ฝั่งตะวันออกของสหรัฐฯ) ทันทีที่คุณเรียกใช้โค้ดบรรทัดนี้ระบบจะรายงานข้อผิดพลาดอย่างไร้ความปรานีเนื่องจากทีมทรัพยากรของคุณถูกสร้างขึ้นอย่างชัดเจนในสหรัฐอเมริกาแต่รหัสบังคับให้ Microsoft ดึงเครือข่ายเครือข่ายในฮ่องกง

คู่มือการหลีกเลี่ยงฮาร์ดคอร์: ใช้พารามิเตอร์เสมอเพื่อรวบรวมข้อมูลทางภูมิศาสตร์แบบไดนามิกตามที่เราเขียนไว้ในเทมเพลตการสาธิต Bicep ด้านบน: Param location string = resourceGroup().location ปล่อยให้โค้ดค้นหาอย่างชาญฉลาดว่า "ตอนนี้คุณอยู่ในกลุ่มทรัพยากรใด" และกลุ่มทรัพยากรอยู่ที่ใดมันจะติดตามเถาวัลย์โดยอัตโนมัติและลงจอดโดยตระหนักถึงชุดเทมเพลตที่แท้จริงและการโคลนนิ่งทั่วโลกที่ราบรื่น

สรุป

การใช้ Bicep / Terraform เพื่อปรับใช้โครงสร้างพื้นฐานที่ทันสมัยนั่นคือรหัส (IaC) สาระสำคัญระดับอุตสาหกรรมหลักจะถูกทำให้ง่ายขึ้นเป็นสิบหกคำ:

รหัสวางโทโพโลยีการควบคุมเวอร์ชันการจัดเก็บข้อมูลส่วนกลางภูมิศาสตร์แบบไดนามิก

คุณได้อำลาสถานะการทำงานและการบำรุงรักษาดั้งเดิมของเมาส์ที่ตรวจสอบพารามิเตอร์ทุกวันกลัวว่าจะจับคู่ส่วนเครือข่ายไม่ถูกต้องและเนื้อมนุษย์หลายร้อยครั้งที่คอนโซลในตอนดึกฐานสินทรัพย์ดิจิทัลหลักทั้งหมดได้รับการรวมเป็นรหัสข้อความที่สามารถส่งไปยัง GitHub ได้นั่งอยู่หน้าคอมพิวเตอร์เปลี่ยนหมายเลขอย่างสง่างามและกด Enter ส่วนที่เหลือของการป้องกันและการขยายตัวที่สูงจะถูกส่งมอบให้กับยุคคลาวด์ดั้งเดิมของความเร็วแสงที่กระพริบอย่างปลอดภัย

cloud
← 返回新闻中心