मैंने यह परिदृश्य बहुत बार देखा है। ऐप तैयार है। डेमो शानदार है। फिर सुरक्षा चेकलिस्ट आती है: स्टोरेज को पब्लिक इंटरनेट से हटाएं, VNet के अंदर चलाएं, पार्टनर के allowlist के लिए आउटबाउंड IP प्रदान करें, साबित करें कि केवल सही सब्नेट सही सेवाओं से बात करते हैं।
इस बिंदु पर एप्लिकेशन मॉडल और इन्फ्रास्ट्रक्चर मॉडल उन तरीकों से अलग होने लगते हैं जिन्हें बनाए रखना दर्दनाक होता है।
Aspire का नया Azure एंटरप्राइज नेटवर्किंग समर्थन इसे सीधे संबोधित करता है। आप AppHost में उन संसाधनों के बगल में नेटवर्क का आकार वर्णन करते हैं जो इसका उपयोग करते हैं।
बिल्डिंग ब्लॉक्स
प्रत्येक Azure नेटवर्किंग अवधारणा किस लिए है, संक्षेप में:
| सुविधा | कब उपयोग करें | क्यों महत्वपूर्ण है |
|---|---|---|
| वर्चुअल नेटवर्क | जब आपको प्राइवेट एड्रेस स्पेस चाहिए | सब्नेट, प्राइवेट एंडपॉइंट और रूटिंग के लिए नेटवर्क सीमा |
| सब्नेट | जब आपको VNet के अंदर वर्कलोड अलग करने हों | सिस्टम के प्रत्येक भाग को अपनी एड्रेस रेंज और पॉलिसी सरफेस मिलती है |
| डेलिगेटेड सब्नेट | जब प्लेटफॉर्म सर्विस (जैसे ACA) को सब्नेट मैनेज करना हो | सर्विस को आपके VNet में मैनेज्ड इन्फ्रास्ट्रक्चर सुरक्षित रूप से रखने देता है |
| NAT गेटवे | जब आपको अनुमानित आउटबाउंड पब्लिक IP चाहिए | allowlist और ऑडिट के लिए स्थिर एड्रेस |
| प्राइवेट एंडपॉइंट | जब आप PaaS रिसोर्स को प्राइवेट एक्सेस देना चाहते हैं | उस सर्विस का प्राइवेट IP आपके VNet के अंदर रखता है, पब्लिक एक्सपोजर हटाता है |
| NSG | जब सब्नेट-स्तर ट्रैफिक नियम चाहिए | प्रत्येक सब्नेट के इनबाउंड और आउटबाउंड ट्रैफिक के लिए स्पष्ट अनुमति/अस्वीकृति |
AppHost में वर्णन करना
यहाँ मुख्य बदलाव यह है कि आप नेटवर्क को उन संसाधनों के साथ मॉडल करते हैं जो इसका उपयोग करते हैं, न कि एक अलग Bicep फ़ाइल में जो समय के साथ एप्लिकेशन मॉडल से अलग हो जाती है।
AppHost से आप कर सकते हैं:
AddVirtualNetwork()औरAddSubnet()से VNet और सब्नेट बनाएं- स्थिर आउटबाउंड IP के लिए सब्नेट में NAT गेटवे जोड़ें
- स्टोरेज, Key Vault, SQL और अन्य PaaS सर्विस के लिए प्राइवेट एंडपॉइंट बनाएं
- इनबाउंड और आउटबाउंड सिक्योरिटी नियमों के साथ NSG परिभाषित करें
- क्रॉस-रिसोर्स पॉलिसी के लिए नेटवर्क सिक्योरिटी परिमाण कॉन्फ़िगर करें
परिणाम यह है कि जब आप azd up चलाते हैं, तो इन्फ्रास्ट्रक्चर वही मेल खाता है जो एप्लिकेशन मॉडल कहता है उसे चाहिए। मैन्युअल रूप से बनाए रखे टेम्पलेट की बात नहीं।
वास्तविक एप्लिकेशन के लिए क्यों महत्वपूर्ण है
Aspire में नेटवर्क मॉडल होने के बाद कुछ चीजें काफी आसान हो जाती हैं:
Key Vault और स्टोरेज के लिए प्राइवेट एंडपॉइंट — आप उन संसाधनों पर WithPrivateEndpoint() वर्णन करते हैं, और Aspire DNS ज़ोन कॉन्फ़िगरेशन और एंडपॉइंट अटैचमेंट संभालता है। ऐप कभी नहीं बदलता।
सुसंगत आउटबाउंड IP — संबंधित सब्नेट में NAT गेटवे जोड़ें, और आपके ऐप का हर आउटबाउंड अनुरोध एक जाने-माने, स्थिर IP से गुजरता है। पार्टनर इसे allowlist में जोड़ सकते हैं। ऑडिटर इसे ट्रैक कर सकते हैं।
कोड से NSG नियम — पोर्टल में क्लिक करने या Bicep स्निपेट बनाए रखने के बजाय, आपके सिक्योरिटी नियम AppHost में उन संसाधनों के बगल में रहते हैं जिन्हें वे सुरक्षित करते हैं।
यह उस प्रकार का एकीकरण है जो डेमो को रोमांचक नहीं बनाता लेकिन प्रोडक्शन सिस्टम को मेंटेनेबल बनाता है।
निष्कर्ष
प्रोजेक्ट जीवनचक्र में देर से नेटवर्क सुरक्षा दिखाई देना एक हल की गई समस्या है यदि आप शुरू से ही इसे ऐप के साथ मॉडल करते हैं। Aspire का एंटरप्राइज नेटवर्किंग समर्थन इसे एक अलग इन्फ्रास्ट्रक्चर ट्रैक की आवश्यकता के बिना संभव बनाता है।
मूल पोस्ट में पूरी जानकारी: Securing Azure apps with Aspire enterprise networking
