GCP - Understanding Domain-Wide Delegation

Support HackTricks

This post is the introduction of https://www.hunters.security/en/blog/delefriend-a-newly-discovered-design-flaw-in-domain-wide-delegation-could-leave-google-workspace-vulnerable-for-takeover which can be accessed for more details.

Understanding Domain-Wide Delegation

Google Workspace का Domain-Wide delegation एक पहचान वस्तु, चाहे वह external app हो जो Google Workspace Marketplace से हो या एक आंतरिक GCP Service Account, को उपयोगकर्ताओं की ओर से Workspace में डेटा तक पहुँचने की अनुमति देता है। यह सुविधा, जो Google APIs या सेवाओं के साथ बातचीत करने वाले ऐप्स के लिए महत्वपूर्ण है जिन्हें उपयोगकर्ता का अनुकरण करने की आवश्यकता होती है, कार्यक्षमता को बढ़ाती है और कार्यों को स्वचालित करके मानव त्रुटियों को कम करती है। OAuth 2.0 का उपयोग करते हुए, ऐप डेवलपर्स और प्रशासक इन सेवा खातों को उपयोगकर्ता डेटा तक पहुँच प्रदान कर सकते हैं बिना व्यक्तिगत उपयोगकर्ता की सहमति के। Google Workspace दो मुख्य प्रकार की वैश्विक प्रतिनिधि वस्तु पहचान बनाने की अनुमति देता है:

  • GWS Applications: Workspace Marketplace से ऐप्स को एक प्रतिनिधि पहचान के रूप में सेट किया जा सकता है। Marketplace में उपलब्ध होने से पहले, प्रत्येक Workspace ऐप Google द्वारा संभावित दुरुपयोग को कम करने के लिए समीक्षा की जाती है। जबकि यह दुरुपयोग के जोखिम को पूरी तरह से समाप्त नहीं करता, यह ऐसे घटनाओं के होने की कठिनाई को काफी बढ़ा देता है।

Domain-Wide Delegation: Under the Hood

यह है कि एक GCP Service Account Google APIs को Google Workspace में अन्य पहचान के पक्ष में कैसे एक्सेस कर सकता है:

  1. पहचान एक JWT बनाती है: पहचान सेवा खाते की निजी कुंजी (JSON कुंजी जोड़ी फ़ाइल का हिस्सा) का उपयोग करके एक JWT पर हस्ताक्षर करती है। यह JWT सेवा खाते, अनुकरण करने के लिए लक्षित उपयोगकर्ता, और REST API के लिए अनुरोधित OAuth स्कोप के बारे में दावे शामिल करता है।

  2. पहचान JWT का उपयोग करके एक एक्सेस टोकन का अनुरोध करती है: ऐप/उपयोगकर्ता JWT का उपयोग करके Google के OAuth 2.0 सेवा से एक एक्सेस टोकन का अनुरोध करता है। अनुरोध में लक्षित उपयोगकर्ता (उपयोगकर्ता का Workspace ईमेल) और जिन स्कोप के लिए एक्सेस का अनुरोध किया गया है, शामिल होते हैं।

  3. Google की OAuth 2.0 सेवा एक एक्सेस टोकन लौटाती है: एक्सेस टोकन सेवा खाते के अधिकार का प्रतिनिधित्व करता है कि वह निर्दिष्ट स्कोप के लिए उपयोगकर्ता की ओर से कार्य करे। यह टोकन आमतौर पर अल्पकालिक होता है और इसे समय-समय पर (ऐप की आवश्यकता के अनुसार) नवीनीकरण करना आवश्यक होता है। यह समझना आवश्यक है कि JWT टोकन में निर्दिष्ट OAuth स्कोप की वैधता होती है और परिणामस्वरूप एक्सेस टोकन पर प्रभाव डालती है। उदाहरण के लिए, कई स्कोप वाले एक्सेस टोकन कई REST API ऐप्स के लिए वैधता रखेंगे।

  4. पहचान एक्सेस टोकन का उपयोग करके Google APIs को कॉल करती है: अब एक प्रासंगिक एक्सेस टोकन के साथ, सेवा आवश्यक REST API तक पहुँच सकती है। ऐप इस एक्सेस टोकन का उपयोग Google APIs के लिए अपने HTTP अनुरोधों के "Authorization" हेडर में करता है। ये APIs टोकन का उपयोग अनुकरण की गई पहचान की पुष्टि करने और यह सुनिश्चित करने के लिए करती हैं कि इसके पास आवश्यक प्राधिकरण है।

  5. Google APIs अनुरोधित डेटा लौटाती हैं: यदि एक्सेस टोकन मान्य है और सेवा खाते के पास उचित प्राधिकरण है, तो Google APIs अनुरोधित डेटा लौटाती हैं। उदाहरण के लिए, निम्नलिखित चित्र में, हमने लक्षित Workspace उपयोगकर्ता से संबंधित सभी Gmail संदेश ID को सूचीबद्ध करने के लिए users.messages.list विधि का उपयोग किया है।

Support HackTricks

Last updated