कभी एक्सपायर न होने वाली API कुंजियों की समस्या
कई साल पहले जारी की गई कुंजी, जिसे कभी रोटेट नहीं किया गया और जो आज भी मान्य है, कोई सुविधा नहीं है। यह एक जोखिम है जिसे सालों से किसी ने वास्तव में देखा तक नहीं।
खाता-स्तर का कोटा एक सीधे सवाल का जवाब देता है: इस ख़ास कुंजी ने कितना उपयोग किया है। इसे ट्रैक करना स्वाभाविक पहला क़दम है, लेकिन अकेले यह काफ़ी नहीं है, क्योंकि कुंजी बस एक क्रेडेंशियल है, और क्रेडेंशियल कई गुना बनाए जा सकते हैं। खाता-स्तर की सीमा पार करने पर आमादा कोई व्यक्ति अक्सर बस एक और खाता बना सकता है, एक और कुंजी जनरेट कर सकता है और नए सिरे से कोटा शुरू कर सकता है, जब तक कि कोई और चीज़ ऐसे आयाम को ट्रैक न कर रही हो जो केवल नया क्रेडेंशियल जारी होने से रीसेट नहीं होता।
नेटवर्क-स्तर के कोटा इसी के लिए हैं। हर नेटवर्क, यानी IPv4 पतों के लिए एक /24 ब्लॉक या IPv6 के लिए एक /48 ब्लॉक, को प्रतिदिन 2,500 अनुरोधों की साझा मुफ़्त सीमा मिलती है, जिसकी गिनती बिना कुंजी वाले ट्रैफ़िक और उस नेटवर्क से पंजीकृत सभी कुंजियों, दोनों को मिलाकर होती है। अकेली खाता-स्तर की सीमा किसी को अपनी मुफ़्त सीमा बार-बार रीसेट करने के लिए अनिश्चित काल तक नई कुंजियाँ बनाने देती। नेटवर्क-स्तर की सीमा ठीक यही कमी बंद करती है, क्योंकि यह ट्रैक करती है कि ट्रैफ़िक वास्तव में कहाँ से आ रहा है, न कि सिर्फ़ यह कि उसके साथ कौन-सा क्रेडेंशियल जुड़ा था।
दोनों में से कोई भी पैमाना अकेले पर्याप्त नहीं है, और यह साफ़ बताना ज़रूरी है कि हर एक किस चीज़ से बचाता है, क्योंकि ये अलग-अलग समस्याएँ हल करते हैं। खाता-स्तर की ट्रैकिंग किसी एक क्रेडेंशियल के उसकी अपेक्षित सीमा से कहीं ज़्यादा उपयोग से बचाती है, जो बिलिंग की सटीकता के लिए और किसी लीक हुई कुंजी को ऐसी जगह इस्तेमाल होते पकड़ने के लिए मायने रखता है जहाँ उसे नहीं होना चाहिए। नेटवर्क-स्तर की ट्रैकिंग बार-बार साइन अप करके मुफ़्त सीमा को कई गुना करने से बचाती है, जो एक अलग तरह की विफलता है जिसे अकेली खाता-स्तर की ट्रैकिंग नहीं देख सकती, क्योंकि अलग से देखने पर हर नया खाता बिल्कुल सामान्य दिखता है।
दोनों को साथ चलाने से एक वाजिब जटिलता ज़रूर पैदा होती है: एक ही नेटवर्क साझा करने वाले कई वास्तविक उपयोगकर्ता, जैसे कुछ गिने-चुने सार्वजनिक IP पतों के पीछे काम करने वाली कोई कंपनी, सिद्धांत रूप में ऐसी नेटवर्क-स्तर की सीमा से टकरा सकते हैं जिसका किसी एक उपयोगकर्ता के वास्तविक उपयोग से कोई लेना-देना नहीं है। हम इसे रोलिंग IP स्लॉट से संभालते हैं, यानी अलग-अलग पतों की एक तय संख्या जिनसे किसी कुंजी का उपयोग किया जा सकता है, और ऐसे कोटा हेडर से जो ठीक-ठीक दिखाते हैं कि सीमा के मुक़ाबले उनमें से कितने स्लॉट उपयोग में हैं, ताकि एक वैध साझा नेटवर्क बिना किसी स्पष्टीकरण वाली अपारदर्शी दीवार से टकराने के बजाय अपनी असली स्थिति देख सके।
हमारा मानना है कि यह ऐसा मामला है जहाँ सरल डिज़ाइन, यानी केवल एक आयाम ट्रैक करना, ईमानदार उपयोगकर्ताओं के लिए वास्तव में बदतर होता, न कि सिर्फ़ दुरुपयोग के ख़िलाफ़ कम सुरक्षा देता। केवल नेटवर्क वाली सीमा किसी खाते को उसी नेटवर्क पर हो रही दूसरी, असंबंधित गतिविधि के लिए दंडित करती। केवल खाते वाली सीमा मुफ़्त सीमा को उन सभी के लिए खुला छोड़ देती जो पर्याप्त खाते बनाने को तैयार हों, ताकि वे उसे अनिश्चित काल तक कई गुना कर सकें। दोनों को साथ चलाना, और रिस्पॉन्स हेडर के ज़रिए हर एक की जानकारी देना, ज़्यादा पेचीदा है, लेकिन यही वह रूप है जो मुफ़्त सीमा को वास्तव में वही सुरक्षा देता है जो उसे देनी चाहिए, और उसे उसके इच्छित तरीक़े से उपयोग करने वालों को चुपचाप दंडित नहीं करता।