Ana içeriğe atla

RBAC API

RBAC için daha dostane bir API. Bu API, Yönetim API'sinin bir alt kümesidir. RBAC kullanıcıları bu API'yi kodu basitleştirmek için kullanabilir.

Referans

global değişken e bir Enforcer örneğidir.

e, err := NewEnforcer("examples/rbac_model.conf", "examples/rbac_policy.csv")

GetRolesForUser()

GetRolesForUser, bir kullanıcının sahip olduğu rolleri alır.

Örneğin:

res := e.GetRolesForUser("alice")

GetUsersForRole()

GetUsersForRole, bir role sahip olan kullanıcıları alır.

Örneğin:

res := e.GetUsersForRole("data1_admin")

HasRoleForUser()

HasRoleForUser, bir kullanıcının bir rolü olup olmadığını belirler.

Örneğin:

res := e.HasRoleForUser("alice", "data1_admin")

AddRoleForUser()

AddRoleForUser, bir kullanıcıya bir rol ekler. Kullanıcı zaten rolü sahipse false döner (yani etkilenmez).

Örneğin:

e.AddRoleForUser("alice", "data2_admin")

AddRolesForUser()

AddRolesForUser, bir kullanıcı için birden fazla rol ekler. Kullanıcının zaten bu rollerden birine sahip olması durumunda false döner (yani etkilenmez).

Örneğin:

var roles = []string{"data2_admin", "data1_admin"}
e.AddRolesForUser("alice", roles)

DeleteRoleForUser()

DeleteRoleForUser, bir kullanıcı için bir rolü siler. Kullanıcının rolü olmadığı takdirde false döner (yani etkilenmez).

Örneğin:

e.DeleteRoleForUser("alice", "data1_admin")

DeleteRolesForUser()

DeleteRolesForUser, bir kullanıcı için tüm rolleri siler. Kullanıcının hiç rolü olmadığı takdirde false döner (yani etkilenmez).

Örneğin:

e.DeleteRolesForUser("alice")

DeleteUser()

KullanıcıSil bir kullanıcıyı siler. Kullanıcı yoksa (yani etkilenmemişse) false döner.

Örneğin:

e.DeleteUser("alice")

DeleteRole()

RolSil bir rolü siler.

Örneğin:

e.DeleteRole("data2_admin")

DeletePermission()

İzinSil bir izni siler. İzin yoksa (yani etkilenmemişse) false döner.

Örneğin:

e.DeletePermission("read")

AddPermissionForUser()

AddPermissionForUser, bir kullanıcıya veya rolüne izin ekler. Kullanıcı veya rol zaten izne sahipse false döndürür (yani etkilenmez).

Örneğin:

e.AddPermissionForUser("bob", "read")

AddPermissionsForUser()

AddPermissionsForUser, bir kullanıcıya veya rolüne birden fazla izin ekler. Kullanıcı veya rol zaten izinlerden birine sahipse false döndürür (yani etkilenmez).

Örneğin:

var permissions = [][]string{{"data1", "read"},{"data2","write"}}
for i := 0; i < len(permissions); i++ {
e.AddPermissionsForUser("alice", permissions[i])
}

DeletePermissionForUser()

DeletePermissionForUser, bir kullanıcı veya rol için izni siler. Kullanıcı veya rol izne sahip değilse (yani etkilenmemişse) false döner.

Örneğin:

e.DeletePermissionForUser("bob", "read")

DeletePermissionsForUser()

DeletePermissionsForUser, bir kullanıcı veya rol için izinleri siler. Kullanıcı veya rolün herhangi bir izni yoksa (yani etkilenmemişse) false döner.

Örneğin:

e.DeletePermissionsForUser("bob")

GetPermissionsForUser()

GetPermissionsForUser, bir kullanıcı veya rol için izinleri alır.

Örneğin:

e.GetPermissionsForUser("bob")

HasPermissionForUser()

KullaniciIcinIzinVarMi, bir kullanıcının bir izne sahip olup olmadığını belirler.

Örneğin:

e.HasPermissionForUser("alice", []string{"read"})

GetImplicitRolesForUser()

KullaniciyaOlanGizliRolleriGetir, bir kullanıcının sahip olduğu gizli rollerini alır. GetRolesForUser() ile karşılaştırıldığında, bu fonksiyon doğrudan rollerin yanı sıra dolaylı rolleride alır.

Örneğin:

g, alice, role:admin  
g, role:admin, role:user

GetRolesForUser("alice") sadece şunları alabilir: ["role:admin"].\ Ama GetImplicitRolesForUser("alice") şunları alacak: ["role:admin", "role:user"].

Örneğin:

e.GetImplicitRolesForUser("alice")

GetImplicitUsersForRole()

GetImplicitUsersForRole, rolü miras alan tüm kullanıcıları alır. GetUsersForRole() ile karşılaştırıldığında, bu fonksiyon dolaylı kullanıcıları alır.

Örneğin:

g, alice, role:admin  
g, role:admin, role:user

GetUsersForRole("role:user") sadece şunları alabilir: ["role:admin"].\ Ancak GetImplicitUsersForRole("role:user") şunları alacak: ["role:admin", "alice"].

Örneğin:

users := e.GetImplicitUsersForRole("role:user")

GetImplicitPermissionsForUser()

GetImplicitPermissionsForUser, bir kullanıcı veya rol için örtük izinleri alır.\ GetPermissionsForUser() ile karşılaştırıldığında, bu fonksiyon miras alınan roller için izinleri alır.

Örneğin:

p, admin, data1, read  
p, alice, data2, read
g, alice, admin

GetPermissionsForUser("alice") sadece şunları alabilir: [["alice", "data2", "read"]].\ Ancak GetImplicitPermissionsForUser("alice") şunları alacak: [["admin", "data1", "read"], ["alice", "data2", "read"]].

Örneğin:

e.GetImplicitPermissionsForUser("alice")

GetNamedImplicitPermissionsForUser()

GetNamedImplicitPermissionsForUser, bir kullanıcı veya rol için adlandırılmış politikaya göre örtük izinleri alır. GetImplicitPermissionsForUser()'a kıyasla, bu fonksiyonun politikayı belirtmenize izin verdiğini görüyoruz.

Örneğin:

p, admin, data1, read
p2, admin, create
g, alice, admin

GetImplicitPermissionsForUser("alice") sadece şunları alır: [["admin", "data1", "read"]], politikası varsayılan "p" olanlar.

Ancak politikayı "p2" olarak belirleyerek GetNamedImplicitPermissionsForUser("p2","alice") ile şunları alabilirsiniz: [["admin", "create"]]

Örneğin:

e.GetNamedImplicitPermissionsForUser("p2","alice")

GetDomainsForUser()

GetDomainsForUser, bir kullanıcının sahip olduğu tüm alanları alır.

Örneğin:

p, admin, domain1, data1, read
p, admin, domain2, data2, read
p, admin, domain2, data2, write
g, alice, admin, domain1
g, alice, admin, domain2

GetDomainsForUser("alice") şunları alabilir: ["domain1", "domain2"]

Örneğin:

result, err := e.GetDomainsForUser("alice")

GetImplicitResourcesForUser()

GetImplicitResourcesForUser, kullanıcı için doğru olması gereken tüm politikaları döndürür.

Örneğin:

p, alice, data1, read
p, bob, data2, write
p, data2_admin, data2, read
p, data2_admin, data2, write

g, alice, data2_admin

GetImplicitResourcesForUser("alice") şunu döndürecektir:

resources, err := e.GetImplicitResourcesForUser("alice")

GetImplicitUsersForPermission()

GetImplicitUsersForPermission, bir izin için örtük kullanıcıları alır.

Örneğin:

p, admin, data1, read
p, bob, data1, read
g, alice, admin

GetImplicitUsersForPermission("data1", "read") şunları döndürecektir: ["alice", "bob"].

Not: Yalnızca kullanıcılar döndürülecektir, roller ("g" içindeki 2. argüman) dahil edilmeyecektir.

users, err := e.GetImplicitUsersForPermission("data1", "read")

GetAllowedObjectConditions()

GetAllowedObjectConditions, kullanıcının erişebileceği nesne koşullarının bir dize dizisini döndürür.

Örneğin:

p, alice, r.obj.price < 25, read
p, admin, r.obj.category_id = 2, read
p, bob, r.obj.author = bob, write

g, alice, admin

e.GetAllowedObjectConditions("alice", "read", "r.obj.") şunları döndürecektir: ["price < 25", "category_id = 2"], nil

Not:

  1. ön ek: Nesne koşullarının ön ekini özelleştirebilirsiniz ve "r.obj." genellikle bir ön ek olarak kullanılır. Ön eki kaldırdıktan sonra, kalan kısım nesnenin koşuludur. Eğer ön ek gereksinimini karşılamayan bir obj politika varsa, errors.ERR_OBJ_CONDITION döndürülecektir.

  2. Eğer 'objectConditions' dizisi boşsa, errors.ERR_EMPTY_CONDITION döndürün.

conditions, err := e.GetAllowedObjectConditions("alice", "read", "r.obj.")

GetImplicitUsersForResource()

GetImplicitUsersForResource()

GetImplicitUsersForResource, kaynağa göre örtülü kullanıcı döndürür.

p, alice, data1, read
p, bob, data2, write
p, data2_admin, data2, read
p, data2_admin, data2, write
g, alice, data2_admin

Örneğin:

GetImplicitUsersForResource("data2") şunu döndürecektir: [["bob", "data2", "write"], ["alice", "data2", "read"] ["alice", "data2", "write"]], nil.

ImplicitUsers, err := e.GetImplicitUsersForResource("data2")
not

GetImplicitUsersForResource("data1") şunu döndürecektir: [["alice", "data1", "read"]], nil.