तालिकाबद्ध काम र लगइन सङ्केतमा उभिएको व्यक्तिले एउटै API लाई फरक फरक प्रमाणपत्र, फरक आयु र फरक मालिकसँग बोलाउँछन्। कामलाई नेटवर्क मार्ग, अनुप्रयोग पहिचान र अनुमतिहरूको समूह चाहिन्छ; व्यक्तिलाई लगइन, दोस्रो कारक र सत्र चाहिन्छ। दुवै मिसाउँदा व्यक्तिको पासवर्ड बदलिएपछि बिग्रने स्वचालन, वा cron काम जीवित राख्न मात्र पर्याप्त कमजोर बनाइएको बहु-कारक नीति बन्छ।

एउटै जस्तो देखिने तीन ढोका

स्रोत-ठेगाना नियम सोध्छ कि अनुरोध कहाँबाट आयो। प्रमाणीकरण सोध्छ कि कसले बोलाइरहेको छ र कुन प्रमाण पेस गरियो। अधिकार सोध्छ कि यो प्रिन्सिपलले यो कार्य गर्न सक्छ कि सक्दैन। VPN ले तीनमध्ये पहिलो मात्र बदल्छ, र त्यो पनि कामका लागि मात्र नभई होस्टमा चल्ने हरेक प्रक्रियाका लागि बदल्छ, त्यसैले घटना अभिलेखमा तीन अवलोकन अलग राख्नुहोस्।

त्यसैले एग्रेस नोड बदल्दा स्रोत-ठेगानाका कारण आएको अस्वीकृति सुधारिन सक्छ र अवैध टोकन अछुत रहन सक्छ। त्यसैले वैध API टोकन भए पनि त्यहाँ मार्ग नभएको कामबाट निजी एन्डपोइन्टमा पुग्न सकिँदैन।

अन्तरक्रियात्मक मार्ग स्वचालनका लागि खराब टेम्प्लेट हो

व्यक्तिको लगइन स्क्रिप्टमा लेख्नु आकर्षक छ किनकि यो एक पटक चल्छ। स्क्रिप्टले पासवर्ड, सायद एक-पटक-पासवर्डको बीउ सञ्चित गर्छ, अनि मानिस आवश्यक पार्ने गरी बनाइएको चुनौतीमा निर्भर हुन्छ। OAuth का लागि हालको उत्कृष्ट सुरक्षा अभ्यास, RFC 9700, resource-owner-password-credentials अनुदानलाई प्रतिबन्ध लगाउँछ र यो दुई-कारक र बहु-चरणीय प्रमाणीकरणसँग किन खराब मिल्छ भनी व्याख्या गर्छ।

समर्थित विकल्प सामान्यतया गोप्य-क्लाइन्ट प्रवाह हो, जसमा अधिकार सर्भरले अनुप्रयोग प्रमाणित गर्छ र टोकन दिन्छ। RFC 6749 को धारा 4.4 मा रहेको client-credentials अनुदान यसको एउटा उदाहरण हो। यसको अस्तित्वले हरेक API ले यो स्वीकार्छ वा प्रयोगकर्ताले प्रत्यायोजन गरेको काम यसले प्रतिस्थापन गर्न सकिन्छ भन्ने अर्थ दिँदैन, किनकि ती सेवा मालिकसामुका प्रश्न हुन्। कोड लेख्नुअघि सेवाले कुन निगरानी-रहित मोडेल समर्थन गर्छ सोध्नुहोस्।

VPN अझै कहाँ उपयुक्त छ

VPN ले निजी API लाई आवश्यक नेटवर्क मार्ग दिन सक्छ, र त्यो वैध भूमिका हो। यसले कामलाई अनुप्रयोगसामु प्रमाणित गर्दैन, र कामले के गर्न सक्छ भन्ने सीमा तोक्दैन। साझा एग्रेस ठेगानाले काम नभई होस्ट चिनाउँछ, त्यसैले त्यो ठेगानाका लागि अनुमति-सूचीमा रहेको प्रविष्टिले त्यसमा चल्ने हरेक प्रक्रियालाई प्रवेश दिन्छ।

काम साझा रनरमा चल्ने हो भने त्यो भिन्नता कम नभई बढी महत्त्वपूर्ण हुन्छ। एउटै होस्टमा चल्ने अर्को कार्यप्रवाहले मार्ग र ठेगाना उत्तराधिकारमा पाउँछ, र API ले दुवै छुट्याउन सक्दैन। यो साझा पासवर्डकै जस्तो कमजोरी हो, एक तह तल सारिएको। प्रतिबन्ध त्यहाँ राख्नुहोस् जहाँ अनुप्रयोगले लागू गर्न सक्छ, र अनुमति-सूची अझ साँघुरो बनाउन नसक्ने भए रनर अलग राख्नुहोस्।

दुवै डिजाइनको इमानदारीसाथ तुलना गर्नुहोस्

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

दुवै उत्तर हो भने, डिजाइनलाई उधारो पासवर्ड नभई प्रत्यायोजन मोडेल चाहिन्छ। त्यो निर्णय अर्को मर्मतकर्ताले भेट्ने ठाउँमा लेख्नुहोस्।

हस्तान्तरण अघि के जाँच्ने

वास्तविक वर्करबाट एउटा अनुमत कार्य र एउटा अनिवार्य अस्वीकृति चलाउनुहोस्, र दुवै नतिजा राख्नुहोस्। त्यसपछि म्याद सकिएको प्रमाणपत्र र नेटवर्क मार्ग उपलब्ध नहुँदाको व्यवहार जाँच्नुहोस्, किनकि रातमा कसैलाई जगाउने ती दुई असफलता नै हुन्।

curl -sS -o /dev/null -w '%{http_code}\n' \
  -H "Authorization: Bearer TOKEN" https://api.example.com/v1/records

प्रिन्सिपल, दायरा, घुमाउने मालिक र कार्यान्वयन वातावरण त्यो नतिजाको छेउमा अभिलेख गर्नुहोस्। त्यही अभिलेखले अर्को घुमाउने कामलाई घटना नभई दिनचर्या बनाउँछ। लेखापरीक्षकले माग्ने भाग पनि त्यही हो।

सम्बन्धित लेखहरू