Multi-tenant authorizationAng 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.
Ang isa sa mga pinaka-effective paraan upang i-implementate ang multi-tenant authorization ay sa pamamagitan ng paghahambing ito saRole-Based Access Control (RBAC)RBAC simplifies access management sa pamamagitan ng paghahatid ng mga gumagamit predefined roles na itinuturing ang kanilang mga kaligtasan sa loob ng isang environment.
Ang Role-Based Access Control (RBAC) ayAng 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 angmulti-tenant RBAC modelSolve ang mga problema na ito sa pamamagitan ng pag-aralan ng user accessper tenant, 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.
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 isangadminsa isang organisasyon na may buong kontrol, habang lamang ang isangeditorsa isang iba, limitado sa pag-modify ng mga gawain ngunit hindi gumagamit ng mga gumagamit.
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 angimportance of Multi-Tenant Authorizationat kung paano ito ay posible na i-implementate sa pamamagitan ngIkaw ay.
Ikaw ayMakipag-ugnayan natin kung paano lumikha ng mga politika, itakda ng mga roles per tenant, at ipatupadfine-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 acloud storage platformkung 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.
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, roles usually apply globally across an application.This means a user assigned an Editor role might have access to edit all resources, even across tenants where they shouldn’t have permissions.
This problem can present itself as simply as:
A project management app where a user is an Editor in one team but should only have Viewer access in another.
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: Admin, Editor, Viewer. As more users and resource types are introduced, a role explosion 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:
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.
Multi-Tenant RBAC removes the need for tenant-specific roles by dynamically assigning roles within each tenant instead of hardcoding them.
-
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 isangEditorsa isang team, ngunit dapatVieweraccess sa ibang lugar.
"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.separate, manageable access controlsPara sa mga gumagamit nito. Narito ang ilang mga pangunahing mga elemento na dapat mong itakda kung ginagamit mo ang isang modelo ng RBAC:
- 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.flexible and scalableang sistema ng authorization na adaptado sa mga pangangailangan ng iyong application.
Tungkol sa Multi-Tenant Objectives
Dahil sa asingle user can exist in multiple tenantsAng sistema ay dapat magbigay ng:
- 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 paanoroles and policiesSa 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 parehongrole assignmentat angapplication dataang sarili.
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 isangsingle source of truthupang makakuha ng mga decision-making.
Sa halip ng pag-imbak ng impormasyon ng roles at mga regulasyon ng access sa bawat serbisyo o database ng user, angMga Pangkalahatang Pagpapatupad sa Politics (PDP)Ito ay ang pangunahing lugar kung saan ang lahat ng mga access decision ay ginawa.
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)
habangRBACnagbibigay ng isang solid base para sa multi-tenant authorization, may mga scenarios kung saanTungkol sa Relational Access Control (ReBAC)Dapat magbigay ng mas mahusay na access control.
Tungkol sa Relational Access Control (ReBAC)Ang RBAC ay nagpapahiwatig ng mga kaligtasan batay sa mga roles na ibinigay sa mga gumagamit, ngunitReBACMagbigay ng inspirasyon sa kontemporaryong designer ay maaaring gumawa ng kahit ano, kahit ano, at ang New Year - ay walang exception.relationshipsIto 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.
Halimbawa, ibig sabihin na adocument management systemkung saan ang isang user ay may access sa afolder
, at ang folder na ito ay naglalaman ng ilang mga dokumento. Sa RBAC, kailangan mong i-definite ang mga roles tulad ngFolder Editor
o saDocument Viewer
Ngunit, saReBACMaaari mong i-simplify ito sa pamamagitan ng sinabi:
"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.complex access control scenarioskung saan ang relasyon sa pagitan ng mga gumagamit at mga resource ay nagtatag ng mga permit.
Paggawa ng Multi-Tenant Authorization sa pamamagitan ngIkaw ay
Ikaw ayPermit.ionagbibigay 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.
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 new resource (e.g.,
blog
) to represent the type of object you want to control access to. - Specify the resource's key, which will be used in your API calls.
- Define the actions users should be able to perform on the resource (e.g., create, read, update, delete).
- The screenshot shows an example where
blog
is the resource, and actions are defined for it.
- Add a new resource (e.g.,
-
Define the Access Control Policy:
You’ll specify what actions each role can perform on each resource. For example, in the screenshot, roles like admin, public, and Writer are defined, and the policy is set up to specify which actions are permitted for each role.
-
Define the Tenants in the Directory:
Each tenant can have its own set of roles, permissions, and policies.
To create tenants:
- Go to the Directory screen and click on Settings.
- Define the tenants you need (e.g., Tenant 1, Tenant 2, etc.).
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 Add User in the Directory screen.
-
Assign the user a unique key and other user details (e.g., email, first name).
-
In the Permissions Per Tenant section, you can assign the user roles specific to the tenant to which they belong.
For instance, the user could be an Admin in Tenant 1 and a Writer in Tenant 2, as shown in the screenshot:
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 angimportance of multi-tenant authorizationKung paano mag-combine ito saRole-Based Access Control (RBAC)ay nagbibigay ng mas efficient at scalable user permission management sa iba't ibang mga environment.
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.
Permit.ioMaaari 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).
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.