
CA Optics - Azure AD सशर्त एक्सेस अंतर विश्लेषक
विकास की प्राथमिकताओं में बदलाव और अपने सामुदायिक प्रयासों को अन्य क्षेत्रों (PoCs, अन्य टूल और डेमो/प्रस्तुतियाँ) पर केंद्रित करने के कारण प्रोजेक्ट संग्रहीत कर दिया गया है; प्रोजेक्ट को केवल-पठनीय (read-only) बना दिया गया है।
Azure AD Conditional Access Gap Analyzer, जटिल Azure Active Directory Conditional Access Policy सेटअपों में मौजूद गैपों को स्कैन करने के लिए एक समाधान है।
यदि आप Conditional Access के लिए नए हैं, तो हम अनुशंसा करते हैं कि आप निम्न Microsoft लेख देखें: https://docs.microsoft.com/en-us/azure/active-directory/conditional-access/overview
इस टूल को चलाने के लिए एक-लाइनर: (यदि आप केवल यही भाग पढ़ने की योजना बना रहे हैं, और इंस्टॉलेशन पूरा कर चुके हैं)
node ./ca/main.js --mapping --skipObjectId=259fcf40-ff7c-4625-9b78-cd11793f161f --clearPolicyCache --clearTokenCache --clearMappingCache
पूर्वापेक्षाएँ पूरी करने और इस readme फ़ाइल को पढ़ने के बाद, निम्नलिखित पर विचार करें:
reportOnly नीतियों को समापनकारी नहीं माना जाता है:
Read: scope
प्रत्येक स्कैन --clearPolicyCache के साथ चलाएँ
प्रत्येक स्कैन --clearMappingCache के साथ चलाएँ यदि आप नीतियों से संबंधित groups / users में बदलाव करते हैं
केवल users और apps को लक्षित करने वाली नीतियाँ दायरे में हैं (यह सबसे सामान्य दायरा है, लेकिन इसका मतलब है, उदाहरण के लिए, कि security registration policy का मूल्यांकन नहीं किया जाता है)
Read: scope
परीक्षण वातावरण (test environment) से शुरू करें ताकि आप कुछ अनुभव प्राप्त कर सकें और टूल की कार्यप्रणाली के बारे में अपेक्षाएँ निर्धारित कर सकें
यदि आपके पास ज्ञात group या users हैं जिन्हें नीतियों से बाहर रखा गया है, तो --skipObjectIds के साथ उन objects को परिभाषित करें जिन्हें स्कैन से बाहर रखा जाना है, जब तक कि आप बहिष्करणों की पुष्टि नहीं करना चाहते
यदि आप कई वातावरणों में स्कैन चला रहे हैं, तो सुनिश्चित करें: नए स्कैन चलाने से पहले logins और caches हटा दिए जाएँ
Read:पैरामीटर
az account clear के साथ आगे बढ़ने से पहले AZ CLI cache को साफ़ करें और जिस environment को स्कैन करने की योजना है उसमें az login के साथ नया login करेंरिलीज़ नोट्स: 0.7.1
- निर्भरताएँ (dependencies) और रिपोर्ट टेक्स्ट आउटपुट अपडेट किए गए
रिलीज़ नोट्स: 0.7
- अब डिफ़ॉल्ट रूप से beta endpoint का उपयोग करता है, --expand विकल्प अब --allTerminations के उपयोग के बावजूद रिपोर्ट में परिणामों का विस्तार करता है
रिलीज़ नोट्स: 0.6.9
- अलग निरीक्षण के लिए --expand=9c06d103-f5b0-4404-bb25-aec4636912cd,47087cd3-64e9-470b-980a-5662f498e016 का उपयोग करना और 10 group members को expand करना।
रिलीज़ नोट्स: 0.6.8
- जब आप GUI में किसी भी guest condition के साथ policy को अपडेट करते हैं, तो वह policy अपडेट के बाद केवल beta endpoint से उपलब्ध होगी (पूर्वावलोकन के दौरान)।
- यह अपडेट उन नीतियों के लिए सामान्यीकरण (normalization) लाता है जो इस व्यवहार के कारण beta endpoint पर स्थानांतरित हो जाती हैं।
- नीति का मूल्यांकन पिछली guest conditions की तरह किया जाएगा, जब तक निम्नलिखित शर्तें शामिल हैं "internalGuest,b2bCollaborationGuest,b2bCollaborationMember" और नीति से कोई tenant बाहर नहीं रखा गया है। स्थानांतरित नीतियों का मूल्यांकन करने के लिए,
- इस व्यवहार को ध्यान में रखते हुए CaOptics चलाते समय '--allowPreviewPolicies' का उपयोग करें
रिलीज़ नोट्स: 0.6.6-7 beta
- login और graph के लिए अलग-अलग login endpoints के उपयोग की अनुमति दें, पैरामीटर: --altLogin --altGraph
- नीतियों के लिए कस्टम फ़िल्टरिंग के उपयोग की अनुमति दें (यह केवल तभी अनुशंसित है जब नीतियाँ अपेक्षित schema का पालन नहीं करती हैं)
रिलीज़ नोट्स: 0.6.5 beta
- रिपोर्टिंग में काउंटर जोड़ा गया जब रिपोर्ट में बड़ी संख्या में permutations भी जोड़े जाते हैं (डिफ़ॉल्ट केवल unterminated जोड़ता है)
- मामूली कोड सुधार: <var> को <let> में बदलना
- रिपोर्ट फ़ाइल नाम में अब दिन, महीना, वर्ष और tenantId शामिल होता है, जैसे report_day_4_month_9_year_2022-tenant_48f55450-183a-45d6-a9ce-68f3cbc68947.csv
रिलीज़ नोट्स: 0.6.4 beta
- एक ही कॉल में अधिक groups प्राप्त करें (कम batching)
- for await loops का सामान्य रूप से उपयोग करते समय पाई गई race condition को ठीक किया गया
- डिलिमिटरों के बीच मानों को "" से घेरें (CSV)
रिलीज़ नोट्स: 0.6.3 beta
- mapped objects को संभालने के तरीके में अनुकूलन।
- Mapped objects कैश किए जाते हैं। आप 'clearMappingCache' पैरामीटर का उपयोग करके object mapping को फिर से बना सकते हैं
- लुकअप कुंजियाँ हमेशा पहले 'user/group/role' conditions से शुरू होंगी
- प्रदर्शन प्रभाव का परीक्षण करने के लिए usermap को random UUID's से भरने की संभावना जोड़ी गई (यह केवल डीबग विकल्प है, और वास्तव में ऐसा कुछ नहीं जो non-beta संस्करणों में हो)
रिलीज़ नोट्स: 0.6.2 beta
- cache पैरामीटरों को अलग-अलग फ़ंक्शनों में विभाजित किया गया -> (clearTokenCache और ClearPolicyCache)
- --aggressive पैरामीटर के साथ permutations पर pre-optimized algorithm चलाने की संभावना जोड़ी गई (उच्च मेमोरी खपत, केवल A/B परीक्षण के लिए यहाँ)
- मर्ज पूर्ण।
रिलीज़ नोट्स: 0.6.1 beta
- CSV रिपोर्टिंग का बुनियादी संस्करण जोड़ा गया
- permutation generation को सुव्यवस्थित किया गया ताकि आवश्यक permutations उत्पन्न हों, और कुछ permutations lookups पर पहले ही समाप्त हो जाएँ
रिलीज़ नोट्स: 0.6 beta (पहला गैर-"साइलेंट" रिलीज़)
- MD रिपोर्ट में App displayNames जोड़े गए। user type में object type जोड़ा गया
रिलीज़ नोट्स: 0.5.2,0.5.1,0.5 beta (रिलीज़ नोट्स के लिए पिछली branches देखें)

क्रॉस-पॉलिसी डिटेक्शन का उदाहरण
❌ मान 0 वाले किसी भी permutation का अर्थ है कि conditions के उस विशेष संयोजन के लिए कोई policy समाप्त नहीं हुई।
| नीति | टर्मिनेशन | लुकअप |
|---|---|---|
| All | 0 | Applications:88cc92be-d474-4d95-a57d-7b3ef701f510 -> Locations:finland -> users:GuestsOrExternalUsers |
| All | 0 | Applications:88cc92be-d474-4d95-a57d-7b3ef701f510 -> Locations:finland -> users:Jane Doe |
| All | 0 | Applications:88cc92be-d474-4d95-a57d-7b3ef701f510 -> Locations:finland -> users:John Doe |
✅ डिटेक्शन का विस्तृत विवरण docs/example.md में पढ़ें
क्रमपरिवर्तन getPol2.js द्वारा उत्पन्न किए जाते हैं