การตรวจสอบสิทธิ์และเครือข่ายของ App Service
เปิดใช้ผู้ให้บริการตรวจสอบสิทธิ์ในตัว (Entra ID, Google, GitHub) สำหรับเว็บแอป และจำกัดทราฟฟิกขาเข้าด้วยการผสานรวม VNet และข้อจำกัดการเข้าถึง
การตรวจสอบสิทธิ์และเครือข่ายของ App Service เป็นบทเรียน Azure Fundamentals ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Azure Fundamentals และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Azure Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน
การตรวจสอบสิทธิ์ในตัวของ App Service
Azure App Service มี โมดูลการตรวจสอบสิทธิ์และการอนุญาต ในตัว (บางครั้งเรียกว่า EasyAuth) ซึ่งจัดการขั้นตอนการลงชื่อเข้าใช้ การตรวจสอบโทเค็น และการจัดการเซสชัน โดยไม่ต้องเปลี่ยนแปลงโค้ดใด ๆ ในแอปพลิเคชันของคุณ คุณสามารถเปิดใช้งานได้โดยตรงในพอร์ทัล Azure และเลือกผู้ให้บริการข้อมูลประจำตัวได้หลายราย วิธีนี้เหมาะสำหรับการเพิ่มการตรวจสอบสิทธิ์ให้กับ API หรือเครื่องมือภายในอย่างรวดเร็ว โดยไม่ต้องพัฒนาขั้นตอน OAuth ด้วยตนเอง
ผู้ให้บริการข้อมูลประจำตัวที่รองรับ
การตรวจสอบสิทธิ์ของ App Service รองรับผู้ให้บริการข้อมูลประจำตัวหลายรายตั้งแต่เริ่มต้น ได้แก่ Microsoft Entra ID (สำหรับการลงชื่อเข้าใช้ระดับองค์กร/บริษัท), Google, Facebook, Twitter/X, GitHub และผู้ให้บริการใด ๆ ที่เข้ากันได้กับ OpenID Connect คุณลงทะเบียนแอปกับผู้ให้บริการที่เลือกเพื่อรับ ID ไคลเอ็นต์และข้อมูลลับ จากนั้นกำหนดค่าเหล่านี้ใน App Service คุณสามารถเปิดใช้งานผู้ให้บริการหลายรายพร้อมกัน เพื่อให้ผู้ใช้เลือกวิธีลงชื่อเข้าใช้ได้
# Enable Microsoft Entra ID authentication via CLI
az webapp auth microsoft update \
--name MyUniqueWebApp \
--resource-group MyRG \
--client-id '<Entra-App-Client-ID>' \
--client-secret '<Client-Secret>' \
--issuer 'https://sts.windows.net/<TenantId>/'
# Set action when unauthenticated (redirect or 401)
az webapp auth update \
--name MyUniqueWebApp \
--resource-group MyRG \
--unauthenticated-client-action RedirectToLoginPageที่เก็บโทเค็นและการเข้าถึง Claims ของผู้ใช้
เมื่อเปิดใช้งานการตรวจสอบสิทธิ์ App Service จะจัดเก็บโทเค็นที่ผ่านการตรวจสอบแล้วไว้ใน ที่เก็บโทเค็น ซึ่งเป็นที่เก็บถาวรสำหรับแต่ละเซสชันผู้ใช้ โค้ดแอปพลิเคชันของคุณสามารถเข้าถึง Claims ของผู้ใช้ที่ผ่านการตรวจสอบสิทธิ์แล้วผ่านส่วนหัวคำขอ HTTP พิเศษที่โมดูล EasyAuth แทรกให้ ได้แก่ X-MS-CLIENT-PRINCIPAL-NAME (อีเมล/UPN), X-MS-CLIENT-PRINCIPAL-ID (ID ออบเจ็กต์) และ X-MS-TOKEN-AAD-ACCESS-TOKEN สำหรับโทเค็นการเข้าถึงดิบ
// Node.js: read user identity from EasyAuth headers
app.get('/profile', (req, res) => {
const userName = req.headers['x-ms-client-principal-name'];
const userId = req.headers['x-ms-client-principal-id'];
res.json({ name: userName, id: userId });
});
// Or decode the full claims JSON from the header
const principalHeader = req.headers['x-ms-client-principal'];
const claims = JSON.parse(Buffer.from(principalHeader, 'base64').toString());การผสานรวม VNet สำหรับการรับส่งข้อมูลขาออก
การผสานรวม VNet ช่วยให้แอป App Service เรียกใช้ทรัพยากรภายใน Azure Virtual Network ได้ เช่น VM ฐานข้อมูล SQL และ API ภายใน โดยไม่ต้องเปิดเผยทรัพยากรเหล่านั้นต่ออินเทอร์เน็ตสาธารณะ แอปจะได้รับ NIC เสมือนในซับเน็ตที่มอบหมายของ VNet และสามารถเข้าถึงทรัพยากรใด ๆ ที่ VNet เข้าถึงได้ รวมถึงทรัพยากรภายในองค์กรผ่าน VPN หรือ ExpressRoute การผสานรวม VNet พร้อมใช้งานตั้งแต่ระดับ Standard ขึ้นไป
# Enable VNet Integration
az webapp vnet-integration add \
--name MyUniqueWebApp \
--resource-group MyRG \
--vnet MyVNet \
--subnet AppServiceSubnet
# Route ALL traffic through the VNet (including internet)
az webapp config appsettings set \
--name MyUniqueWebApp \
--resource-group MyRG \
--settings WEBSITE_VNET_ROUTE_ALL=1ปลายทางส่วนตัวสำหรับการรับส่งข้อมูลขาเข้า
ขณะที่การผสานรวม VNet จัดการการรับส่งข้อมูลขาออก ปลายทางส่วนตัวจะจัดการการรับส่งข้อมูลขาเข้า โดยทำให้เข้าถึง App Service ได้เฉพาะจากภายใน VNet ของคุณผ่านที่อยู่ IP ส่วนตัวเท่านั้น การเข้าถึง azurewebsites.net จากอินเทอร์เน็ตภายนอกจะถูกบล็อกเมื่อปลายทางส่วนตัวเป็นวิธีการเข้าถึงเพียงวิธีเดียว วิธีนี้ใช้กับ API ภายในและพอร์ทัลผู้ดูแลระบบที่ไม่ควรเปิดเผยต่ออินเทอร์เน็ตสาธารณะโดยเด็ดขาด
# Create a private endpoint for the web app
az network private-endpoint create \
--name MyWebAppPE \
--resource-group MyRG \
--vnet-name MyVNet \
--subnet PrivateEndpointSubnet \
--private-connection-resource-id \
'/subscriptions/.../providers/Microsoft.Web/sites/MyUniqueWebApp' \
--group-id sites \
--connection-name MyWebAppConnectionข้อจำกัดการเข้าถึง
ข้อจำกัดการเข้าถึงใน App Service ช่วยให้คุณกำหนดรายการ IP ที่อนุญาตหรือปฏิเสธสำหรับการรับส่งข้อมูลขาเข้า ระบบจะประเมินกฎตามลำดับความสำคัญ (ตัวเลขต่ำกว่า = ลำดับความสำคัญสูงกว่า) คุณสามารถจำกัดการเข้าถึงให้เหลือเฉพาะช่วง IP ที่กำหนด (เช่น IP ขาออกของ VPN สำนักงาน), แท็กบริการ Azure (เช่น AzureLoadBalancer) หรือซับเน็ต VNet ที่กำหนด ใช้ข้อจำกัดการเข้าถึงเพื่อล็อกสภาพแวดล้อมการทดสอบของคุณ เพื่อให้เฉพาะช่วง IP ของทีมเข้าถึงได้
# Allow only a specific IP range
az webapp config access-restriction add \
--name MyUniqueWebApp \
--resource-group MyRG \
--priority 100 \
--action Allow \
--ip-address 203.0.113.0/24 \
--rule-name 'OfficeRange'
# Allow Azure Front Door service tag
az webapp config access-restriction add \
--name MyUniqueWebApp \
--resource-group MyRG \
--priority 200 \
--action Allow \
--service-tag AzureFrontDoor.Backend \
--rule-name 'FrontDoor'การเชื่อมต่อแบบไฮบริด
การเชื่อมต่อแบบไฮบริด (จาก BizTalk) ช่วยให้ App Service เข้าถึงทรัพยากรภายในองค์กรได้โดยไม่ต้องใช้การผสานรวม VNet หรือเกตเวย์ VPN เอเจนต์รีเลย์ขนาดเล็กที่ติดตั้งภายในองค์กรจะสร้างการเชื่อมต่อขาออกไปยัง Azure Service Bus จากนั้นแอปของคุณจะเชื่อมต่อผ่านรีเลย์ การเชื่อมต่อแบบไฮบริดทำงานที่ระดับ TCP และรองรับทุกพอร์ต จึงเหมาะสำหรับการเชื่อมต่อกับฐานข้อมูลหรือ API ภายในองค์กรรุ่นเก่าที่ไม่สามารถย้ายไปยัง Azure ได้
# Add a Hybrid Connection to reach on-prem SQL
az webapp hybrid-connection add \
--name MyUniqueWebApp \
--resource-group MyRG \
--namespace myServiceBusNS \
--hybrid-connection on-prem-sql-relay
# The Hybrid Connection Manager agent must be installed
# and configured on the on-premises server to complete the relayข้อมูลประจำตัวที่มีการจัดการสำหรับ App Service
กำหนด ข้อมูลประจำตัวที่มีการจัดการให้กับแอป App Service เพื่อให้แอปตรวจสอบสิทธิ์กับบริการ Azure อื่น ๆ (Key Vault, Blob Storage, SQL Database) ได้โดยไม่ต้องจัดเก็บข้อมูลประจำตัวไว้ที่ใด Azure จะจัดการข้อมูลประจำตัวของข้อมูลประจำตัวนั้นโดยอัตโนมัติ ใช้ ข้อมูลประจำตัวที่กำหนดโดยระบบ (ผูกกับวงจรการใช้งานของแอป) หรือ ข้อมูลประจำตัวที่กำหนดโดยผู้ใช้ (ใช้ร่วมกันได้กับหลายแอป) มอบหมายบทบาท RBAC ให้ข้อมูลประจำตัวบนทรัพยากรเป้าหมาย
# Enable system-assigned managed identity
az webapp identity assign \
--name MyUniqueWebApp \
--resource-group MyRG
# Grant the identity access to Key Vault secrets
az keyvault set-policy \
--name MyKeyVault \
--object-id $(az webapp identity show \
--name MyUniqueWebApp \
--resource-group MyRG \
--query principalId -o tsv) \
--secret-permissions get listการเปิดใช้งาน CORS
การแชร์ทรัพยากรข้ามต้นทาง (CORS)ควบคุมว่าโดเมนใดสามารถเรียก API ของแอป App Service ผ่านเบราว์เซอร์ได้ กำหนดต้นทางที่อนุญาตในการตั้งค่า CORS — สำหรับ API ที่มีการตรวจสอบสิทธิ์ อย่าส่งค่าไวลด์การ์ด (*) ในระบบจริง การรองรับ CORS ในตัวของ App Service จะเพิ่มส่วนหัวการตอบกลับ Access-Control-Allow-Origin โดยอัตโนมัติ จึงไม่จำเป็นต้องใช้มิดเดิลแวร์ CORS ในโค้ดแอปพลิเคชันสำหรับกรณีทั่วไป
# Allow specific origin
az webapp cors add \
--name MyUniqueWebApp \
--resource-group MyRG \
--allowed-origins https://www.contoso.com
# View current CORS settings
az webapp cors show \
--name MyUniqueWebApp \
--resource-group MyRG
# Remove a CORS origin
az webapp cors remove \
--name MyUniqueWebApp \
--resource-group MyRG \
--allowed-origins https://old.contoso.comสภาพแวดล้อม App Service (ASE)
สภาพแวดล้อม App Service (ASE) คือการปรับใช้ App Service แบบแยกอย่างสมบูรณ์และเฉพาะสำหรับ ซึ่งทำงานภายใน VNet ของคุณเอง โดยมอบการแยกเครือข่าย ความสามารถในการปรับขนาด (สูงสุด 200 Instance) และการสอดคล้องตามข้อกำหนดในระดับสูงสุด ASE v3 ไม่จำเป็นต้องใช้ IP สาธารณะเฉพาะอีกต่อไป และรองรับปลายทางส่วนตัวในตัว ข้อแลกเปลี่ยนคือค่าใช้จ่ายที่สูงขึ้นอย่างมาก โดย ASE เหมาะสำหรับเวิร์กโหลดระดับองค์กรที่มีข้อกำหนดด้านการแยกอย่างเข้มงวด
สรุปแนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัย
สำหรับการปรับใช้ App Service ที่ปลอดภัย: บังคับใช้ HTTPS เท่านั้น, ใช้ ข้อจำกัดการเข้าถึงเพื่อจำกัด IP ขาเข้า, เปิดใช้งาน ข้อมูลประจำตัวที่มีการจัดการเพื่อหลีกเลี่ยงข้อมูลลับใน config, จัดเก็บข้อมูลลับใน Key Vault พร้อมการอ้างอิง Key Vault, ใช้ เวอร์ชัน TLS ขั้นต่ำ 1.2, เปิดใช้งาน Defender for App Service เพื่อตรวจจับภัยคุกคาม และตรวจสอบ คำแนะนำของ Azure Security Center สำหรับทรัพยากรแอปเป็นประจำ
# Enforce HTTPS and minimum TLS version
az webapp update \
--name MyUniqueWebApp \
--resource-group MyRG \
--https-only true
az webapp config set \
--name MyUniqueWebApp \
--resource-group MyRG \
--min-tls-version '1.2' \
--ftps-state Disabledตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจแนวคิด Microsoft Azure Fundamentals (AZ-900) จากบทเรียนนี้
สรุปบทเรียน
ในบทเรียนนี้ คุณได้เรียนรู้ว่า การตรวจสอบสิทธิ์ในตัว (EasyAuth) เพิ่มการลงชื่อเข้าใช้ผ่านผู้ให้บริการข้อมูลประจำตัวโดยไม่ต้องเปลี่ยนแปลงโค้ด การผสานรวม VNet กำหนดเส้นทางการรับส่งข้อมูลขาออกผ่านเครือข่ายเสมือนของคุณ ขณะที่ ปลายทางส่วนตัวจะล็อกการรับส่งข้อมูลขาเข้า และ ข้อมูลประจำตัวที่มีการจัดการช่วยให้ตรวจสอบสิทธิ์กับบริการ Azure อื่น ๆ ได้โดยไม่ต้องใช้รหัสผ่าน ต่อไปเราจะสำรวจ Azure Container Registry
เรียนรู้ Azure Fundamentals ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 30
- บทเรียน
- 120
คำถามที่พบบ่อย
บทเรียน “การตรวจสอบสิทธิ์และเครือข่ายของ App Service” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การตรวจสอบสิทธิ์และเครือข่ายของ App Service” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Azure Fundamentals ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Azure Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การตรวจสอบสิทธิ์และเครือข่ายของ App Service”
เปิดใช้ผู้ให้บริการตรวจสอบสิทธิ์ในตัว (Entra ID, Google, GitHub) สำหรับเว็บแอป และจำกัดทราฟฟิกขาเข้าด้วยการผสานรวม VNet และข้อจำกัดการเข้าถึง คุณปฏิบัติ Azure Fundamentals ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Azure Fundamentals หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Azure Fundamentals บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การตรวจสอบสิทธิ์และเครือข่ายของ App Service” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Azure Fundamentals นี้ได้ไหม
ได้ บทเรียน Azure Fundamentals ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้างแผน App Service และเว็บแอป
- ช่องการปรับใช้และการสลับ
- การปรับขนาดอัตโนมัติและโดเมนแบบกำหนดเอง
- การตรวจสอบสิทธิ์และเครือข่ายของ App Service