مهندسی داده
792 subscribers
112 photos
7 videos
24 files
314 links
BigData.ir کانال رسمی وب سایت
مطالبی راجع به مهندسی داده و طراحی زیرساخت‌های پردازش دیتا و ابزارهای مدرن دیتا
ارتباط با ادمین: @smbanaei
گروه تخصصی مهندسی داده 👇
https://t.iss.one/bigdata_ir_discussions2
کانال یوتیوب 👇
https://www.youtube.com/@irbigdata
Download Telegram
نگاهی به OpenFGA؛ سیستم مجوزدهی گراف‌محور الهام‌گرفته از Google Zanzibar

در یکی از پروژه‌های اخیر مشاوره، در حال راه‌اندازی و تست زیرساخت یک Lakehouse با استفاده از LakeKeeper بودم — یک کاتالوگ سرور سبک برای Iceberg.

برای احراز هویت و کنترل دسترسی، این سیستم از ترکیب Keycloak و OpenFGA استفاده می‌کند.

کتابخانه #Keycloak را قبلاً می‌شناختم، اما #OpenFGA برایم جدید بود و کنجکاوم کرد. این پست خلاصه‌ای از بررسی اولیه‌ام درباره‌ی این ابزار مدرن مجوزدهی است.

🧠 نقطه‌ی آغاز: Google Zanzibar


در سال ۲۰۱۹، گوگل مقاله‌ای منتشر کرد با عنوان:

“Zanzibar: Google’s Consistent, Global Authorization System”

این مقاله مدل جدیدی برای مدیریت مجوزهای دسترسی در سیستم‌های بزرگ معرفی کرد؛ مدلی که بر پایه‌ی روابط گرافی میان کاربران، گروه‌ها و منابع طراحی شده بود. این مدل، به نام #ReBAC (Relationship-Based Access Control) شناخته می‌شود.

کتابخانه OpenFGA یکی از معروف‌ترین پیاده‌سازی‌های متن‌باز بر اساس این مدل است.


🔄 مدل ReBAC در برابر RBAC و ABAC

در سیستم‌های سنتی، ما با دو مدل رایج کار می‌کردیم:

مدل #RBAC می‌پرسد: «چه کسی هستید؟» (مثلاً: مدیر / کاربر)

مدل #ABAC می‌پرسد: «چه ویژگی‌هایی - Attribute -دارید؟» (مثلاً: دپارتمان = منابع انسانی)

اما در دنیای واقعی، سناریوهای پیچیده‌تری وجود دارد:

«کاربری می‌تواند گزارش پروژه را ببیند، اگر عضو تیم فنی باشد، پروژه به او تخصیص داده شده باشد، و حساب او تعلیق نشده باشد.»


در این‌جا مدل ReBAC وارد می‌شود:

"چه رابطه‌ای با منبع دارید؟"



🔄کتابخانه OpenFGA چیست؟

پروژه OpenFGA یکی از پیاده‌سازی‌های متن‌باز، سریع و قابل‌اتکای مدل #ReBAC است که با زبان #Go توسعه یافته است.

این ابزار که توسط تیم Auth0 و Okta توسعه یافته، به شما امکان می‌دهد:

- دسترسی‌ها را در قالب گرافی از روابط بین کاربران، گروه‌ها و منابع مدل کنید

- منطق مجوزدهی را از کد جدا نگه دارید و از طریق API فراخوانی کنید

- با ابزارهای احراز هویت مانند Keycloak یا OIDC ادغام کنید

- شرط‌های پیچیده را اعمال کنید (مثلاً: دسترسی فقط اگر حساب کاربر فعال باشد)

چه پروژه‌ها و شرکت‌هایی از این مدل استفاده می‌کنند؟

- نتفلیکس از پروژه‌ی مشابهی به نام SpiceDB (محصول AuthZed) استفاده کرده و آن را توسعه داده تا ویژگی‌های ABAC را نیز پشتیبانی کند.

- شرکت Airbnb سیستم داخلی خود به نام Himeji را بر پایه همین ایده ساخته است.

- پروژه OpenObserve یک کتابخانه مدیریت observability است که OpenFGA را مستقیماً به‌کار گرفته.

- پروژه Backstage (Spotify) امکان اتصال به OpenFGA از طریق پلاگین‌های متن‌باز را دارد.

- و ...


🔄 آیا فقط OpenFGA؟ نه الزاماً!

مقاله Google Zanzibar الهام‌بخش چندین پروژه متن‌باز دیگر نیز شده است که می‌توانید به‌جای OpenFGA از آن‌ها استفاده کنید.

مثلاً: Permify یک سیستم متن‌باز برای مجوزدهی ریزدانه (Fine-Grained Authorization) که کاملاً از مدل #Zanzibar پیروی می‌کند.

همچنین می‌توان به Ory Keto و SpiceDB نیز اشاره کرد که در زمینه مشابه فعال‌اند.

📌 جمع‌بندی

اگر در حال طراحی یک زیرساخت داده‌محور، داشبورد چندمستأجری، پلتفرم SaaS یا سامانه‌ی مشارکتی هستید، و مدل #RBAC دیگر جواب نیازهایتان را نمی‌دهد، حتماً نگاهی به #OpenFGA و سایر پروژه‌های مبتنی بر #ReBAC داشته باشید: به عنوان یک روش قابل اطمینان برای مدیریت دسترسی در مقیاس بالا و مناسب کاربردهای پیچیده مجوزدهی.
👍3