एप्लिकेशन पूल के लिए "ऐप पूल पहचान" की क्या भूमिका है?


16

जब IIS 7.5 सुरक्षा के बारे में बात कर रहे हैं, AFAIK:

ऐप पूल पहचान यह तय करती है कि मेरा वेब एप्लिकेशन किसके रूप में चलता है।

प्रमाणीकरण विधि यह तय करती है कि ग्राहक किसके रूप में प्रमाणित हैं।

मेरे पास इस तरह कॉन्फ़िगर किया गया एक वर्चुअल फ़ोल्डर है:

  • मैं इस उम्मीद के साथ बेनामी प्रमाणीकरण का उपयोग करता हूं कि सभी ग्राहकों को IUSR के रूप में प्रमाणित किया जाना चाहिए ।
  • मैं IUSR को फ़ोल्डर का पूर्ण नियंत्रण देता हूं।
  • मेरा ऐप पूल पहचान XXX खाते के रूप में सेट है, जिसमें फ़ोल्डर की कोई अनुमति नहीं है। (मैं जानबूझकर यह सेट)

लेकिन यह पता चला है कि मैं उस फ़ोल्डर में फ़ाइलों को ब्राउज़ नहीं कर सकता। एक बार जब मैं उस फ़ोल्डर को एक्सेस करने के लिए XXX खाते की अनुमति देता हूं, तो चीजें ठीक हो जाती हैं।

तो अनाम प्रमाणीकरण में ऐप पूल आइडेंटिटी की क्या भूमिका है? यह पूरी तरह से अप्रत्याशित है कि मुझे फ़ोल्डर तक पहुंचने के लिए ऐप पूल पहचान खाता अनुमति देनी होगी। मुझे लगा कि अनाम प्रमाणीकरण पर्याप्त होगा?

धन्यवाद।

जवाबों:


18

यहां ओवरलोड शर्तों के बहुत सारे, और IIS 7 और 7.5 के बीच एक बदलाव।

ऐप पूल पहचान बनाम ऐप पूल खाता

आइए एप्लिकेशन पूल पहचान के साथ शुरू करें (I लोका, उर्फ ऐप पूल खाता ):

जिस तरह से मैं इसे बताता हूं, एप्लिकेशन पूल खाता एक ऐप पूल को बूट करने के लिए उपयोग किया जाने वाला खाता है , और यह पहचान कि ऐप पूल किसी और को प्रतिरूपण नहीं कर रहा है, तो यह मान लेता है।

इसलिए जो भी पहचान आप ऐप पूल को देते हैं, उसे सामग्री फ़ोल्डर में फ़ाइलों को पढ़ने में सक्षम होने की आवश्यकता होती है : विशेष रूप से {लेकिन केवल web.config फ़ाइलों तक सीमित नहीं है (जो IIS कॉन्फ़िगरेशन का हिस्सा है, और जो नियंत्रित करता है) ऐप पूल कर रहा है)।

यदि यह किसी फ़ोल्डर तक नहीं पहुँच सकता है, तो यह मान लेगा कि वहाँ एक महत्वपूर्ण (गेम-चेंजिंग) web.config फ़ाइल हो सकती है और कोई त्रुटि प्रदर्शित कर सकती है। तो अनुप्रयोग पूल खाते की जरूरत है पढ़ें सभी सामग्री फ़ोल्डरों के लिए उपयोग।

ApplicationPoolIdentity

ऐप पूल आइडेंटिटी से ऐप पूल अकाउंट (ऐप पूल की पहचान) को अलग क्यों करें? क्योंकि विशेष-राजधानियों में प्रयुक्त ApplicationPoolIdentity एक नया खाता प्रकार है - एक प्रबंधित सेवा खाता - जिसे IIS 7.5 / Windows 2008 R2 में शुरू किया गया और बनाया गया है, और Windows 2008 SP2 से भी उपलब्ध है (लेकिन डिफ़ॉल्ट नहीं)।

IIS.Net पर एप्लिकेशन पूल पहचान देखें

जब आप GUI का उपयोग करके R2 के तहत एक वेबसाइट बनाते हैं:

  • उस वेबसाइट को होस्ट करने के लिए एक ऐप पूल बनाया जाएगा, और
  • नेटवर्क सेवा (2008 डिफ़ॉल्ट), स्थानीय सेवा या स्थानीय प्रणाली के बजाय खाता प्रकार ApplicationPoolIdentity होगा।

2008 RTM के साथ, डिफ़ॉल्ट ऐप पूल खाता नेटवर्क सेवा और एक अद्वितीय ऐप पूल पहचान / विशिष्ट पहचानकर्ता था; नया R2 / SP2 AppPoolIdentity खाता प्रकार एक नेटवर्क-सेवा- जैसे खाता (यानी ऑफ-बॉक्स कनेक्ट करते समय कंप्यूटर है), लेकिन उसी बॉक्स के भीतर किसी अन्य ऐप पूल के प्रतिरूपण को रोकता है।

मूल प्रश्न पर वापस जाएं:

  • ऐप पूल खाता परिभाषित करता है कि आपका ऐप कब चलता है जब वह किसी और को इंप्रेस नहीं कर रहा है

  • प्रमाणीकरण विधि बताती है कि आप ग्राहकों को कैसे प्रमाणित करने जा रहे हैं (उन्हें प्रतिरूपण करने के लिए)

  • बेनामी उपयोगकर्ता खाते परिभाषित करता है आप जब एक अनुरोध जो प्रमाणीकृत नहीं है के लिए एक उपयोगकर्ता नाम से कार्य के रूप में चलाने के लिए जा रहे हैं, जो - IUSR इस तरह के एक उपयोगकर्ता है।

संयोग से, IIS 7.5 के साथ, आप अनाम उपयोगकर्ता खाते को एप्लिकेशन पूल पहचान (अनाम प्रमाणीकरण विधि के गुण) के रूप में सेट कर सकते हैं, जो किसी वेबसाइट के लिए सामग्री को अलग और सुरक्षित करने के लिए अधिक सरल बना सकता है।

नाम प्रारूप के लिए IIS AppPool \ YourSiteName का उपयोग करके अनुमतियाँ सेट करें। ( यह पोस्ट भी देखें )


4

आप दो चीजें देख रहे हैं, जो आमतौर पर ASP.NET में उलझन में हैं:

  1. "उपयोगकर्ता पहचान" - एक उपयोगकर्ता खाते के प्रमाणीकरण का उस खाते या पहचान से कोई लेना-देना नहीं है जो वास्तव में IIs और ASP.NET दोनों के तहत चलता है। बेनामी प्रमाणीकरण किसी भी उपयोगकर्ता को क्लाइंट ब्राउज़र के लिए उपयोगकर्ता नाम और पासवर्ड चुनौती प्रदान किए बिना किसी भी सार्वजनिक सामग्री का उपयोग करने की अनुमति देता है। अनाम IUSR खाता जो IIS में डिफ़ॉल्ट रूप से प्रमाणित हो जाता है, केवल सार्वजनिक वेबसाइट सामग्री तक पहुंच को लागू करता है। यह अंतर्निहित IIs या ASP.NET सेवाओं द्वारा उपयोग की जाने वाली प्रक्रियाओं या संसाधनों को प्रभावित नहीं करता है।
  2. "एप्लिकेशन पहचान" - यह वास्तविक रूप से IIS और ASP.NET के पीछे चलने वाले सर्वर पर "WindowsIdentity" खाता है, जो कि II द्वारा पूल को सौंपा गया अनुप्रयोग पूल पहचान खाता है और ASP.NET को दिया गया है। आपकी ASP.NET प्रक्रिया डिफ़ॉल्ट रूप से इस एप्लिकेशन पूल पहचान खाते (IIs संस्करण 7.5+ में एक आभासी खाता कहा जाता है) के तहत चलती है।

स्पष्टीकरण: ASP.NET में सबसे पहले, "प्रमाणीकरण" केवल एक घटना है जो आमतौर पर web.config में सेटअप की जाती है, जो किसी दिए गए उपयोगकर्ता खाते में लॉग इन करती है, जो एक उपयोगकर्ता टोकन के रूप में II.NET द्वारा ASP को सादे HttpContext के रूप में प्राप्त होता है ... यानी वर्तमान सत्र या वर्तमान उपयोगकर्ता का संदर्भ। यह वास्तव में ASP.NET प्रक्रिया को चलाने वाले WindowsIdentity को नहीं बदलता है, बस इसके लिए एक यूजर आईडी टोकन पास करता है। HttpContext का उपयोग करते हुए, आपका कोड उस आईडी या नाम का उपयोग आपकी वेबसाइट के विभिन्न वर्गों के लिए डेटाबेस अधिकारों को संग्रहीत करने के लिए कर सकता है। लेकिन यह ASP.NET द्वारा फाइल एक्सेस को प्रभावित नहीं करेगा क्योंकि यह IIs के तहत ASP.NET को चलाने वाले वास्तविक एप्लिकेशन "प्रोसेस" अकाउंट की पहचान को प्रभावित या परिवर्तित नहीं करता है।

ऐसा तब तक नहीं होता है जब तक आप "प्रतिरूपण" नहीं करते हैं, जो ASP.NET को बताता है कि जो भी टोकन II के द्वारा पास किया जाता है उसे प्रतिरूपित करना और फिर उस खाता आईडी के तहत चलाना। आप अपने web.config में प्रतिरूपण सेट कर सकते हैं। जब आप ASP.NET में प्रतिरूपण सक्रिय करते हैं तो WindowsIdentity कार्यकर्ता प्रक्रिया पर जो भी प्रमाणित खाता IIS से ASP.NET को पास हो जाता है, पर बदल जाता है, और फिर आप फ़ाइलों का उपयोग कर सकते हैं, बेशक आप उस उपयोगकर्ता खाते को क्या अधिकार प्रदान करते हैं। यह ध्यान रखना महत्वपूर्ण है कि जब यह अस्थायी होता है और ASP.NET अपनी डिफ़ॉल्ट प्रक्रिया पहचान पर वापस लौट सकता है जो वर्तमान IIs संस्करणों में फिर से अनुप्रयोग पूल पहचान खाता किसी दिए गए ऐप पूल को सौंपा गया है।

जब IIs केवल ASP.NET में कोई स्पष्ट प्रमाणीकरण सेट किए बिना सादे अनाम उपयोगकर्ता खाते का उपयोग करता है, तो II वेबसाइट के असाइन किए गए एप्लिकेशन पूल के एप्लिकेशन पूल आइडेंटिटी खाते को डिफ़ॉल्ट रूप से शुरू करता है और इसे ASP.NET और इसे चलाने वाली कार्यकर्ता प्रक्रिया से गुजरता है। वह अनुप्रयोग पूल पहचान खाता IIS के लिए सभी अनुरोधों को संसाधित करता है और उस साइट के लिए ASP.NET चलाता है।

जब IIs इस सेटअप के तहत शुरू होता है और एक उपयोगकर्ता द्वारा एक्सेस किया जाता है, तो यह वास्तव में गुमनाम IUSR खाते द्वारा डिफ़ॉल्ट रूप से पर्दे के पीछे प्रमाणित होता है जो वेब पेज और अन्य बुनियादी संसाधनों तक पहुंच निर्धारित करता है। लेकिन वह खाता ASP.NET को पास नहीं किया गया है। और यह एप्लीकेशन पूल आइडेंटिटी IIS रन को प्रभावित नहीं करता है और जो ASP.NET के तहत चलता है।

यदि आप अपने web.config के अनुसार "सत्य" के लिए प्रतिरूपण सेट करते हैं, और आप सार्वजनिक उपयोग के लिए IIs में डिफ़ॉल्ट अनाम IUSR खाते का उपयोग कर रहे हैं, और आप web.config (इसके बजाय Windows का उपयोग करने के लिए) स्पष्ट रूप से बेनामी संपत्ति को सेट करते हैं या अन्य लॉगिन खाता), II अनुप्रयोग पूल पहचान और IIs को टॉस करेगा और ASP.NET दोनों अब अनाम IUSR प्रमाणित और प्रतिरूपण खाते के रूप में अपनी आवेदन प्रक्रियाएँ चलाएंगे।

जब आप ऐसा करते हैं कि ASP.NET और इसकी प्रक्रियाएँ अब IUSR खाते के अंतर्गत चल रही होंगी .... अर्थात ASP.NET की अनुप्रयोग प्रक्रिया अपना WindowsIdentity खाता IUSR खाते के रूप में चलाएगी। अब आप उस अनाम IUSR खाते तक और उस फ़ोल्डर तक पहुँच को पढ़ने / लिखने के लिए आवेदन कर सकते हैं, जिसे आप एक्सेस करना चाहते हैं। (नोट: डिफ़ॉल्ट प्रक्रिया खाता, पूल के लिए आवेदन पूल खाता, अधिकार के साथ-साथ उन फ़ोल्डरों में जोड़ना सुनिश्चित करें। यह Microsoft की सिफारिश के अनुसार है)

शुभ लाभ!


2

नाटक में दो प्रमाणीकरण संदर्भ हैं। वेब सर्वर प्रक्रिया (जो आपके वेब अनुरोधों को संभालती है) ऐप पूल पहचान उपयोगकर्ता के रूप में चलती है। जब आपके वर्चुअल होस्ट के लिए एक अनुरोध आता है, तो एप्लिकेशन पूल विशिष्ट साइट के "बेनामी प्रमाणीकरण क्रेडेंशियल्स" में सूचीबद्ध उपयोगकर्ता को डिफ़ॉल्ट IUSR द्वारा अंकित करता है।

आपकी वेबसाइट के भीतर से चलने वाली कोई भी स्क्रिप्ट IUSR के रूप में चलेगी, लेकिन लॉगिंग और कुछ अन्य फ़ंक्शन ऐप पूल उपयोगकर्ता के रूप में चलेंगे (डिफ़ॉल्ट नेटवर्क सेवा द्वारा - हालांकि इसे हाल ही में एक विशेष वर्चुअल ऐप पूल उपयोगकर्ता का उपयोग करने के लिए बदल दिया गया है)। एप्लिकेशन पूल पहचान (नेटवर्क सेवा) को आपकी निर्देशिका में फ़ाइलों को सूचीबद्ध करने में सक्षम होने की आवश्यकता होती है क्योंकि आपकी स्क्रिप्ट को नियंत्रण सौंपने से पहले अनुरोध स्टैक में कुछ चेक किए जाते हैं।

प्रति पूल एक साइट को चलाने के लिए अच्छा अभ्यास है, और ऐप पूल पहचान को अपनी वेबसाइट के बेनामी उपयोगकर्ता के समान चलाने के लिए सेट करें। अनाम उपयोगकर्ता संदर्भ (IUSR) से बाहर निकलना और ऐप पूल पहचान के विशेषाधिकारों को ऊपर उठाना संभव है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.