ios - बैकएंड सर्वर पर बना आईओएस ग्राहकों पर एडब्ल्यूएस सेवाओं तक पहुंच प्रबंधित करना




amazon-web-services amazon-s3 (3)

सुरक्षा कारणों से, अपनी चाबियाँ उन जगहों पर रखना महत्वपूर्ण है जहां उन्हें छेड़छाड़ नहीं किया जा सकता है: इसका मतलब आम तौर पर उन्हें सर्वर पर छोड़ना है

अपनी चाबियाँ इस तरह सोचें: वे आपके संगठन के संसाधनों तक पहुंच प्रदान करते हैं। मोबाइल डिवाइस पर अपनी चाबियाँ डालकर, चाबियों की चोरी संगठन स्तर पर आपके संसाधनों को प्रभावित करती है इसके बजाए, अपने सर्वर पर प्रॉक्सी के माध्यम से AWS संसाधन तक पहुंच प्रदान करने के लिए मोबाइल डिवाइस पर उपयोगकर्ता-स्तरीय प्रमाणीकरण का उपयोग करें इस प्रकार, उपयोगकर्ता-स्तरीय क्रेडेंशियल्स का नुकसान संगठन-स्तरीय नुकसान नहीं लेता है और उपयोगकर्ता-स्तर क्रेडेंशियल्स को रद्द करना आसान है।

आप एस 3 के अपलोड भी उल्लेख करते हैं एडब्ल्यूएस की एक अच्छी सुविधा है जिसे एक प्रथाबद्ध पोस्ट कहा जाता है, जहां आपका सर्वर एक बार अपलोड क्रेडेंशियल्स तैयार करता है, जो आपके मोबाइल डिवाइस एस 3 पर डेटा अपलोड करने के लिए उपयोग कर सकता है, बिना अपने सर्वर के माध्यम से डेटा को प्रॉक्सी करके।

नमूना Ruby कोड:

presigned_post = bucket.presigned_post(key: key, success_action_status: 201, acl: :public_read)

जब एक iOS ऐप तैयार किया जाता है जो AWS (जैसे S3 , CloudFront , आदि) के साथ बातचीत करेगा, तो सर्वर पर बनाम क्लाइंट पर इन सेवाओं तक पहुंच बनाने के पेशेवर और बुरा क्या है?

"एक्सेस का प्रबंधन" करके, मेरा मतलब है कि एस 3 को निजी सामग्री अपलोड करना, क्लाउडफ़्रंट के माध्यम से निजी सामग्री डाउनलोड करना

बेशक, जो भी पक्ष पहुंच को संभालता है, उसे AWS प्रवेश कुंजी को स्टोर करने और गुप्त पहुंच की आवश्यकता होगी। सुरक्षा चिंताओं में से एक है

मैं इस डिज़ाइन के प्रभाव के प्रभाव में और प्रदर्शन को लेकर लचीलापन के बारे में भी दिलचस्पी लेता हूं।

अंत में, क्या एक हाइब्रिड दृष्टिकोण को लागू करने का तर्क है जहां दोनों ग्राहक और सर्वर सीधे AWS साथ बातचीत करते हैं, या क्या कार्यान्वयन आम तौर पर एक या दूसरे के साथ जाते हैं, लेकिन दोनों नहीं?


सुरक्षा मुख्य कारण है कि मैं उपयोगकर्ता को प्रमाणित करने के बाद बैक-एंड पर सभी / अधिकांश एडब्ल्यूएस सेवा प्रमाणीकरण रखता हूं।

एक अन्य विचार यह है कि एप्पल स्टोर पर आपके आवेदन को रीफ्रेश करने के लिए जो समय लेता है, उसकी स्वीकृति प्रक्रिया दी गई है। आपके ऐप में परिवर्तनों को पुश करने के लिए आपके लिए सेब स्टोर कतार के आधार पर दिन लग सकते हैं; ऐडब्लूएस बैक-एंड पर हुए परिवर्तनों को वसीयत में किया जा सकता है

इसके अलावा, ऐडब्लूएस सेवाओं के साथ बातचीत करने के लिए एप को डिजाइन करने में, मैं हमेशा मानता हूं कि संचारित कुछ भी समझौता किया जा सकता है और उन लोगों द्वारा उपयोग किया जा सकता है जिन्होंने आपके कॉल्स को डिक्रस्ट्रक्ट किया है और अपनी आवश्यकताओं के अनुरूप खुद को फिर से बनाया है।

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

उम्मीद है की वो मदद करदे।


हालांकि कई परिदृश्य हैं, जब आप सामान्य रूप से यह किसी भी तरह से करना चाहते हैं, जब आप आईओएस का उल्लेख करते हैं तो जब आप इसे सीधे क्लाइंट से सीधे करना चाहते हैं, तो कोई भी मामला नहीं है:

एसडब्ल्यूएस के लिए सर्वर से डेटा अपलोड करने के लिए पेशेवरों:

  1. सुरक्षा

    जैसा कि दूसरे उत्तर में पहले से ही उल्लेख किया गया है, प्रारंभिक प्रमाणीकृत अनुरोध होने से आप बदमाशों और हैकर्स से बहुत परेशानी से बचेंगे अगर वे सामान को तोड़ने की कोशिश कर रहे हैं। अगर डेटा निजी है और आप वास्तव में गोपनीयता के लिए प्रतिबद्ध हैं, तो सिस्टम को प्रमाणित होने पर किसी भी डेटा लीक को रोकने के लिए आसान होगा।

  2. दर सीमित, उपयोगकर्ता कोटा, आदि

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

  3. लेखापरीक्षा

    यदि आपको अपने सर्वर पर सीधे प्रारंभिक अनुरोध प्राप्त करने के लिए क्या, कौन से, और अधिक ऐसी जानकारी कहां अपलोड की गई है, यह ट्रैक करने के लिए एक बार फिर आसान हो जाता है।

  4. विफलता पर अपवाद हैंडलिंग

    असफलता होना काफी संभव है कि आप आसानी से भविष्यवाणी नहीं कर पाए, या क्यूए परीक्षण के दौरान एक महत्वपूर्ण बग को याद नहीं कर पाए। इन सर्वर साइड को संभालना अधिक कुशल है, क्योंकि यह आपके नियंत्रण में है। जब कोई भी ऐसे मुद्दों को ग्राहक पक्ष पर उठता है, तो आप अपने क्लाइंट की ऐप को अपग्रेड करने में सक्षम होने की दया पर हैं। यदि आप इस सर्वर साइड के साथ काम कर रहे हैं, तो बग के दायरे को सीमित करने के लिए, इस तरह की कई बगों के लिए अतिरिक्त चेक को आसानी से रखा जा सकता है / तैनात किया जा सकता है।

  5. लाइव रहने का समय

    दोबारा, जैसा कि दूसरे उत्तर में बताया गया है, आपके अपडेट को अनुमोदित करने से पहले कुछ समय लग सकता है। यह गंभीर मुद्दों पर आपकी प्रतिक्रिया को बहुत नीचे लाता है, और गंभीर मुद्दों (डेटा रिसाव / गोपनीयता उल्लंघन) के मामले में कम करने के लिए मुश्किल हो सकता है जिससे महत्वपूर्ण हानि (वित्तीय / उपयोगकर्ता ट्रस्ट / नकारात्मक रेटिंग आदि)

केवल उन मामलों में जब मुझे लगता है कि आप सीधे क्लाइंट साइड से AWS डेटा अपलोड करना चाहते हैं

  • सीधी प्रसंस्करण के बिना बड़ी मात्रा में डेटा अपलोड करना, बहुत, बहुत बार।

    अगर अपलोडिंग एक बार बैंडविड्थ और नेटवर्क संसाधनों की निश्चित राशि पर खर्च करती है, तो उसे अपलोड करने से दो बार संसाधनों को दोगुना हो जाता है (एक बार client --> server , तब से server --> AWS )। इसलिए, यदि आप अक्सर बड़ी मात्रा में डेटा अपलोड करते हैं (टीबी को दैनिक बताएं), तो आप बहुत सारे संसाधनों को बर्बाद कर रहे हैं, बस एक बिंदु से दूसरे डेटा को कॉपी करते हैं ऐसे मामलों में, यह डेटा सीधे एस 3 को आगे बढ़ाएगा। लेकिन काम करने के लिए इस दृष्टिकोण के लिए, आपकी लागत बचत सुरक्षा और गोपनीयता के बारे में चिंताओं को ओवरराइड करने के लिए पर्याप्त होगी, और अधिकतर अनुप्रयोगों के लिए, यह केवल मामला नहीं है।

  • आप दीवार वाले बगीचे में हैं

    असल में, ऐप केवल कुछ पूर्व-पहचान वाले उपयोगकर्ताओं के लिए काम करता है, ऐप बस किसी और के लिए काम नहीं करता है (यह कहना है कि आप इसे कॉर्पोरेट में घर के उपयोग के लिए विकसित कर रहे हैं)। संक्षेप में, इसका अर्थ है आपके ऐप का उपयोग करने के लिए अंतिम उपयोगकर्ता के इरादे में 100% आत्मविश्वास होना चाहिए।

संपादित करें : ओपी टिप्पणियों में पूछता है

हस्ताक्षरित यूआरएल / कुकीज़ प्रदान करने वाले सर्वर के बारे में, और ग्राहक एस 3 पर अपलोड करने या क्लाउडफ़्रंट से डाउनलोड करने के लिए इसका उपयोग करता है। क्लाइंट अभी भी सीधे AWS से संपर्क करता है लेकिन सर्वर द्वारा नियंत्रित अनुमतियों की आवश्यकता है

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

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

साइनिंग यूआरएल नियंत्रण में मदद करता है, जो कि किसी दिए गए फ़ाइल को एक्सेस कर सकता है और कितनी देर तक इसे एक्सेस कर सकता है।

कुल मिलाकर, यह कुछ उपयोग मामलों के लिए अच्छी तरह से काम करना चाहिए।





amazon-cloudfront