مزود Ilum OAuth
نظره عامه
تتضمن بنية Ilum مجموعة من الخدمات المصغرة مثل Airflow و Superset و Grafana و Gitea و Minio. غالبا ما توفر هذه الخدمات الوصول إلى البيانات الهامة أو ، في حالة تدفق الهواء ، التفاعل المباشر مع موارد المجموعة. نتيجة لذلك ، تصبح إدارة الوصول المركزية ضرورية. لمعالجة هذه المشكلة ، تقدم Ilum مزود OAuth متكاملا ، مما يسمح بالمصادقة والتفويض المركزي من خلال واجهة مستخدم Ilum و Ilum-Core.
عند التمكين، يقوم Ilum تلقائيا بتكوين الخدمات المصغرة المدعومة مسبقا للوصول المستند إلى OAuth. يحتاج المسؤولون فقط إلى تكوين عدد قليل من قيم مخطط Helm لتنشيط هذا التكامل.
ضمن نظام إدارة المستخدمين في Ilum ، يمكنك تحديد المستخدمين الذين يمكنهم الوصول إلى خدمات مصغرة محددة. يمكنك أيضا تعيين أدوار ومجموعات Ilum إلى الأدوار والمجموعات المقابلة داخل كل خدمة متكاملة ، مما يتيح التحكم في الوصول المتسق عبر النظام الأساسي.
بداية سريعة
لتشغيل Ilum مع تمكين موفر OAuth ، تحتاج إلى إكمال الخطوتين التاليتين:
- حول
global.security.hydra.enabledفي قيم Helm إلىصحيح - حدد عنوان URL ل Ilum-UI في
global.security.hydra.uiDomainوglobal.security.hydra.uiProtocol
عنوان URL لواجهة المستخدم هو العنوان الذي يمكنك إدخاله مباشرة في متصفحك للوصول إلى Ilum-UI. هناك طريقتان للحصول على عنوان URL هذا:
- في Minikube ، يمكنك تمكين ملحق الدخول:
تعمل إضافات minikube على تمكين الدخول
وبعد ذلك يجب عليك تمكين دخول Ilum-UI في قيم helm مثل هذا:
ILUM-UI :
مدخل :
تمكين : صحيح
مضيف : إيلوم - واجهة المستخدم - url.domain
أخيرا يمكنك إنشاء القيم.yaml ملف:
عالمي :
أمن :
هيدرا :
تمكين : صحيح
uiDomain : "ilum-ui-url.domain"
بروتوكول uiProtocol : "http"
ILUM-UI :
مدخل :
تمكين : صحيح
مضيف : "ilum-ui-url.domain"
وقم بترقية نظام المجموعة الخاص بك:
ترقية Helm ilum ILUM / ILUM - f values.yaml - - اعاده - القيم
- يمكنك استخدام عنوان IP للعقدة وخدمة NodePort لواجهة مستخدم Ilum.
قم بتكوين خدمة Ilum-UI لاستخدام NodePort:
ILUM-UI :
خدمة :
نوع : NodePort
nodePort : 31007
احصل على عنوان IP للعقدة الخاصة بك:
kubectl الحصول على العقد -o واسعة

استخدم عنوان IP ومنفذ العقدة لإنشاء عنوان URL لواجهة المستخدم ووضعه فيه القيم.yaml :
عالمي :
أمن :
هيدرا :
تمكين : صحيح
uiDomain : "192.168.49.2:31007"
بروتوكول uiProtocol : "http"
ILUM-UI :
خدمة :
نوع : NodePort
nodePort : 31007
ترقية نظام المجموعة:
ترقية Helm ilum ilum / ilum -f values.yaml --reuse-values
أخيرا بعد الترقية ، يمكنك تشغيل:
kubectl الحصول على القرون
وانظر إلى هذا الإخراج:

لأغراض الاختبار ، دعنا نطلق Ilum مع Superset
ترقية Helm ilum ILUM / ILUM - مجموعة superset.enabled true - إعادة استخدام القيم
بمجرد أن يصبح Superset جاهزا ، يمكنك تسجيل الدخول عن طريق الدخول http://192.168.49.2:31007/external/superset في متصفحك.
ستتم إعادة توجيهك إلى واجهة مستخدم Ilum باستخدام ملف login_challenge quer في عنوان URL.
بعد إدخال بيانات الاعتماد الخاصة بك ، ستتم إعادة توجيهك مرة أخرى إلى Superset ، وقمت الآن بتسجيل الدخول.
تخطيط أدوار ومجموعات Ilum
يسمح لك Ilum بتحديد كيفية تعيين أدواره ومجموعاته الداخلية إلى الأدوار المستخدمة من قبل كل خدمة مصغرة متكاملة. يمكنك أيضا تكوين الأدوار الافتراضية التي يتم تعيينها تلقائيا للمستخدمين.
تتم إدارة هذا التكوين عبر قيم Helm. بشكل افتراضي ، يتم تنظيمه على النحو التالي:
إيلوم كور :
هيدرا :
تعيين :
الأدوار ToGitea : صِفْر
المجموعاتToGitea : صِفْر
الأدوارToMinio :
- ilumObj : "المسؤول"
serviceObjs :
- "consoleAdmin"
- ilumObj : "DATA_ENGINEER"
serviceObjs :
- "للقراءة فقط"
- "للكتابة فقط"
- "التشخيص"
المجموعاتToMinio : صِفْر
rolesToSuperset :
- ilumObj : "المسؤول"
serviceObjs :
- "المسؤول"
- ilumObj : "DATA_ENGINEER"
serviceObjs :
- "ألفا"
مجموعاتإلىSuperset : صِفْر
الأدوارToAirflow :
- ilumObj : "المسؤول"
serviceObjs :
- "المسؤول"
- ilumObj : "DATA_ENGINEER"
serviceObjs :
- "المستخدم"
مجموعاتإلىتدفق الهواء : صِفْر
الأدوارToGrafana :
- ilumObj : "المسؤول"
serviceObjs :
- "المسؤول"
- ilumObj : "DATA_ENGINEER"
serviceObjs :
- "محرر"
مجموعاتToGrafana : صِفْر
minioMinAccessRole : "للقراءة فقط"
airflowMinAccessRole : "العارض"
supersetMinAccessRole : "جاما"
grafanaMinAccessRole : "العارض"
giteaMinAccessRole : صِفْر
1. تعيين المجموعات
مجموعاتإلىتدفق الهواء , مجموعاتToGrafana , مجموعاتإلىSuperset , المجموعاتToMinio , المجموعاتToGitea وصف كيفية تعيين مجموعات Ilum إلى الأدوار في الخدمات المصغرة التي تم تخصيص هذه المجالات لها
على سبيل المثال، إذا قمت بإنشاء مجموعة في Ilum باسم مديرون ، يمكنك تعيين السمة "المسؤول" والعرف "مدير" في Airflow بالتكوين التالي:
إيلوم كور :
هيدرا :
تعيين :
مجموعاتإلىتدفق الهواء :
- ilumObj : "المديرون"
serviceObjs :
- "المسؤول"
- "المستخدم"
إذا لم تكن الأدوار المحددة موجودة في الخدمة المصغرة المستهدفة، تجاهلها
2. تعيين الأدوار
الأدوار ToGitea , الأدوارToGrafana , rolesToSuperset , الأدوارToAirflow , الأدوارToMinio وصف كيفية تعيين أدوار Ilum إلى الأدوار في الخدمات المصغرة التي تخصص لها هذه الحقول
على سبيل المثال، إذا قمت بإنشاء دور في Ilum باسم التحليليه ، يمكنك تعيين السمة "المستخدم" والعرف "تحليلي" في Airflow بالتكوين التالي:
إيلوم كور :
هيدرا :
تعيين :
مجموعاتإلىتدفق الهواء :
- ilumObj : "تحليلي"
serviceObjs :
- "تحليلي"
- "المستخدم"
إذا لم تكن الأدوار المحددة موجودة في الخدمة المصغرة المستهدفة، تجاهلها
3. أدوار دقيقة
حقول minioMinAccessRole , airflowMinAccessRole , supersetMinAccessRole , grafanaMinAccessRole , giteaMinAccessRole لتحديد الدور في الخدمات المصغرة الذي سيتم تعيينه لمستخدم قام بتسجيل الدخول بشكل افتراضي إذا لم يتم العثور على تعيينات أدوار أخرى.
على سبيل المثال في التكوينات الافتراضية:
minioMinAccessRole : "للقراءة فقط"
airflowMinAccessRole : "العارض"
supersetMinAccessRole : "جاما"
grafanaMinAccessRole : "العارض"
giteaMinAccessRole : صِفْر
سيكون لكل مستخدم Ilum لديه حق الوصول إلى الخدمة المصغرة فقط للقراءة فقط ولوج
4. الأذونات
للوصول إلى خدمة مصغرة، يجب أن يكون لدى المستخدم الإذن المقابل: MINIO_READ , GRAFANA_READ , AIRFLOW_READ , SUPERSET_READ , GITEA_READ
إذا لم يكن لدى المستخدم الإذن المطلوب، فلن يتمكن من الوصول إلى الخدمة، حتى إذا كان لديه دور معين داخل تلك الخدمة
5. إعادة كتابة رسم الخرائط
يوفر Ilum ilum-core.hydra.rewritemapping الحقل ، والذي تم تعيينه على صحيح بشكل افتراضي.
عند التمكين، سيقوم Ilum-Core بالكتابة فوق تكوين التعيين الحالي بالقيم المحددة في مخطط Helm في كل مرة تتم فيها إعادة تشغيل الخدمة.
تكوين موفر OAuth
في مخطط Ilum Helm، يمكنك تكوين خدمة موفر OAuth والجرابونات المقترنة بها وإعدادات عميل OAuth.
1. تكوينات عميل OAuth
فيما يلي القيم الافتراضية لإعدادات عميل OAuth:
عالمي :
أمن :
هيدرا :
uiDomain : ""
بروتوكول uiProtocol : "http"
معرف العميل : "عميل ILUM"
clientSecret : "سر"
إيلوم كور :
هيدرا :
إعادة إنشاء العميل : صحيح
معرف العميل و clientSecret حدد بيانات اعتماد عميل OAuth.
uiDomain و بروتوكول uiProtocol تحديد مجال وبروتوكول واجهة مستخدم Ilum. وهو مطلوب لسير عمل OIDC من قبل كل من موفر OAuth والخدمات المصغرة، خاصة لعمليات مثل إعادة توجيه المستخدمين إلى صفحة تسجيل الدخول إلى واجهة مستخدم Ilum. بروتوكول uiProtocol يمكن أن يكون HTTP أو https
إعادة إنشاء العميل يحدد ما إذا كان يجب إعادة إنشاء عميل OAuth عند إعادة تشغيل موفر خدمة OAuth. يمكن أن يكون هذا مفيدا عند تحديث بيانات اعتماد عميل OAuth. يجب إيقاف تشغيله عند إعادة تشغيل النشر إذا لم تتغير بيانات اعتماد عميل OAuth. هذا يمنع إعادة الإنشاء غير الضرورية لعميل OAuth.
2. تكوين النشر
فيما يلي القيم الافتراضية لتكوينات نشر موفر OAuth:
إيلوم كور :
هيدرا :
الكوكيز :
same_site_mode : "تراخي"
دي إس إن : "postgres://ilum:CHANGEMEPLEASE@ilum-postgresql:5432/hydra?sslmode=disable"
أسرار النظام : "CHANGEMEPLEASE"
منفصل النشر : خطأ
imagePullPolicy : "IfNotPresent"
موارد : صِفْر
cookies.same_site_mode لتحديد قيمة SameSite لملفات تعريف الارتباط CSRF التي تم تعيينها في رأس Set-Cookie بواسطة hydra أثناء OIDC worflow. قد تتطلب هذه القيمة تغييرا تحت الوكلاء حتى يعمل OIDC بشكل صحيح
دي إس إن لتحديد سلسلة الاتصال للوصول إلى قاعدة بيانات PostgreSQL. بشكل افتراضي ، يشير إلى قاعدة بيانات PostgreSQL التي تم نشرها بواسطة Ilom ، مع بيانات الاعتماد وقواعد البيانات الافتراضية التي تم إنشاؤها بواسطة Ilum. ومع ذلك، إذا كنت تستخدم قاعدة بيانات أو خدمة أو بيانات اعتماد مختلفة، فيجب عليك تحديث هذا الحقل وفقا لذلك.
أسرار النظام لتخزين البيانات الحساسة بشكل آمن أثناء سير عمل OIDC، بالإضافة إلى المعلومات المتعلقة بعميل OAuth، عن طريق تشفيرها في قاعدة البيانات باستخدام سر متوفر. يجب أن تكون في الإنتاج
منفصل النشر هي علامة تحدد ما إذا كان سيتم نشر موفر OAuth كجزء من Ilum-Core أو كنشر منفصل. بشكل افتراضي، يستخدم موفر OAuth الحد الأدنى من الموارد (20 ميجا من الذاكرة و1 متر من وحدة المعالجة المركزية). تحت الحمل الثقيل ، قد يصل إلى 100 متر من وحدة المعالجة المركزية و 100 ميل من الذاكرة ، ولكن هذا لا يمثل مصدر قلق بشكل عام عند التشغيل جنبا إلى جنب مع Ilum-Core. ومع ذلك، إذا كنت بحاجة إلى مزيد من التحكم في استخدام موارده، فيمكنك تعيين هذه العلامة إلى true لنشر موفر OAuth بشكل منفصل.
موارد يحدد طلبات الموارد وحدودها للذاكرة ووحدة المعالجة المركزية. لا يكون هذا الحقل ذا صلة إلا عندما يتم نشر موفر OAuth بشكل منفصل، مما يسمح لك بالتحكم في تخصيص موارده.
3. تكوين الخدمة
في ما يلي القيم الافتراضية لإعدادات خدمة موفر خدمة OAuth:
إيلوم كور :
هيدرا :
خدمة :
المجال : إيلوم - هيدرا
نوع : "ClusterIP"
منفذ عام : 4444
adminPort : 4445
publicNodePort : ""
adminNodePort : ""
clusterIP : ""
loadBalancerIP : ""
التعليقات التوضيحيه : { }
من المهم ملاحظة أن مزود OAuth الذي تستخدمه Ilum يتضمن عميلين:
-
عميل المسؤول يتم استخدام هذا العميل حصريا من قبل Ilum Core في سير عمل OIDC لأغراض إدارية.:
-
عميل عام يتم استخدام هذا العميل بواسطة الخدمات المصغرة للوصول إلى المصادقة ومعلومات المستخدم ونقاط النهاية الأخرى المطلوبة أثناء عملية OIDC.:
4. مزود OAuth تحت غطاء المحرك
تستخدم Ilum Hydra كموفر OAuth الخاص بها ، ويمكنها إطلاق Hydra إما كجزء من نشر Ilum-Core أو كنشر منفصل. أثناء بدء التشغيل، يقوم Hydra بتشغيل أمر لإنشاء عميل سيتم استخدامه بواسطة الخدمات المصغرة لتسجيل دخول المستخدم.
لمزيد من التخصيصات أو للتعرف على Hydra ، يمكنك الرجوع إلى صفحة وثائق Hydra
ملاحظات حول OAuth في Microservises
1. مينيو
بشكل افتراضي، يتم تكوين Minio مسبقا بواسطة Ilum لاستخدام موفر OAuth الخاص ب Ilum. ومع ذلك، إذا كان الرمز تسجيل الدخول باستخدام تسجيل الدخول الأحادي لا يظهر الخيار على شاشة تسجيل الدخول ، ستحتاج إلى إعادة تشغيل نشر Minio:
نشر بدء تشغيل Kubectl ILUM-Minio.
تحدث المشكلة لأن Minio قد يبدأ قبل تهيئة موفر OAuth بالكامل، مما يتسبب في عدم تعرف Minio على موفر OAuth عند بدء التشغيل.
2. جيتيا
لم يتم تكوين Gitea مسبقا بواسطة Ilum. لذلك، لتكوين المصادقة مع مستخدمي Ilum، تحتاج إلى تحديد التكوينات التالية:
جيتا :
تمكين : صحيح
جيتا :
التكوين :
ملقم :
ROOT_URL : < - واجهة المستخدم - عنوان URL > /خارجي/جيتا
أوث :
- اسم : إيلوم
كاسب : openidConnect
مفتاح : <oauth - عميل - معرف >
سر : "<oauth-client-secret>"
autoDiscoverUrl : "<ilum-ui-url>/ خارجي / هيدرا / .معروف/openid-configuration"
نطاقات : "ملف تعريف البريد الإلكتروني OpenID"
استبدل معرف العميل OAUTH , oauth-client-secret و ilum-ui-url مع القيم الصحيحة (معرف العميل الافتراضي وسر العميل هما عميل ILUM و سر )
يرجى ملاحظة أن مخطط Gitea لا يعيد إنشاء أسراره تلقائيا. لذلك ، لتطبيق التكوينات بعد إعادة التشغيل ، قد تحتاج إلى حذف أسرار Gitea يدويا ثم إجراء ترقية Helm
kubectl حذف سري ilum-gitea-inline-config ilum-gitea-init ilum-gitea
3. جرافانا
يتم تكوين Grafana مسبقا تلقائيا بواسطة Ilum لاستخدام مصادقة OAuth. ومع ذلك، يجب عليك تحديد الزر root_url القيمة ك <ilum-ui-url>/خارجي/غرافانا استبدال <ilum-ui-url> باستخدام عنوان URL الفعلي لواجهة مستخدم Ilum، حتى يعمل سير عمل 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. في هذه الحالة ، يجب عليك تسجيل الخروج من Minio ، لأن الطريقة التي يدير بها Minio جلسة Hydra قد تتداخل مع الجلسات الأخرى.
5. استخدام hydra تحت وكلاء السحابة ومع https
عند العمل مع Hydra على السحابة ، قد تواجه مشكلات تتعلق ببروتوكول HTTPS أو كيفية عمل وكيل موفر السحابة الخاص بك. فيما يلي بعض الحلول التي قد تساعد:
- جبر
إيلوم-core.hydra.cookies.same_site_modeلالتراخيأوصارمعند استخدام HTTPS.
استخدامات هيدرا CSRF الرموز المميزة أثناء سير عمل OIDC الخاص به، والتي يتم تعيينها عبر مجموعة ملفات تعريف الارتباط راس.
إذا تم تعيين قيمة SameSite إلى لا شيء عبر HTTPS، فقد لا يتم تخزين ملف تعريف الارتباط، مما يتسبب في فشل سير عمل OIDC.
لذلك ، يجب عليك تعيينه على التراخي أو صارم حسب متطلباتك.
- تأكد من أن root_url لكل خدمة و بروتوكول uiProtocol استخدم بروتوكول HTTPS.
يعد هذا ضروريا لأن بعض الوكلاء يتعاملون مع عناوين URL HTTP على أنها غير آمنة وقد تحظر الطلبات أو تغيرها إلى Hydra، مما يؤدي إلى تعطيل سير عمل OIDC.
- أضف Hydra إلى القائمة المسموح بها للوكيل (القائمة البيضاء).
إذا كنت تستخدم مجالا أو بروتوكولا مختلفا ل Hydra أو أي خدمات مصغرة، فتأكد من إضافتها إلى القائمة المسموح بها للوكيل. وإلا، قد يتداخل الوكيل مع الطلبات أثناء سير عمل OIDC، مما يؤدي إلى حدوث أخطاء.
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.