Ang multi-tenancy ay isang modelo para sa pag-manage ng user permissions sa iba't-ibang mga account, organisasyon, o mga grupo. Sa multi-tenancy, ang bawat tagahanga (halimbawa, isang account o organisasyon) ay gumagana sa isang isolatong environment, na nangangailangan ng mga unikang access controls na adaptado sa mga spesifikal na roles ng user sa ilalim ng iyon na environment. Multi-tenant authorization Ang isa sa mga pinaka-effective paraan upang i-implementate ang multi-tenant authorization ay sa pamamagitan ng paghahambing ito sa RBAC simplifies access management sa pamamagitan ng paghahatid ng mga gumagamit predefined roles na itinuturing ang kanilang mga kaligtasan sa loob ng isang environment. Role-Based Access Control (RBAC) Ang Role-Based Access Control (RBAC) ay Ang RBAC lamang ay nakikipag-usap sa tatlong pangunahing mga problema kapag ang mga application ay lumaki at kailangan ng higit pa ng mga pinakahuling permit: Dahil limitado sa mga roles (at hindi mga atributo at relasyon), ang RBAC ay maaaring mangyayari sa granularity. Ang kanyang static roles ay walang kakayahan sa pag-scale sa pamamagitan ng mga tenant. Kapag ang mga application ay lumaki, ang bilang ng mga roles ay maaaring maging hindi mapanood, na nagdadala sa kung ano ang tinatawag na "Role Explosion." A ang Solve ang mga problema na ito sa pamamagitan ng pag-aralan ng user access , na nagbibigay ng dynamic role assignments at mga kaligtasan sa ilalim ng mga isolatong environment. Sa halip ng paghahatid ng isang user ng isang single global role, ang kanilang mga kaligtasan ay depende sa kung ano ang mga tagahanga na sila ay sa at kung ano ang papel na sila ay may sa loob ng ang tagahanga na ito. multi-tenant RBAC model per tenant Here’s a quick example of when this can be useful: Pumunta sa isang SaaS project management platform kung saan ang mga gumagamit ay maaaring maging miyembro ng ilang mga organisasyon, ang bawat isa ay may iba't ibang mga antas ng access: Ang isang user ay maaaring maging isang administrator sa isang organisasyon na may buong kontrol, habang lamang isang editor sa ibang, na limitado sa pag-modify ng mga gawain ngunit hindi pag-manage ng mga gumagamit. Pumunta sa isang SaaS project management platform kung saan ang mga gumagamit ay maaaring maging miyembro ng ilang mga organisasyon, ang bawat isa ay may iba't ibang mga antas ng access: Ang user ay maaaring maging isang sa isang organisasyon na may buong kontrol, habang lamang ang isang sa isang iba, limitado sa pag-modify ng mga gawain ngunit hindi gumagamit ng mga gumagamit. admin editor Ang multi-tenant RBAC ay nagbibigay-daan na ang mga lisensya ay tinatawag sa parehong environment nang walang unnecessary complexity. Sa guide na ito, i-explore ang at kung paano ito ay posible na i-implementate sa pamamagitan ng . importance of Multi-Tenant Authorization Ikaw ay Ikaw ay Makipag-ugnayan natin kung paano lumikha ng mga politika, itakda ng mga roles per tenant, at ipatupad . fine-grained permissions Pumunta kami sa loob. Bakit importante ang Multi-Tenant Authorization? Ang multi-tenant authorization ay magagamit para sa mga application kung saan ang mga gumagamit ay may karagdagang independiyenteng mga environment, ang bawat isa ay may kanilang mga katangian ng access - isang karaniwang pagkakaiba sa karamihan ng mga modernong cloud-based application. Paggamit ng mga patakaran sa mga isolated environments Sa multi-tenancy, ang bawat gumagamit ay maaaring makakuha ng isang customized approach sa kanilang access control batay sa kanilang tenant. Dahil ang isang gumagamit ay maaaring may iba't-ibang mga roles at responsibilidad sa pagitan ng iba't-ibang tenant, ang paggamit ng multi-tenancy ay nagbibigay ng mga roles na ito ay dapat na mag-manage at ipatupad independently. Ito ay nangangahulugan na maaari naming gamitin ang multi-tenant authorization upang matatagpuan ang mga clarity na limitasyon sa pagitan ng mga environment habang nagtatagumpay na ang mga gumagamit ay may parehong mga permit sa loob ng bawat. Halimbawa, tingnan ang a kung saan ang bawat customer (tanggihan) ay maglagay ng sensitibo na data. Ito ay mahalaga na ipatupad ng malakas na kontrol ng access upang ang isang user mula sa isang customer ay hindi makikita o mag-modify ang data mula sa ibang customer. cloud storage platform Ngunit bakit hindi natin maaaring solusyon ito lamang sa RBAC? Bakit ang Tradisyonal na RBAC ay hindi sapat para sa Multi-Tenant Authorization Maraming dapat sinabi tungkol sa mga limitasyon ng RBAC. Kapag nagtatrabaho sa mga application sa produksyon, ang RBAC ay maaaring maging masyadong rigid at magiging masyadong karaniwang para sa pag-scale. Mag-focus sa mga aspeto ng multi-tenancy ay maaaring solve: Static Roles Don't Scale Across Tenants: In a traditional RBAC implementation, across an application.This means a user assigned an role might have access to edit all resources, even across tenants where they shouldn’t have permissions. roles usually apply globally Editor This problem can present itself as simply as: A project management app where a user is an in one team but should only have access in another. Editor Viewer Multi-Tenant RBAC allows roles to be scoped per tenant, so a user can be an Editor in one organization and a Viewer in another without unnecessary role duplication. Speaking of role duplication - The Role Explosion Problem A basic RBAC model can start simple: . As more users and resource types are introduced, a can occur. If we take our previous example where a single user needs to be an Editor in one team but a Viewer in another, you can easily end up with something like this: Admin, Editor, Viewer role explosion Editor_TeamA Editor_TeamB Viewer_TeamA Viewer_TeamB … and so on for every additional team / potential tenant. This makes the system hard to manage and difficult to update without breaking access rules. by dynamically assigning roles within each tenant instead of hardcoding them. Multi-Tenant RBAC removes the need for tenant-specific roles Multi-Tenant Authorization Requires Granularity RBAC is often too restricted when handling permissions at a granular level. It typically lacks built-in mechanisms to define resource-level or conditional access policies. Think of this policy: "Editors can only modify their own photos" How simple is that? The thing is - there’s no way RBAC can support such a policy without implementing additional logic. Especially at scale. Ang isang project management app kung saan ang isang user ay isang sa isang team, ngunit dapat access sa ibang lugar. Editor Viewer "Ang mga editor ay maaaring i-modify lamang ang kanilang mga larawan" Pero kapag nalaman niyang nakilala mo siya dahil binasa mo ang diary... get ready for the consequences. Mga Model ng Multi-Tenant Ang multi-tenant authorization ay gumagamit para sa isang karamihan ng mga application. Narito ang ilang mga pinaka-karaniwang paraan ng mga tenant ay na-structured: Account - Ginagamit sa consumer SaaS application, kung saan ang bawat gumagamit ay may isang independiyenteng account (eg, Google Drive, Dropbox). Organizations - Karaniwang sa mga application ng negosyo, kung saan ang isang kumpanya (organization) ay may higit sa isang user na may iba't ibang mga papel (e.g., Slack, Notion). Ang mga grupo ay magagamit para sa mga kolaborasyon na environment, kung saan ang mga gumagamit ay pag-agrupo batay sa mga kinakailangan sa pag-share access (p.g., GitHub teams, project workspaces). Franchises - Sa mga sistema kung saan ang mga negosyo ay gumagana sa ilalim ng isang modelo ng franchise, ang bawat franchise ay gumagana nang independiyenteng ngunit ay sumusunod sa isang sentral na strukturong (mga, mga sistema ng pamamahala ng restaurant). Lahat ng mga modelo na ito ay gumagamit ng Multi-Tenant authorization upang magbigay ng parehong isolation at role-based permissions per tenant. Nang malaman ang mga katangian ng multi-tenant authorization, magsimula tayo sa pag-aralan ng implementation. Best Practices para sa Implementation ng Multi-Tenant Authorization Effective strategies para sa pamamahala ng mga roles, permissions, at pag-scale sa iba't ibang mga environment sa multi-tender application. Plan ang iyong Multi-Tenant Authorization Strategy Pero kapag nalaman niyang nakilala mo siya dahil binasa mo ang diary... get ready for the consequences. Para sa mga gumagamit nito. Narito ang ilang mga pangunahing mga elemento na dapat mong itakda kung ginagamit mo ang isang modelo ng RBAC: separate, manageable access controls Mga Username: Mga Individual na mag-access sa sistema. Ang bawat isa ay maaaring kumpanya sa higit sa isang tenant. Ang mga tagahanga: Separate na mga environment sa kung saan ang mga gumagamit ay nagtatrabaho (Like account, organisasyon, o workspace). Roles: Predefined permission levels na ibinigay sa mga gumagamit sa loob ng isang tenant. Resources: Objeto (mga, mga larawan, dokumento) na nag-interact sa mga gumagamit, na kontrolado sa pamamagitan ng mga kaligtasan. Permissions: Rules na nagpapakita ng mga aksyon na maaaring gawin ng mga roles sa anumang mga resource. Kapag nalaman ng isang babae na siya ay nagdadalangtao, una niyang dapat gawin ay magpa-prenatal check up. ang sistema ng authorization na adaptado sa mga pangangailangan ng iyong application. flexible and scalable Tungkol sa Multi-Tenant Objectives Dahil sa a Ang sistema ay dapat magbigay ng: single user can exist in multiple tenants Ang mga role assignments ay per tenant - Ang mga permissions ng isang user ay dapat na-scope sa kanilang spesifikong tenant. Ang mga resource ay nakatuon sa mga tagahanga - Ang mga resource ay dapat kumpanya sa isang tiyak na tagahanga. Permissions ay dinamit na na-evaluate - Kapag ang isang gumagamit ay nag-aalok ng isang request, ang sistema ay i-verify ang kanilang papel sa tagahanga at ang pagmamahal ng resource. Optimize Multi-Tenant Authorization: Pag-disconnect ng Schema mula sa Data Ang isang pangkalahatang problema sa multi-tenant systems ay ang pag-manage kung paano Sa mga tradisyonal na mga sistema, mga roles at mga kaligtasan ay karaniwang malapit sa data ng application. Ito ay maaaring lumikha ng mga komplikasyon kapag ang mga kaligtasan ay kinakailangan upang baguhin, dahil maaari mong i-update ang parehong at ang ang sarili. roles and policies role assignment application data Para sa pag-optimize para sa scalability: I-save ang mga roles, assignments, at policies sa isang dedicated authorization system (tulad ng Permit.io), at i-save ang application data mula sa authorization logic. Ang disconnection na ito ay nagbibigay-daan sa iyo upang i-update ng mga roles o mga kaligtasan dinamiko nang hindi kailangang i-touch ang core data o code base ng application. Uses One Source of Truth - ang PDP (Policy Decision Point) Ang isa sa mga kritikal na konsepto sa optimizing multi-tenant authorization ay ang paggamit ng isang upang makakuha ng mga decision-making. single source of truth Sa halip ng pag-imbak ng impormasyon ng roles at mga regulasyon ng access sa bawat serbisyo o database ng user, ang Ito ay ang pangunahing lugar kung saan ang lahat ng mga access decision ay ginawa. Mga Pangkalahatang Pagpapatupad sa Politics (PDP) Mga Pangkalahatang Pagpapatupad sa Politics (PDP) Benefits of using a PDP: Consistency: Ang PDP ay nagbibigay-daan na ang lahat ng mga serbisyo sa buong application ay sumusunod sa parehong set ng mga patakaran sa paggawa ng mga decision-making authorization. Dynamic Policy Evaluation: Ang mga pagbabago sa mga patakaran o role assignments ay kinakailangan upang i-update lamang sa isang lokasyon—ang PDP. Ang centralization na ito ay binubuo ng kinakailangan upang i-update ang ilang mga lugar sa iyong code base o database. Less Risk of Error: Sa pamamagitan ng pag-aalok sa isang single, centralized decision point, i-reduced ang risk ng inconsistent permissions sa lahat ng mga tagahanga at mga application. I-extend ang RBAC sa pamamagitan ng Relationship-Based Access Control (ReBAC) habang nagbibigay ng isang solid base para sa multi-tenant authorization, may mga scenarios kung saan Dapat magbigay ng mas mahusay na access control. RBAC Tungkol sa Relational Access Control (ReBAC) Tungkol sa Relational Access Control (ReBAC) Ang RBAC ay nagpapahiwatig ng mga kaligtasan batay sa mga roles na ibinigay sa mga gumagamit, ngunit Magbigay ng inspirasyon sa kontemporaryong designer ay maaaring gumawa ng kahit ano, kahit ano, at ang New Year - ay walang exception. Ito ay karaniwang magagamit sa mga situasyon kung saan ang mga permissions ay depende sa kung paano ang mga resource ay nakikipag-ugnayan o nakatuon sa iba. ReBAC relationships Halimbawa, ibig sabihin na a kung saan ang isang user ay may access sa a , at ang folder na ito ay naglalaman ng ilang mga dokumento. Sa RBAC, kailangan mong i-definite ang mga roles tulad ng o sa Ngunit, sa Maaari mong i-simplify ito sa pamamagitan ng sinabi: document management system folder Folder Editor Document Viewer ReBAC "Ang isang gumagamit ay mag-edit ng isang dokumento kung ang mga ito ay isang editor ng folder na ang dokumento ay nasa." "Ang isang gumagamit ay mag-edit ng isang dokumento kung ang mga ito ay isang editor ng folder na ang dokumento ay nasa." Ito ay nagbibigay-daan para sa mas dynamic at kontekstong-sensitive permission assignments nang walang pag-duplicate ng mga roles para sa bawat resource. : Benefits of ReBAC Kontekstual Permissions: Nagbibigay-daan ang access control batay sa dynamic relasyon (ya, halimbawa, ang isang user ay isang editor sa isang proyekto, at kaya may access sa lahat ng mga relasyon na mga trabaho). Reduced Role Explosion: Hindi mo na kailangang lumikha ng mga roles para sa bawat kombinasyon ng user at resource type, dahil ang relasyon ay maaaring ilagay ang access dinamis. Kapag bumalik na ako sa UP, i'll start building a new me. kung saan ang relasyon sa pagitan ng mga gumagamit at mga resource ay nagtatag ng mga permit. complex access control scenarios Paggawa ng Multi-Tenant Authorization sa pamamagitan ng Ikaw ay Ikaw ay nagbibigay ng isang simpleng paraan upang i-implementate ang multi-tenant authorization sa pamamagitan ng nagbibigay-daan sa iyo upang ilagay ang mga roles, mga patakaran, at mga batas ng access sa iba't ibang mga environment. Permit.io if (user.role == admin && user.tenant == resource.tenant) { return true; } Ang mga tradisyonal, static if Ang mga sumusunod ay multi-tenancy. const permitted = await permit.check(user, "read", { resource: "document", tenant: "default" }); if (permitted) { return true; } ang clean permit.check() Ang function na check para sa multi-tenancy RBAC. Narito ang isang karagdagang review ng kung paano ang multi-tenant RBAC authorization ay maaaring i-set up sa Permit.io: Define Roles, Resources, and Actions: To get started, first define your resources (e.g., documents, photos, tasks) and the actions that can be performed on them (e.g., create, read, update, delete). Add a (e.g., ) to represent the type of object you want to control access to. new resource blog Specify the resource's , which will be used in your API calls. key Define the users should be able to perform on the resource (e.g., create, read, update, delete). actions The screenshot shows an example where is the resource, and actions are defined for it. blog Define the Access Control Policy: You’ll specify what actions each role can perform on each resource. For example, in the screenshot, roles like , , and are defined, and the policy is set up to specify which actions are permitted for each role. admin public Writer Define the Tenants in the Directory: Each tenant can have its own set of roles, permissions, and policies. To create tenants: Go to the screen and click on . Directory Settings Define the tenants you need (e.g., , , etc.). Tenant 1 Tenant 2 Create Users and Assign Roles: Once the tenants are defined, you can create users and assign them roles specific to each tenant. This ensures that the same user can have different roles in each tenant, depending on what permissions they need. To create a new user: Click in the screen. Add User Directory Assign the user a unique and other user details (e.g., email, first name). key In the section, you can assign the user roles specific to the tenant to which they belong. Permissions Per Tenant For instance, the user could be an in and a in , as shown in the screenshot: Admin Tenant 1 Writer Tenant 2 Narito, maaari naming makita ang lahat ng aming mga gumagamit at kung ano ang mga roles na may mga ito sa bawat tagahanga na ito ay mayroon sa: Ang ilang mga benepisyo ng paggamit ng Permit.io para sa multi-tenant authorization ay kabilang sa: Centralized Policy Management: I-definite at i-manage ang lahat ng iyong mga patakaran at mga patakaran sa authorization mula sa isang centralized platform. Ito ay lumikha ng mga pagbabago ng mga patakaran at matatagpuan ang konsistensiya sa lahat ng iyong mga tagahanga. Role-Specific Assignment: I-assign at i-manage ang mga roles sa bawat tenant, na nagbibigay-daan sa mga gumagamit na may iba't-ibang mga roles sa iba't-ibang mga environment (e.g., Admin sa isang tenant, Viewer sa iba't-ibang). Fine-Grained Permissions: Implement ang mga detalyadong mga pamantayan para sa bawat resource at ipatupad ang mga kompleksong mga pamantayan (Kasi ang mga batay sa atributo o relasyon) nang walang kinakailangan ng karagdagang custom logic. ReBAC Support: Ang Permit.io ay nagtatampok ng tradisyonal na modelo ng RBAC sa pamamagitan ng ReBAC, na nagbibigay-daan sa iyo upang ilagay ang mga kaligtasan batay sa hindi lamang ng mga role ng user ngunit din sa relasyon sa pagitan ng mga gumagamit at mga resource. Summing Up: Multi-Tenant Authorization sa RBAC Sa blog na ito, nag-explore ang Kung paano mag-combine ito sa ay nagbibigay ng mas efficient at scalable user permission management sa iba't ibang mga environment. importance of multi-tenant authorization Role-Based Access Control (RBAC) Nagsasalita namin ang mga problema ng tradisyonal na RBAC sa mga application ng multi-tenant at kung paano Multi-Tenant RBAC solves mga problema tulad ng static roles, role explosion, at fine-grained access control. Sa pamamagitan ng multi-tenant authorization, ang bawat tenant ay maaaring magkaroon ng kanyang sarili na isolatong access control, na nagtatagumpay na ang mga gumagamit ay may access lamang sa kung ano ang kanilang authorized para sa sa ilalim ng kanilang espesyal na mga environment. Maaari mong i-implementate ang multi-tenant authorization sa isang mas simpleng paraan, sa pamamagitan ng centralized policy management, tenant-specific role assignment, fine-grained permissions, at suporta para sa Relationship-Based Access Control (ReBAC). Permit.io What’s Next? I-explore ang dokumentasyon ng Permit.io upang magsimula ang pag-implementasyon ng multi-tenant authorization sa iyong application. Pumunta sa komunidad ng Permit.io upang makipag-ugnayan ang mga pinakamahusay na karanasan at makakuha ng suporta.