Ana içeriğe atla

Management API

Casbin politikası yönetimi için tam destek sağlayan ilkel API.

Filtered API

Neredeyse tüm filtreli api'ler aynı parametrelere sahip: (fieldIndex int, fieldValues ...string). fieldIndex, eşleşmenin başladığı indekstir, fieldValues sonuçların sahip olması gereken değerleri belirtir. fieldValues içindeki boş string herhangi bir kelime olabilir.

Örnek:

p, alice, book, read
p, bob, book, read
p, bob, book, write
p, alice, pen, get
p, bob, pen ,get
e.GetFilteredPolicy(1, "book") // will return: [[alice book read] [bob book read] [bob book write]]

e.GetFilteredPolicy(1, "book", "read") // will return: [[alice book read] [bob book read]]

e.GetFilteredPolicy(0, "alice", "", "read") // will return: [[alice book read]]

e.GetFilteredPolicy(0, "alice") // will return: [[alice book read] [alice pen get]]

Referans

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

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

Enforce()

"Enforce", bir "subject"ın "action" işlemiyle bir "object"a erişip erişemeyeceğine karar verir, genellikle girdi parametreleri şunlardır: (sub, obj, act).

Örneğin:

ok, err := e.Enforce(request)

EnforceWithMatcher()

EnforceWithMatcher, özel bir eşleştirici kullanarak bir "subject"ın "action" işlemiyle bir "object"a erişip erişemeyeceğine karar verir, genellikle girdi parametreleri şunlardır: (matcher, sub, obj, act), eşleştirici boş olduğunda varsayılan olarak model eşleştirici kullanılır.

Örneğin:

ok, err := e.EnforceWithMatcher(matcher, request)

EnforceEx()

EnforceEx, eşleşen kuralları bildirerek uygulamayı açıklar.

Örneğin:

ok, reason, err := e.EnforceEx(request)

EnforceExWithMatcher()

EnforceExWithMatcher, özel bir eşleştirici kullanarak ve eşleşen kuralları bildirerek uygulamayı açıklar.

Örneğin:

ok, reason, err := e.EnforceExWithMatcher(matcher, request)

BatchEnforce()

BatchEnforce her isteği uygular ve sonucu bir bool dizisinde döndürür

Örneğin:

boolArray, err := e.BatchEnforce(requests)

GetAllSubjects()

GetAllSubjects, mevcut politikada görünen konuların listesini alır.

Örneğin:

allSubjects := e.GetAllSubjects()

GetAllNamedSubjects()

GetAllNamedSubjects, mevcut adlandırılmış politikada görünen konuların listesini alır.

Örneğin:

allNamedSubjects := e.GetAllNamedSubjects("p")

GetAllObjects()

GetAllObjects, mevcut politikada görünen nesnelerin listesini alır.

Örneğin:

allObjects := e.GetAllObjects()

GetAllNamedObjects()

GetAllNamedObjects, mevcut adlandırılmış politikada görünen nesnelerin listesini alır.

Örneğin:

allNamedObjects := e.GetAllNamedObjects("p")

GetAllActions()

GetAllActions, mevcut politikada görünen eylemlerin listesini alır.

Örneğin:

allActions := e.GetAllActions()

GetAllNamedActions()

GetAllNamedActions, geçerli adlandırılmış politikada görünen eylemlerin listesini alır.

Örneğin:

allNamedActions := e.GetAllNamedActions("p")

GetAllRoles()

GetAllRoles, geçerli politikada görünen rolleri listeler.

Örneğin:

allRoles = e.GetAllRoles()

GetAllNamedRoles()

GetAllNamedRoles, geçerli adlandırılmış politikada görünen rolleri listeler.

Örneğin:

allNamedRoles := e.GetAllNamedRoles("g")

GetPolicy()

GetPolicy, politikadaki tüm yetkilendirme kurallarını alır.

Örneğin:

policy = e.GetPolicy()

GetFilteredPolicy()

GetFilteredPolicy, politikadaki tüm yetkilendirme kurallarını alır, alan filtreleri belirtilebilir.

Örneğin:

filteredPolicy := e.GetFilteredPolicy(0, "alice")

GetNamedPolicy()

GetNamedPolicy, adlandırılmış politikadaki tüm yetkilendirme kurallarını alır.

Örneğin:

namedPolicy := e.GetNamedPolicy("p")

GetFilteredNamedPolicy()

GetFilteredNamedPolicy, adlandırılmış politikadaki tüm yetkilendirme kurallarını alır, alan filtreleri belirtilebilir.

Örneğin:

filteredNamedPolicy = e.GetFilteredNamedPolicy("p", 0, "bob")

GetGroupingPolicy()

GetGroupingPolicy, politikadaki tüm rol miras kurallarını alır.

Örneğin:

groupingPolicy := e.GetGroupingPolicy()

GetFilteredGroupingPolicy()

GetFilteredGroupingPolicy, politikadaki tüm rol miras kurallarını alır, alan filtreleri belirtilebilir.

Örneğin:

filteredGroupingPolicy := e.GetFilteredGroupingPolicy(0, "alice")

GetNamedGroupingPolicy()

GetNamedGroupingPolicy, politikadaki tüm rol miras kurallarını alır.

Örneğin:

namedGroupingPolicy := e.GetNamedGroupingPolicy("g")

GetFilteredNamedGroupingPolicy()

GetFilteredNamedGroupingPolicy, politikadaki tüm rol miras kurallarını alır.

Örneğin:

namedGroupingPolicy := e.GetFilteredNamedGroupingPolicy("g", 0, "alice")

HasPolicy()

HasPolicy, bir yetkilendirme kuralının var olup olmadığını belirler.

Örneğin:

hasPolicy := e.HasPolicy("data2_admin", "data2", "read")

HasNamedPolicy()

HasNamedPolicy, adlandırılmış bir yetkilendirme kuralının var olup olmadığını belirler.

Örneğin:

hasNamedPolicy := e.HasNamedPolicy("p", "data2_admin", "data2", "read")

AddPolicy()

AddPolicy, mevcut politikaya bir yetkilendirme kuralı ekler. Eğer kural zaten mevcutsa, fonksiyon false döner ve kural eklenmez. Aksi takdirde, fonksiyon yeni kuralı ekleyerek true döner.

Örneğin:

added := e.AddPolicy('eve', 'data3', 'read')

AddPolicies()

AddPolicies, yetkilendirme kurallarını mevcut politikaya ekler. İşlem doğası gereği atomiktir. Bu nedenle, eğer yetkilendirme kuralları mevcut politikayla tutarsız olan kurallardan oluşuyorsa, fonksiyon false döner ve hiçbir politikaya kural eklenmez. Eğer tüm yetkilendirme kuralları politikanın kurallarıyla tutarlıysa, fonksiyon true döner ve her bir politikaya kural eklenir.

Örneğin:

rules := [][] string {
[]string {"jack", "data4", "read"},
[]string {"katy", "data4", "write"},
[]string {"leyo", "data4", "read"},
[]string {"ham", "data4", "write"},
}

areRulesAdded := e.AddPolicies(rules)

AddPoliciesEx()

AddPoliciesEx, yetkilendirme kurallarını mevcut politikaya ekler. Eğer kural zaten mevcutsa, kural eklenmeyecektir. Ancak AddPolicies'ten farklı olarak, diğer mevcut olmayan kurallar eklenir ve doğrudan false döndürülmez.

Örneğin:

ok, err := e.AddPoliciesEx([][]string{{"user1", "data1", "read"}, {"user2", "data2", "read"}})

AddNamedPolicy()

AddNamedPolicy, bir yetkilendirme kuralını mevcut adlandırılmış politikaya ekler. Eğer kural zaten mevcutsa, fonksiyon false döndürür ve kural eklenmez. Aksi takdirde, fonksiyon yeni kuralı ekleyerek true döndürür.

Örneğin:

added := e.AddNamedPolicy("p", "eve", "data3", "read")

AddNamedPolicies()

AddNamedPolicies, mevcut adlandırılmış politikaya yetkilendirme kuralları ekler. İşlem, doğası gereği atomiktir. Bu nedenle, eğer yetkilendirme kuralları, mevcut politikayla tutarsız olan kurallardan oluşuyorsa, fonksiyon false döner ve hiçbir politika kuralı mevcut politika eklenmez. Eğer tüm yetkilendirme kuralları politikanın kurallarıyla tutarlıysa, fonksiyon true döner ve her politika kuralı mevcut politika eklenir.

Örneğin:

rules := [][] string {
[]string {"jack", "data4", "read"},
[]string {"katy", "data4", "write"},
[]string {"leyo", "data4", "read"},
[]string {"ham", "data4", "write"},
}

areRulesAdded := e.AddNamedPolicies("p", rules)

AddNamedPoliciesEx()

AddNamedPoliciesEx, mevcut adlandırılmış politikaya yetkilendirme kuralları ekler. Eğer kural zaten varsa, kural eklenmez. Ancak AddNamedPolicies'ten farklı olarak, diğer mevcut olmayan kurallar eklenir ve doğrudan false dönülmez.

Örneğin:

ok, err := e.AddNamedPoliciesEx("p", [][]string{{"user1", "data1", "read"}, {"user2", "data2", "read"}})

SelfAddPoliciesEx()

SelfAddPoliciesEx, autoNotifyWatcher devre dışı bırakılarak geçerli adlandırılmış politikaya yetkilendirme kuralları ekler. Eğer kural zaten mevcutsa, kural eklenmeyecektir. Ancak SelfAddPolicies'ten farklı olarak, diğer mevcut olmayan kurallar doğrudan false döndürmek yerine eklenir.

Örneğin:

ok, err := e.SelfAddPoliciesEx("p", "p", [][]string{{"user1", "data1", "read"}, {"user2", "data2", "read"}})

RemovePolicy()

RemovePolicy, geçerli politikadan bir yetkilendirme kuralını kaldırır.

Örneğin:

removed := e.RemovePolicy("alice", "data1", "read")

RemovePolicies()

RemovePolicies, geçerli politikadan yetkilendirme kurallarını kaldırır. İşlem, doğası gereği atomiktir. Bu nedenle, yetkilendirme kuralları mevcut politikayla tutarsız olan kurallardan oluşuyorsa, fonksiyon yanlış döner ve hiçbir politikaya ait kural mevcut politikadan kaldırılmaz. Eğer tüm yetkilendirme kuralları politikaya uygun ise, fonksiyon doğru döner ve her bir politikaya ait kural mevcut politikadan kaldırılır.

Örneğin:

rules := [][] string {
[]string {"jack", "data4", "read"},
[]string {"katy", "data4", "write"},
[]string {"leyo", "data4", "read"},
[]string {"ham", "data4", "write"},
}

areRulesRemoved := e.RemovePolicies(rules)

RemoveFilteredPolicy()

RemoveFilteredPolicy, mevcut politikadan bir yetkilendirme kuralını kaldırır, alan filtreleri belirtilebilir. RemovePolicy, mevcut politikadan bir yetkilendirme kuralını kaldırır.

Örneğin:

removed := e.RemoveFilteredPolicy(0, "alice", "data1", "read")

RemoveNamedPolicy()

RemoveNamedPolicy, mevcut adlandırılmış politikadan bir yetkilendirme kuralını kaldırır.

Örneğin:

removed := e.RemoveNamedPolicy("p", "alice", "data1", "read")

RemoveNamedPolicies()

RemoveNamedPolicies, mevcut adlandırılmış politikadan yetkilendirme kurallarını kaldırır. İşlem, doğası gereği atomiktir. Bu nedenle, yetkilendirme kuralları mevcut politikayla tutarsız olan kurallardan oluşuyorsa, fonksiyon false döner ve hiçbir politikaya ait kural kaldırılmaz. Eğer tüm yetkilendirme kuralları politikaya uygunsa, fonksiyon true döner ve her politikaya ait kural kaldırılır.

Örneğin:

rules := [][] string {
[]string {"jack", "data4", "read"},
[]string {"katy", "data4", "write"},
[]string {"leyo", "data4", "read"},
[]string {"ham", "data4", "write"},
}

areRulesRemoved := e.RemoveNamedPolicies("p", rules)

RemoveFilteredNamedPolicy()

RemoveFilteredNamedPolicy, mevcut adlandırılmış politikadan bir yetkilendirme kuralını kaldırır, alan filtreleri belirtilebilir.

Örneğin:

removed := e.RemoveFilteredNamedPolicy("p", 0, "alice", "data1", "read")

HasGroupingPolicy()

HasGroupingPolicy, bir rol miras kuralının var olup olmadığını belirler.

Örneğin:

has := e.HasGroupingPolicy("alice", "data2_admin")

HasNamedGroupingPolicy()

HasNamedGroupingPolicy, adlandırılmış bir rol miras kuralının var olup olmadığını belirler.

Örneğin:

has := e.HasNamedGroupingPolicy("g", "alice", "data2_admin")

AddGroupingPolicy()

AddGroupingPolicy, mevcut politikaya bir rol miras kuralı ekler. Eğer kural zaten varsa, fonksiyon false döner ve kural eklenmez. Aksi takdirde fonksiyon, yeni kuralı ekleyerek true döner.

Örneğin:

added := e.AddGroupingPolicy("group1", "data2_admin")

AddGroupingPolicies()

AddGroupingPolicies, rol miras kurallarını mevcut politikaya ekler. İşlem doğası gereği atomiktir. Bu nedenle, yetkilendirme kuralları mevcut politikayla tutarsız olan kurallardan oluşuyorsa, fonksiyon false döner ve hiçbir politikaya kural eklenmez. Eğer tüm yetkilendirme kuralları politikaya uygunsa, fonksiyon true döner ve her politikaya kural eklenir.

Örneğin:

rules := [][] string {
[]string {"ham", "data4_admin"},
[]string {"jack", "data5_admin"},
}

areRulesAdded := e.AddGroupingPolicies(rules)

AddGroupingPoliciesEx()

AddGroupingPoliciesEx, rol miras kurallarını mevcut politikaya ekler. Eğer kural zaten mevcutsa, kural eklenmez. Ancak AddGroupingPolicies'ten farklı olarak, diğer mevcut olmayan kurallar doğrudan false döndürmek yerine eklenir.

Örneğin:

ok, err := e.AddGroupingPoliciesEx([][]string{{"user1", "member"}, {"user2", "member"}})

AddNamedGroupingPolicy()

AddNamedGroupingPolicy, mevcut politikaya adlandırılmış bir rol miras kurallı ekler. Eğer kural zaten mevcutsa, fonksiyon false döner ve kural eklenmez. Aksi takdirde fonksiyon, yeni kuralı ekleyerek true döner.

Örneğin:

added := e.AddNamedGroupingPolicy("g", "group1", "data2_admin")

AddNamedGroupingPolicies()

AddNamedGroupingPolicies, mevcut politikaya adlandırılmış rol miras kuralları ekler. İşlem, doğası gereği atomiktir. Bu nedenle, yetkilendirme kuralları mevcut politikayla tutarsız olan kurallardan oluşuyorsa, fonksiyon yanlış döner ve hiçbir politikaya kural eklenmez. Eğer tüm yetkilendirme kuralları politikaya uygunsa, fonksiyon doğru döner ve her politikaya kural mevcut politikaya eklenir.

Örneğin:

rules := [][] string {
[]string {"ham", "data4_admin"},
[]string {"jack", "data5_admin"},
}

areRulesAdded := e.AddNamedGroupingPolicies("g", rules)

AddNamedGroupingPoliciesEx()

AddNamedGroupingPoliciesEx, adlandırılmış rol miras kurallarını mevcut politika için ekler. Eğer kural zaten varsa, kural eklenmez. Ancak AddNamedGroupingPolicies'ten farklı olarak, diğer mevcut olmayan kurallar doğrudan yanlış dönmek yerine eklenir.

Örneğin:

ok, err := e.AddNamedGroupingPoliciesEx("g", [][]string{{"user1", "member"}, {"user2", "member"}})

RemoveGroupingPolicy()

RemoveGroupingPolicy, bir rol miras kuralını mevcut politikadan kaldırır.

Örneğin:

removed := e.RemoveGroupingPolicy("alice", "data2_admin")

RemoveGroupingPolicies()

RemoveGroupingPolicies, mevcut politikadan rol miras kurallarını kaldırır. İşlem doğası gereği atomiktir. Bu nedenle, yetkilendirme kuralları mevcut politikayla tutarsız olan kurallardan oluşuyorsa, fonksiyon false döner ve hiçbir politika kuralı mevcut politikadan kaldırılmaz. Eğer tüm yetkilendirme kuralları politika kurallarıyla tutarlıysa, fonksiyon true döner ve her politika kuralı mevcut politikadan kaldırılır.

Örneğin:

rules := [][] string {
[]string {"ham", "data4_admin"},
[]string {"jack", "data5_admin"},
}

areRulesRemoved := e.RemoveGroupingPolicies(rules)

RemoveFilteredGroupingPolicy()

RemoveFilteredGroupingPolicy, mevcut politikadan bir rol miras kuralını kaldırır, alan filtreleri belirtilebilir.

Örneğin:

removed := e.RemoveFilteredGroupingPolicy(0, "alice")

RemoveNamedGroupingPolicy()

RemoveNamedGroupingPolicy, mevcut adlandırılmış politikadan bir rol kalıtım kuralını kaldırır.

Örneğin:

removed := e.RemoveNamedGroupingPolicy("g", "alice")

RemoveNamedGroupingPolicies()

RemoveNamedGroupingPolicies, mevcut politikadan adlandırılmış rol kalıtım kurallarını kaldırır. İşlem doğası gereği atomiktir. Bu nedenle, yetkilendirme kuralları mevcut politikayla tutarsız olan kurallardan oluşuyorsa, fonksiyon false döner ve hiçbir politikaya ait kural kaldırılmaz. Eğer tüm yetkilendirme kuralları politikaya uygunsa, fonksiyon true döner ve her bir politikaya ait kural mevcut politikadan kaldırılır.

Örneğin:

rules := [][] string {
[]string {"ham", "data4_admin"},
[]string {"jack", "data5_admin"},
}

areRulesRemoved := e.RemoveNamedGroupingPolicies("g", rules)

RemoveFilteredNamedGroupingPolicy()

RemoveFilteredNamedGroupingPolicy, mevcut adlandırılmış politikadan bir rol miras kuralını kaldırır, alan filtreleri belirtilebilir.

Örneğin:

removed := e.RemoveFilteredNamedGroupingPolicy("g", 0, "alice")

UpdatePolicy()

UpdatePolicy, eski bir politikayı yeni bir politika olarak günceller.

Örneğin:

updated, err := e.UpdatePolicy([]string{"eve", "data3", "read"}, []string{"eve", "data3", "write"})

UpdatePolicies()

UpdatePolicies, tüm eski politikaları yeni politikalara günceller.

Örneğin:

updated, err := e.UpdatePolicies([][]string{{"eve", "data3", "read"}, {"jack", "data3", "read"}}, [][]string{{"eve", "data3", "write"}, {"jack", "data3", "write"}})

AddFunction()

AddFunction, özelleştirilmiş bir fonksiyon ekler.

Örneğin:

func CustomFunction(key1 string, key2 string) bool {
if key1 == "/alice_data2/myid/using/res_id" && key2 == "/alice_data/:resource" {
return true
} else if key1 == "/alice_data2/myid/using/res_id" && key2 == "/alice_data2/:id/using/:resId" {
return true
} else {
return false
}
}

func CustomFunctionWrapper(args ...interface{}) (interface{}, error) {
key1 := args[0].(string)
key2 := args[1].(string)

return bool(CustomFunction(key1, key2)), nil
}

e.AddFunction("keyMatchCustom", CustomFunctionWrapper)

LoadFilteredPolicy()

LoadFilteredPolicy, filtrelenmiş politikaları dosya/veritabanından yükler.

Örneğin:

err := e.LoadFilteredPolicy()

LoadIncrementalFilteredPolicy()

LoadIncrementalFilteredPolicy, dosya/veritabanından filtrelenmiş bir politika ekler.

Örneğin:

err := e.LoadIncrementalFilteredPolicy()

UpdateGroupingPolicy()

UpdateGroupingPolicy, g bölümündeki oldRule'u newRule ile günceller.

Örneğin:

succeed, err : = e.UpdateGroupingPolicy([]string{"data3_admin", "data4_admin"}, []string{"admin", "data4_admin"})

UpdateNamedGroupingPolicy()

UpdateNamedGroupingPolicy, eski ptype adlı kuralı g bölümünde yeniRule olarak günceller.

Örneğin:

succeed, err : = e.UpdateGroupingPolicy("g1",[]string{"data3_admin", "data4_admin"}, []string{"admin", "data4_admin"})

SetFieldIndex()

SetFieldIndex, sub, obj, domain ve priority için geleneksel ad ve pozisyonun özelleştirilmesini destekler.

[policy_definition]
p = customized_priority, obj, act, eft, subject

Örneğin:

e.SetFieldIndex("p", constant.PriorityIndex, 0)
e.SetFieldIndex("p", constant.SubjectIndex, 4)