मुख्य विषयवस्तु में जाएं

Ilum OAuth प्रदाता

विहंगावलोकन

Ilum’s architecture includes a range of microservices such as Airflow, Superset, Grafana, Gitea, and Minio. These services often provide access to critical data or, in the case of Airflow, direct interaction with cluster resources. As a result, centralized access management becomes essential. To address this, Ilum offers an integrated OAuth Provider, allowing centralized authentication and authorization through the Ilum UI and Ilum-Core.

सक्षम होने पर, Ilum स्वचालित रूप से OAuth-आधारित पहुँच के लिए समर्थित माइक्रोसर्विसेज को पूर्व-कॉन्फ़िगर करता है। व्यवस्थापकों को इस एकीकरण को सक्रिय करने के लिए केवल कुछ हेल्म चार्ट मानों को कॉन्फ़िगर करने की आवश्यकता है।

Within Ilum’s user management system, you can define which users have access to specific microservices. You can also map Ilum roles and groups to the corresponding roles and groups within each integrated service, enabling consistent access control across the platform.

जल्दी शुरू

OAuth प्रदाता सक्षम के साथ Ilum लॉन्च करने के लिए, आपको निम्नलिखित दो चरणों को पूरा करना होगा:

  1. स्विच वैश्विक.सुरक्षा.हाइड्रा.सक्षम हेल्म मूल्यों में करने के लिए सच्चा
  2. में Ilum-UI का URL निर्दिष्ट करें global.security.hydra.uiDomain और global.security.hydra.uiProtocol

UI URL वह पता है जिसे आप Ilum-UI तक पहुँचने के लिए सीधे अपने ब्राउज़र में दर्ज कर सकते हैं। इस URL को प्राप्त करने के दो तरीके हैं:

  1. मिनिक्यूब में आप प्रवेश एडऑन को सक्षम कर सकते हैं:
minikube addons enable प्रवेश

और फिर आपको इस तरह के मूल्यों में इलम-यूआई प्रवेश को सक्षम करना चाहिए:

इलम यूआई:
प्रवेश:
सक्षम: सच्चा
मेज़बान: इलम-यूआई-url.डोमेन

अंत में आप बना सकते हैं मान.yaml रेती:

व्‍यापक:
प्रतिभूति:
हाइड्रा:
सक्षम: सच्चा
uiDomain: "ilum-ui-url.domain"
uiProtocol: "http"
इलम यूआई:
प्रवेश:
सक्षम: सच्चा
मेज़बान: "ilum-ui-url.domain"

और अपने क्लस्टर को अपग्रेड करें:

हेल्म अपग्रेड इलम इलम / -f values.yaml --पुनः प्रयोग-मान
  1. आप नोड IP पता और NodePort Ilum-UI सेवा का उपयोग कर सकते हैं।

नोडपोर्ट का उपयोग करने के लिए अपनी इलम-यूआई सेवा को कॉन्फ़िगर करें:

इलम यूआई:
सेवा:
प्रकार: नोडपोर्ट
नोडपोर्ट: 31007

अपने नोड का आईपी पता प्राप्त करें:

kubectl get nodes -ओ wide

इलम

UI URL बनाने के लिए IP Address और Node Port का उपयोग करें और इसे मान.yaml:

व्‍यापक:
प्रतिभूति:
हाइड्रा:
सक्षम: सच्चा
uiDomain: "192.168.49.2:31007"
uiProtocol: "http"
इलम यूआई:
सेवा:
प्रकार: नोडपोर्ट
नोडपोर्ट: 31007

क्लस्टर को अपग्रेड करें:

हेल्म अपग्रेड इलम इलम / -स्‍त्री-विषयक values.yaml --reuse-values

अंत में अपग्रेड के बाद आप चला सकते हैं:

Kubectl फली प्राप्त करें

और यह आउटपुट देखें:

इलम

परीक्षण उद्देश्यों के लिए आइए सुपरसेट के साथ इलम लॉन्च करें

हेल्म अपग्रेड इलम इलम / --अस्त हो superset.enabled सच्चा --पुन: उपयोग-मान

एक बार सुपरसेट तैयार हो जाने के बाद, आप दर्ज करके लॉग इन कर सकते हैं http://192.168.49.2:31007/external/superset आपके ब्राउज़र में। आपको इलम यूआई पर एक के साथ पुनर्निर्देशित किया जाएगा login_challenge URL में क्वेरी पैरामीटर.

अपनी साख दर्ज करने के बाद, आपको सुपरसेट पर वापस भेज दिया जाएगा, अब लॉग इन किया गया है।

इलम भूमिकाएं और समूह मानचित्रण

इलम आपको यह परिभाषित करने की अनुमति देता है कि इसकी आंतरिक भूमिकाओं और समूहों को प्रत्येक एकीकृत माइक्रोसर्विस द्वारा उपयोग की जाने वाली भूमिकाओं के लिए कैसे मैप किया जाता है। आप उन डिफ़ॉल्ट भूमिकाओं को भी कॉन्फ़िगर कर सकते हैं जो स्वचालित रूप से उपयोगकर्ताओं को असाइन की जाती हैं.

यह कॉन्फ़िगरेशन हेल्म मानों के माध्यम से प्रबंधित किया जाता है। डिफ़ॉल्ट रूप से, यह निम्नानुसार संरचित है:

इलम कोर:
हाइड्रा:
प्रतिचित्रण:
भूमिकाएँToGitea: शून्य
समूहToGitea: शून्य
भूमिकाएँToMinio:
- इलुमओब्ज: "व्यवस्थापक"
सेवाObjs:
- "कंसोल एडमिन"
- इलुमओब्ज: "DATA_ENGINEER"
सेवाObjs:
- "पढ़ने के लिए"
- "केवल लिखें"
- "निदान"
समूहToMinio: शून्य
रोल्सटूसुपरसेट:
- इलुमओब्ज: "व्यवस्थापक"
सेवाObjs:
- "व्यवस्थापक"
- इलुमओब्ज: "DATA_ENGINEER"
सेवाObjs:
- "अल्फा"
समूहToSuperset: शून्य
रोल्सटूएयरफ्लो:
- इलुमओब्ज: "व्यवस्थापक"
सेवाObjs:
- "व्यवस्थापक"
- इलुमओब्ज: "DATA_ENGINEER"
सेवाObjs:
- "उपयोगकर्ता"
समूहToAirflow: शून्य
रोल्सटूग्राफाना:
- इलुमओब्ज: "व्यवस्थापक"
सेवाObjs:
- "व्यवस्थापक"
- इलुमओब्ज: "DATA_ENGINEER"
सेवाObjs:
- "संपादक"
समूहToGrafana: शून्य
minioMinAccessभूमिका: "पढ़ने के लिए"
airflowMinAccessRole: "दर्शक"
सुपरसेटमिनएक्सेसरोल: "गामा"
grafanaMinAccessभूमिका: "दर्शक"
giteaMinAccessभूमिका: शून्य

1. समूहों का मानचित्रण

समूहToAirflow, समूहToGrafana, समूहToSuperset, समूहToMinio, समूहToGitea वर्णन करें कि कैसे इलम समूहों को माइक्रोसर्विसेज में भूमिकाओं के लिए मैप किया जाता है जो इन क्षेत्रों को समर्पित हैं

उदाहरण के लिए, यदि आपने इलम में एक समूह बनाया है जिसका नाम है प्रबंधकों, आप इसे "व्यवस्थापक" और रिवाज "प्रबंधक" निम्नलिखित कॉन्फ़िगरेशन के साथ एयरफ्लो में भूमिकाएं:

इलम कोर:
हाइड्रा:
प्रतिचित्रण:
समूहToAirflow:
- इलुमओब्ज: "प्रबंधक"
सेवाObjs:
- "व्यवस्थापक"
- "उपयोगकर्ता"

यदि लक्ष्य माइक्रोसर्विस में निर्दिष्ट भूमिकाएँ मौजूद नहीं हैं, तो उन्हें अनदेखा कर दिया जाएगा

2. मानचित्रण भूमिकाएँ

भूमिकाएँToGitea, रोल्सटूग्राफाना, रोल्सटूसुपरसेट, रोल्सटूएयरफ्लो, भूमिकाएँToMinio वर्णन करें कि कैसे इलम भूमिकाओं को माइक्रोसर्विसेज में भूमिकाओं के लिए मैप किया जाता है जो इन क्षेत्रों को समर्पित हैं

उदाहरण के लिए, यदि आपने इलम नाम में एक भूमिका बनाई है विश्लेषणात्मक, आप इसे "उपयोगकर्ता" और रिवाज "विश्लेषणात्मक" निम्नलिखित कॉन्फ़िगरेशन के साथ एयरफ्लो में भूमिकाएं:

इलम कोर:
हाइड्रा:
प्रतिचित्रण:
समूहToAirflow:
- इलुमओब्ज: "विश्लेषणात्मक"
सेवाObjs:
- "विश्लेषणात्मक"
- "उपयोगकर्ता"

यदि लक्ष्य माइक्रोसर्विस में निर्दिष्ट भूमिकाएँ मौजूद नहीं हैं, तो उन्हें अनदेखा कर दिया जाएगा

3. न्यूनतम भूमिकाएँ

फ़ील्ड minioMinAccessभूमिका, airflowMinAccessRole, सुपरसेटमिनएक्सेसरोल, grafanaMinAccessभूमिका, giteaMinAccessभूमिका माइक्रोसर्विसेज में कौन सी भूमिका डिफ़ॉल्ट रूप से लॉग-इन उपयोगकर्ता को असाइन की जाएगी यह निर्दिष्ट करने के लिए उपयोग किया जाता है यदि कोई अन्य भूमिका मैपिंग नहीं मिलती है।

उदाहरण के लिए, डिफ़ॉल्ट कॉन्फ़िगरेशन में:

minioMinAccessभूमिका: "पढ़ने के लिए"
airflowMinAccessRole: "दर्शक"
सुपरसेटमिनएक्सेसरोल: "गामा"
grafanaMinAccessभूमिका: "दर्शक"
giteaMinAccessभूमिका: शून्य

प्रत्येक इलम उपयोगकर्ता जिसके पास माइक्रोसर्विस तक पहुंच है, उसके पास केवल होगा केवलपन प्रवेश

4. अनुमतियां

माइक्रोसर्विस तक पहुंचने के लिए, उपयोगकर्ता के पास संबंधित अनुमति होनी चाहिए: MINIO_READ, GRAFANA_READ, AIRFLOW_READ, SUPERSET_READ, GITEA_READ

If a user does not have the required permission, they will not be able to access the service, even if they have a role assigned within that service

5. मैपिंग को फिर से लिखना

इलम प्रदान करता है ilum-core.hydra.rewriteMapping field, जो सच्चा डिफ़ॉल्ट रूप से। सक्षम होने पर, Ilum-Core मौजूदा मैपिंग कॉन्फ़िगरेशन को हर बार सेवा पुनरारंभ होने पर हेल्म चार्ट में निर्दिष्ट मानों के साथ अधिलेखित कर देगा।

OAuth प्रदाता कॉन्फ़िगरेशन

Ilum Helm चार्ट में, आप OAuth प्रदाता सेवा, इसके संबद्ध पॉड्स और OAuth क्लाइंट सेटिंग्स कॉन्फ़िगर कर सकते हैं।

1. OAuth क्लाइंट कॉन्फ़िगरेशन

नीचे OAuth क्लाइंट कॉन्फ़िगरेशन के लिए डिफ़ॉल्ट मान दिए गए हैं:

व्‍यापक:
प्रतिभूति:
हाइड्रा:
uiDomain: ""
uiProtocol: "http"
क्लाइंटआईडी: "इलम-क्लाइंट"
क्लाइंटसीक्रेट: "गुप्त"
इलम कोर:
हाइड्रा:
recreateक्लाइंट: सच्चा

क्लाइंटआईडी और क्लाइंटसीक्रेट OAuth क्लाइंट क्रेडेंशियल्स निर्दिष्ट करें।

uiDomain और uiProtocol define the domain and protocol of the Ilum UI. It is required for the OIDC workflow by both the OAuth Provider and the microservices, particularly for operations such as redirecting users to the Ilum UI login page. uiProtocol can be एचटीटीपी नहीं तो एचटीटीपीएस

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

2. परिनियोजन कॉन्फ़िगरेशन

नीचे OAuth प्रदाता परिनियोजन कॉन्फ़िगरेशन के लिए डिफ़ॉल्ट मान दिए गए हैं:

इलम कोर:
हाइड्रा:
cookies:
same_site_mode: "Lax"
डीएसएन: "postgres://ilum:CHANGEMEPLEASE@ilum-postgresql:5432/hydra?sslmode=disable"
रहस्यप्रणाली: "चेंजमीप्लीज"
अलग तैनाती: गलत
इमेजपुलपॉलिसी: "IfNotPresent"
संसाधन: शून्य

cookies.same_site_mode is used to specify SameSite value of CSRF cookies set in Set-Cookie header by hydra during OIDC worflow. This value may require change under proxies for OIDC to work correctly

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

रहस्यप्रणाली OIDC वर्कफ़्लो के दौरान संवेदनशील डेटा को सुरक्षित रूप से संग्रहीत करने के लिए उपयोग किया जाता है, साथ ही OAuth क्लाइंट से संबंधित जानकारी, प्रदान किए गए रहस्य का उपयोग करके डेटाबेस में एन्क्रिप्ट करके। उत्पादन में सेट किया जाना चाहिए

अलग तैनाती एक ध्वज है जो निर्धारित करता है कि OAuth प्रदाता को Ilum-Core के हिस्से के रूप में या एक अलग परिनियोजन के रूप में तैनात करना है या नहीं। डिफ़ॉल्ट रूप से, OAuth प्रदाता न्यूनतम संसाधनों (20Mi स्मृति और CPU का 1m) का उपयोग करता है। भारी भार के तहत, यह सीपीयू के 100 मीटर और मेमोरी के 100 एमआई तक स्केल कर सकता है, लेकिन इलम-कोर के साथ चलने पर यह आमतौर पर चिंता का विषय नहीं है। हालाँकि, यदि आपको इसके संसाधन उपयोग पर अधिक नियंत्रण की आवश्यकता है, तो आप OAuth प्रदाता को अलग से परिनियोजित करने के लिए इस ध्वज को सही पर सेट कर सकते हैं।

संसाधन स्मृति और CPU के लिए संसाधन अनुरोध और सीमाएँ निर्दिष्ट करता है. यह फ़ील्ड केवल तभी प्रासंगिक होती है जब OAuth प्रदाता को अलग से परिनियोजित किया जाता है, जिससे आप इसके संसाधन आवंटन को नियंत्रित कर सकते हैं।

3. सेवा कॉन्फ़िगरेशन

नीचे OAuth प्रदाता सेवा कॉन्फ़िगरेशन के लिए डिफ़ॉल्ट मान दिए गए हैं:

इलम कोर:
हाइड्रा:
सेवा:
डोमेन: इलम-हाइड्रा
प्रकार: "क्लस्टरआईपी"
पब्लिकपोर्ट: 4444
एडमिनपोर्ट: 4445
पब्लिकनोडपोर्ट: ""
एडमिननोडपोर्ट: ""
क्लस्टरआईपी: ""
लोडबैलेंसरआईपी: ""
एनोटेशन: { }

It’s important to note that the OAuth Provider used by Ilum includes two clients:

  1. व्यवस्थापक ग्राहक: यह क्लाइंट विशेष रूप से Ilum Core द्वारा व्यवस्थापकीय उद्देश्यों के लिए OIDC वर्कफ़्लो में उपयोग किया जाता है।

  2. सार्वजनिक ग्राहक: इस क्लाइंट का उपयोग microservices द्वारा प्रमाणीकरण, उपयोगकर्ता जानकारी और OIDC प्रक्रिया के दौरान आवश्यक अन्य समापन बिंदुओं तक पहुँचने के लिए किया जाता है।

4. हुड के नीचे OAuth प्रदाता

इलम हाइड्रा को अपने OAuth प्रदाता के रूप में उपयोग करता है, और यह हाइड्रा को इलम-कोर परिनियोजन के हिस्से के रूप में या एक अलग तैनाती के रूप में लॉन्च कर सकता है। स्टार्टअप के दौरान, हाइड्रा एक क्लाइंट बनाने के लिए एक कमांड चलाता है जिसका उपयोग उपयोगकर्ता लॉगिन के लिए माइक्रोसर्विसेज द्वारा किया जाएगा।

आगे के अनुकूलन के लिए या हाइड्रा से खुद को परिचित करने के लिए, आप इसका उल्लेख कर सकते हैं हाइड्रा प्रलेखन पृष्ठ

माइक्रोसर्वाइज़ में OAuth पर नोट्स

1. मिनियो

By default, Minio is preconfigured by Ilum to use Ilum’s OAuth Provider. However, if the SSO के साथ साइन इन करें लॉगिन स्क्रीन पर विकल्प दिखाई नहीं देता है, आपको मिनियो परिनियोजन को पुनरारंभ करना होगा:

Kubectl rollout restart deployment ilum-minio.

समस्या इसलिए होती है क्योंकि OAuth प्रदाता पूरी तरह से प्रारंभ किया गया है, Minio स्टार्टअप पर OAuth प्रदाता को नहीं पहचानने के लिए कारण प्रारंभ हो सकता है।

2. गीता

गिटिया इलम द्वारा पूर्व-कॉन्फ़िगर नहीं किया गया है। इसलिए, Ilum उपयोगकर्ताओं के साथ प्रमाणीकरण को कॉन्फ़िगर करने के लिए, आपको निम्नलिखित कॉन्फ़िगरेशन निर्दिष्ट करने की आवश्यकता है:

गीता:
सक्षम: सच्चा
गीता:
कॉन्फिग:
सर्वर:
ROOT_URL: <इलम-यूआई-यूआरएल>/बाहरी/गीटिया
औथ:
- नाम: इलम
प्रदाता: ओपनआईडीकनेक्ट
अत्‍यंत महत्वपूर्ण: <ऊथ-ग्राहक-परिचय>
रहस्य: ""
autoDiscoverUrl: "/बाहरी/हाइड्रा/.अच्छी तरह से ज्ञात/openid-कॉन्फ़िगरेशन"
क्षेत्र: "ओपनआईडी ईमेल प्रोफ़ाइल"

बदलें oauth-क्लाइंट-आईडी, oauth-ग्राहक-गुप्त और इलम यूआई यूआरएल उचित मानों के साथ (डिफ़ॉल्ट क्लाइंट-आईडी और क्लाइंट-सीक्रेट हैं इलम ग्राहक और रहस्य)

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

Kubectl गुप्त ilum-gitea-inline-config ilum-gitea-init ilum-gitea हटाएं

3. ग्राफाना

Grafana स्वचालित रूप से OAuth प्रमाणीकरण का उपयोग करने के लिए Ilum द्वारा पूर्व-कॉन्फ़िगर किया गया है। हालाँकि, आपको निर्दिष्ट करना होगा root_url मूल्य के रूप में /बाहरी/ग्राफानाजगह आपके वास्तविक Ilum-UI URL के साथ, OIDC वर्कफ़्लो के ठीक से कार्य करने के लिए:

क्यूब-प्रोमेथियस-स्टैक:
ग्राफाना:
grafana.ini:
सर्वर:
root_url: "http://192.168.49.2:31007/external/grafana"

इसके अतिरिक्त, यदि आपको भूमिकाओं और समूहों को Grafana में मैप करने के तरीके पर अधिक नियंत्रण की आवश्यकता होती है, तो आप संशोधित करना चाह सकते हैं role_attribute_path मूल्य:

क्यूब-प्रोमेथियस-स्टैक:
ग्राफाना:
grafana.ini:
auth.generic_oauth:
role_attribute_path: इसमें शामिल हैं(grafana_roles, 'व्यवस्थापक') && 'एडमिन' || इसमें शामिल हैं(grafana_roles, 'संपादक') && 'संपादक' || 'दर्शक'

4. 400: लॉगिन के दौरान खराब अनुरोध

यदि OIDC के माध्यम से लॉग इन करने का प्रयास करते समय आपको यह त्रुटि दिखाई देती है, तो यह Minio के कारण हो सकता है। इस मामले में, आपको मिनियो से लॉग आउट करना चाहिए, क्योंकि जिस तरह से मिनियो हाइड्रा सत्र का प्रबंधन करता है वह अन्य सत्रों में हस्तक्षेप कर सकता है।

5. Using hydra under cloud proxies and with https

When working with Hydra on the cloud, you may encounter issues related to the HTTPS protocol or how your cloud provider’s proxy operates. Here are some solutions that might help:

  1. Set ilum-core.hydra.cookies.same_site_mode तक Lax नहीं तो Strict when using HTTPS.

Hydra uses CSRF tokens during its OIDC workflow, which are set via the Set-Cookie header. If the SameSite value is set to None over HTTPS, the cookie may not be stored, causing the OIDC workflow to fail. Therefore, you must set it to Lax नहीं तो Strict depending on your requirements.

  1. Ensure the root_url of each service and uiProtocol use the HTTPS protocol.

This is necessary because some proxies treat HTTP URLs as insecure and may block or alter requests to Hydra, disrupting the OIDC workflow.

  1. Add Hydra to the proxy’s allowlist (whitelist).

If you are using a different domain or protocol for Hydra or any microservices, ensure they are added to the proxy’s allowlist. Otherwise, the proxy may interfere with requests during the OIDC workflow, leading to errors.

6. Using hydra along with LDAP server

If you use an LDAP server for user management, you can connect Ilum-Core to LDAP and set the security type to LDAP. After that, when logging into microservices such as MinIO, Gitea, Superset, Airflow, or Grafana via Hydra, you will be redirected to the Ilum-UI. There, you can use your LDAP credentials to log in to the microservice.

To learn more about Ilum-Core LDAP connection configuration, visit the LDAP documentation page.