การเข้าถึงเครือข่ายที่ปลอดภัยสําหรับแอปฟังก์ชัน

เสร็จสมบูรณ์เมื่อ

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

จํากัดการเข้าถึงขาเข้าด้วยรายการ IP ที่อนุญาต

ข้อจํากัดการเข้าถึงช่วยให้คุณกําหนดรายการกฎที่อนุญาตและปฏิเสธตามลําดับความสําคัญโดยอิงตามที่อยู่ IP ต้นทาง ช่วงเส้นทาง Inter-Domain แบบไม่มีคลาส (CIDR) หรือแท็กบริการ Azure เมื่อมีกฎที่ชัดเจน การปฏิเสธทั้งหมดโดยนัยจะมีผลกับการรับส่งข้อมูลทั้งหมดที่ไม่ตรงกัน คุณไม่จําเป็นต้องเพิ่มกฎการปฏิเสธด้วยตนเอง

สําหรับแอปฟังก์ชันที่ควรยอมรับเฉพาะการเรียกเข้าจากบริการ Azure ที่เฉพาะเจาะจง กฎแท็กบริการจะให้โซลูชันที่สะอาด ตัวอย่างเช่น หากต้องการยอมรับการเรียกเว็บฮุคจาก Azure Event Grid เท่านั้น ให้เพิ่มกฎที่อนุญาตแท็กบริการ AzureEventGrid และปฏิเสธการรับส่งข้อมูลอื่นๆ ทั้งหมด แท็กบริการครอบคลุมช่วงที่อยู่ IP ทั้งหมดที่ใช้โดยบริการ Azure นั้น ดังนั้นคุณจึงไม่จําเป็นต้องจัดการช่วง IP แต่ละช่วงสําหรับบริการที่ใช้พูลที่อยู่แบบไดนามิก

การจํากัดการเข้าถึงมีให้ใช้งานในแผนการโฮสต์แอป Function ทั้งหมด รวมถึง Consumption, Flex Consumption, Elastic Premium และ Dedicated

Tip

กําหนดค่าข้อจํากัดการเข้าถึงเพื่อปฏิเสธการรับส่งข้อมูลทั้งหมดตามค่าเริ่มต้น และเพิ่มกฎการอนุญาตที่ชัดเจนสําหรับแหล่งที่มาที่รู้จักก่อนที่จะปรับใช้กับการผลิต การเริ่มต้นด้วยท่าทางปฏิเสธทั้งหมดนั้นง่ายต่อการตรวจสอบมากกว่าการสร้างรายการบล็อกเทียบกับการอนุญาตทั้งหมดโดยปริยาย

ปรับใช้ปลายทางส่วนตัวสําหรับการเข้าถึงขาเข้า

เมื่อการรับส่งข้อมูลของแอป Function ไม่ควรข้ามอินเทอร์เน็ตสาธารณะ ปลายทางส่วนตัวจะลบปลายทางสาธารณะออกทั้งหมด ปลายทางส่วนตัวจะกําหนดที่อยู่ IP ส่วนตัวให้กับแอป Function ภายในเครือข่ายเสมือนของคุณ (เครือข่ายเสมือน) การรับส่งข้อมูลขาเข้าทั้งหมดมาถึงผ่าน IP ส่วนตัวนั้น ผู้โทรภายนอกไม่สามารถเข้าถึง URL ของฟังก์ชันจากอินเทอร์เน็ตได้เนื่องจากไม่มีเส้นทางสาธารณะ

จุดสิ้นสุดส่วนตัวสําหรับแอป Function ได้รับการสนับสนุนในแผนการโฮสต์ Flex Consumption, Elastic Premium และ Dedicated (App Service) แผนการใช้มาตรฐานไม่รองรับปลายทางส่วนตัว

เมื่อกําหนดค่าปลายทางส่วนตัวแล้ว ผู้โทรภายใน VNet รวมถึงบริการ Azure อื่นๆ ที่เชื่อมต่อกับเครือข่ายเดียวกัน จะแก้ไขชื่อโฮสต์ของฟังก์ชันเป็นที่อยู่ IP ส่วนตัว การแก้ไขชื่อนี้ต้องใช้โซนส่วนตัวของ Azure DNS ถ้าฟังก์ชันของคุณเป็นแบ็กเอนด์สําหรับ Azure API Management หรือ Application Gateway ทรัพยากรเหล่านั้นจะเชื่อมต่อกับแอปฟังก์ชันผ่านจุดสิ้นสุดส่วนตัวแทนที่จะเป็น URL สาธารณะ โดยเก็บการรับส่งข้อมูลทั้งหมดไว้บนแกนหลักของ Azure

สำคัญ

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

กําหนดค่าการรวมเครือข่ายเสมือนสําหรับการรับส่งข้อมูลขาออก

ปลายทางส่วนตัวควบคุมการเข้าถึงขาเข้า ซึ่งเป็นสิ่งที่สามารถเข้าถึงแอปฟังก์ชันได้ การรวมเครือข่ายเสมือนจะควบคุมการเข้าถึงขาออก ซึ่งเป็นสิ่งที่แอป Function สามารถเข้าถึงได้ สิ่งเหล่านี้เป็นการควบคุมที่แตกต่างกันและมีจุดประสงค์ที่แตกต่างกัน

เมื่อเปิดใช้งานการรวมเครือข่ายเสมือน แอป Function จะกําหนดเส้นทางการเรียกเครือข่ายขาออกผ่านซับเน็ตที่ได้รับมอบหมายในเครือข่ายเสมือนของคุณ สิ่งนี้ทําให้ฟังก์ชันสามารถเรียกใช้ทรัพยากรที่ไม่ได้เปิดเผยต่ออินเทอร์เน็ตสาธารณะ: บัญชี Cosmos DB ที่ไม่มีการเข้าถึงแบบสาธารณะ บัญชีที่เก็บข้อมูลที่ล็อกไว้กับซับเน็ตเครือข่ายเสมือนเฉพาะ หรือ REST API ส่วนตัวที่โฮสต์บน VM ในเครือข่ายเดียวกัน

การรวมเครือข่ายเสมือนระดับภูมิภาคพร้อมใช้งานในแผน Flex Consumption, Elastic Premium และ Dedicated และเป็นการกําหนดค่าที่แนะนําสําหรับสถานการณ์ส่วนใหญ่ แอป Function และเครือข่ายเสมือนต้องอยู่ในภูมิภาค Azure เดียวกัน การรวมใช้ซับเน็ตที่ได้รับมอบหมาย ซึ่งไม่สามารถใช้ซับเน็ตนั้นกับทรัพยากรอื่นๆ เช่น VM หรือปลายทางส่วนตัวได้

สำคัญ

การรวมเครือข่ายเสมือนเพียงอย่างเดียวไม่ได้กําหนดเส้นทางการรับส่งข้อมูลขาออกทั้งหมดผ่านเครือข่ายเสมือน โดยค่าเริ่มต้น เฉพาะการรับส่งข้อมูลที่ปลายทางสําหรับช่วงที่อยู่ IP ส่วนตัว (RFC 1918) เท่านั้นที่กําหนดเส้นทางผ่านซับเน็ตการรวม หากต้องการบังคับการรับส่งข้อมูลขาออกทั้งหมด รวมถึงการโทรไปยังที่อยู่อินเทอร์เน็ตสาธารณะผ่านเครือข่ายเสมือน ให้ตั้งค่าแอปพลิเคชันเป็น WEBSITE_VNET_ROUTE_ALL1หรือเปิดใช้งานกําหนด เส้นทางการรับส่งข้อมูลทั้งหมดใน หน้าจอการกําหนดค่าการรวมเครือข่ายเสมือน

กําหนดค่า CORS สําหรับไคลเอ็นต์บนเบราว์เซอร์

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

ในการผลิต ให้ระบุต้นทาง https://contoso-retail.comที่อนุญาตอย่างชัดเจน เช่น ห้ามใช้สัญลักษณ์ตัวแทน (*) ในการผลิต การกําหนดค่า CORS แบบตัวแทนช่วยให้ต้นทางสามารถส่งคําขอไปยังแอปฟังก์ชันของคุณ ซึ่งจะลบการป้องกันข้ามต้นทางที่ CORS มอบให้สําหรับไคลเอ็นต์บนเบราว์เซอร์

ข้อจํากัดของ CORS มีผลกับไคลเอ็นต์ HTTP บนเบราว์เซอร์เท่านั้น การเรียกเซิร์ฟเวอร์ต่อเซิร์ฟเวอร์ จากบริการแบ็กเอนด์ บริการ Azure หรือไคลเอ็นต์ HTTP ที่ไม่ใช่เบราว์เซอร์ จะไม่อยู่ภายใต้การบังคับใช้ CORS CORS เป็นกลไกการรักษาความปลอดภัยของเบราว์เซอร์ ไม่ใช่การควบคุมการเข้าถึงฝั่งเซิร์ฟเวอร์

อ้างอิงข้อมูลลับของ Key Vault ในการตั้งค่าแอปพลิเคชัน

การตั้งค่าแอปพลิเคชันใน ฟังก์ชัน Azure เป็นหนึ่งในตําแหน่งที่ตั้งทั่วไปที่สตริงการเชื่อมต่อและคีย์ API ถูกจัดเก็บเป็นข้อความธรรมดา รูปแบบการอ้างอิง Key Vault จะแทนที่ค่าการตั้งค่าแอปพลิเคชันข้อความธรรมดาด้วยข้อมูลอ้างอิงที่แอปฟังก์ชันแก้ไขขณะรันไทม์โดยใช้ข้อมูลประจําตัวที่มีการจัดการ

ไวยากรณ์สําหรับการอ้างอิง Key Vault ในการตั้งค่าแอปพลิเคชันคือ:

@Microsoft.KeyVault(SecretUri=https://<vault-name>.vault.azure.net/secrets/<secret-name>/<version>)

หากคุณละเว้นตัวระบุเวอร์ชัน แอปฟังก์ชันจะแก้ไขข้อมูลลับเวอร์ชันล่าสุด สิ่งนี้มีประโยชน์สําหรับข้อมูลลับที่หมุนเวียนเป็นประจํา ฟังก์ชันจะรับค่าที่อัปเดตภายใน 24 ชั่วโมงของการหมุนเวียนโดยไม่ต้องปรับใช้ใหม่

วิธีใช้การอ้างอิง Key Vault

  1. เปิดใช้งานข้อมูลประจําตัวที่มีการจัดการที่ระบบกําหนดบนแอปฟังก์ชัน
  2. กําหนดบทบาท Key Vault Secrets User ให้กับข้อมูลประจําตัวที่มีการจัดการบน Key Vault
  3. แทนที่ค่าข้อความธรรมดาในการตั้งค่าแอปพลิเคชันแต่ละรายการด้วยไวยากรณ์อ้างอิง @Microsoft.KeyVault(...)

แอป Function แก้ไขการอ้างอิงเมื่อเริ่มต้นระบบ และแทรกค่าข้อมูลลับเป็นค่าการตั้งค่าแอปพลิเคชัน รหัสฟังก์ชันอ่านการตั้งค่าโดยใช้ Environment.GetEnvironmentVariable("SETTING_NAME") ซึ่งเป็นการเรียกแบบเดียวกับที่ใช้สําหรับการตั้งค่าแอปพลิเคชันอื่นๆ โดยไม่มีการรับรู้เลเยอร์อ้างอิง Key Vault

Note

หากมีการกําหนดค่า Key Vault ด้วยข้อจํากัดของเครือข่าย เช่น ปลายทางส่วนตัวหรือปลายทางบริการเครือข่ายเสมือน แอป Function จําเป็นต้องมีการผสานรวมเครือข่ายเสมือนเพื่อเข้าถึงห้องนิรภัย กําหนดค่าการรวมเครือข่ายเสมือนก่อนที่จะเพิ่มการอ้างอิง Key Vault ไปยังห้องนิรภัยที่จํากัดเครือข่าย หากไม่มีเส้นทางเครือข่ายไปยังห้องนิรภัย แอป Function จะไม่สามารถแก้ไขการอ้างอิงและไม่สามารถเริ่มทํางานได้