# 支持域/租戶的RBAC
## 域/租戶的角色定義
在Casbin中的RBAC角色可以是全局或是基于特定于域的。 特定域的角色意味著當用戶處于不同的域/租戶群體時,用戶所表現的角色也不盡相同。 這對于像云服務這樣的大型系統非常有用,因為用戶通常分屬于不同的租戶群體。
域/租戶的角色定義應該類似于:
~~~ini
[role_definition]
g = _, _, _
~~~
第三個`_`表示域/租戶的名稱, 此部分不應更改。 然后,政策可以是:
~~~
p, admin, tenant1, data1, read
p, admin, tenant2, data2, read
g, alice, admin, tenant1
g, alice, user, tenant2
~~~
該實例表示`tenant1`的域內角色`admin`可以讀取`data1`,`alice`在`tenant1`域中具有`admin`角色,但在`tenant2`域中具有`user`角色, 所以alice可以有讀取`data1`的權限。 同理,因為`alice`不是`tenant2`的`admin`,所以她訪問不了`data2`。
接下來在matcher中,應該像下面的例子一樣檢查角色信息:
~~~ini
[matchers]
m = g(r.sub, p.sub, r.dom) && r.dom == p.dom && r.obj == p.obj && r.act == p.act
~~~
更多示例參見:[rbac\_with\_domains\_model.conf](https://github.com/casbin/casbin/blob/master/examples/rbac_with_domains_model.conf)。