Langkau ke kandungan utama

Management API

The Management API covers all policy and grouping (role) operations: get, add, remove, update, filter. Below, e is an Enforcer instance.

Filtered API​

Filtered methods take (fieldIndex int, fieldValues ...string): matching starts at fieldIndex, and fieldValues are the required values at consecutive positions. Use "" in fieldValues as a wildcard for that position.

Contoh:

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

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

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

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

API Reference​

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

Enforce()​

Enforce menentukan sama ada "subjek" boleh mengakses "objek" dengan operasi "tindakan", parameter input biasanya: (sub, obj, act).

Contohnya:

ok, err := e.Enforce(request)

EnforceWithMatcher()​

EnforceWithMatcher menggunakan pencocokan tersuai untuk menentukan sama ada "subjek" boleh mengakses "objek" dengan operasi "tindakan", parameter input biasanya: (matcher, sub, obj, act), gunakan pencocokan model secara lalai apabila matcher adalah "".

Sebagai contoh:

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

EnforceEx()​

EnforceEx menerangkan penguatkuasaan dengan memberitahu peraturan yang dipadankan.

Sebagai contoh:

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

EnforceExWithMatcher()​

EnforceExWithMatcher menggunakan pencocokan tersuai dan menerangkan penguatkuasaan dengan memberitahu peraturan yang dipadankan.

Contohnya:

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

BatchEnforce()​

BatchEnforce memaksa setiap permintaan dan mengembalikan hasil dalam susunan bool

Sebagai contoh:

boolArray, err := e.BatchEnforce(requests)

GetAllSubjects()​

GetAllSubjects mendapat senarai subjek yang muncul dalam dasar semasa.

Sebagai contoh:

allSubjects := e.GetAllSubjects()

GetAllNamedSubjects()​

GetAllNamedSubjects mendapat senarai subjek yang muncul dalam dasar bernama semasa.

Sebagai contoh:

allNamedSubjects := e.GetAllNamedSubjects("p")

GetAllObjects()​

GetAllObjects mendapat senarai objek yang muncul dalam dasar semasa.

Sebagai contoh:

allObjects := e.GetAllObjects()

GetAllNamedObjects()​

GetAllNamedObjects mendapat senarai objek yang muncul dalam dasar bernama semasa.

Sebagai contoh:

allNamedObjects := e.GetAllNamedObjects("p")

GetAllActions()​

GetAllActions mendapat senarai tindakan yang muncul dalam dasar semasa.

Sebagai contoh:

allActions := e.GetAllActions()

GetAllNamedActions()​

GetAllNamedActions mendapat senarai tindakan yang muncul dalam dasar bernama semasa.

Sebagai contoh:

allNamedActions := e.GetAllNamedActions("p")

GetAllRoles()​

GetAllRoles mendapat senarai peranan yang muncul dalam dasar semasa.

Sebagai contoh:

allRoles = e.GetAllRoles()

GetAllNamedRoles()​

GetAllNamedRoles mendapat senarai peranan yang muncul dalam dasar bernama semasa.

Sebagai contoh:

allNamedRoles := e.GetAllNamedRoles("g")

GetPolicy()​

GetPolicy mendapat semua peraturan kebenaran dalam dasar.

Sebagai contoh:

policy = e.GetPolicy()

GetFilteredPolicy()​

GetFilteredPolicy mendapat semua peraturan keizinan dalam dasar, penapis medan boleh ditentukan.

Sebagai contoh:

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

GetNamedPolicy()​

GetNamedPolicy mendapat semua peraturan keizinan dalam dasar bernama.

Sebagai contoh:

namedPolicy := e.GetNamedPolicy("p")

GetFilteredNamedPolicy()​

GetFilteredNamedPolicy mendapat semua peraturan keizinan dalam dasar bernama, penapis medan boleh ditentukan.

Sebagai contoh:

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

GetGroupingPolicy()​

GetGroupingPolicy mendapatkan semua peraturan warisan peranan dalam dasar.

Sebagai contoh:

groupingPolicy := e.GetGroupingPolicy()

GetFilteredGroupingPolicy()​

GetFilteredGroupingPolicy mendapatkan semua peraturan warisan peranan dalam dasar, penapis medan boleh ditentukan.

Sebagai contoh:

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

GetNamedGroupingPolicy()​

GetNamedGroupingPolicy mendapatkan semua peraturan warisan peranan dalam dasar.

Sebagai contoh:

namedGroupingPolicy := e.GetNamedGroupingPolicy("g")

GetFilteredNamedGroupingPolicy()​

GetFilteredNamedGroupingPolicy mendapatkan semua peraturan warisan peranan dalam dasar.

Sebagai contoh:

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

HasPolicy()​

HasPolicy menentukan sama ada peraturan pengkalan kuasa wujud.

Sebagai contoh:

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

HasNamedPolicy()​

HasNamedPolicy menentukan sama ada peraturan pengkalan kuasa bernama wujud.

Sebagai contoh:

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

AddPolicy()​

AddPolicy menambah peraturan pengkalan kuasa ke dasar semasa. Jika peraturan tersebut sudah wujud, fungsi ini mengembalikan false dan peraturan tersebut tidak akan ditambahkan. Jika tidak, fungsi ini mengembalikan true dengan menambahkan peraturan baru.

Sebagai contoh:

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

AddPolicies()​

AddPolicies menambahkan peraturan kebenaran ke dasar semasa. Operasi ini bersifat atomik. Oleh itu, jika peraturan kebenaran terdiri daripada peraturan yang tidak konsisten dengan dasar semasa, fungsi ini mengembalikan salah dan tiada peraturan dasar ditambahkan kepada dasar semasa. Jika semua peraturan kebenaran adalah konsisten dengan peraturan dasar, fungsi ini mengembalikan benar dan setiap peraturan dasar ditambahkan kepada dasar semasa.

Sebagai contoh:

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

areRulesAdded := e.AddPolicies(rules)

AddPoliciesEx()​

AddPoliciesEx menambah peraturan keizinan ke dasar semasa. Jika peraturan sudah wujud, peraturan tersebut tidak akan ditambahkan. Tetapi tidak seperti AddPolicies, peraturan lain yang tidak wujud ditambahkan bukannya mengembalikan salah secara langsung.

Sebagai contoh:

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

AddNamedPolicy()​

AddNamedPolicy menambah peraturan keizinan ke dasar bernama semasa. Jika peraturan tersebut sudah wujud, fungsi ini mengembalikan false dan peraturan tersebut tidak akan ditambahkan. Jika tidak, fungsi ini mengembalikan true dengan menambahkan peraturan baru.

Sebagai contoh:

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

AddNamedPolicies()​

AddNamedPolicies menambah peraturan kebenaran kepada polisi bernama semasa. Operasi ini bersifat atomik. Oleh itu, jika peraturan kebenaran terdiri daripada peraturan yang tidak konsisten dengan dasar semasa, fungsi ini mengembalikan salah dan tiada peraturan dasar ditambahkan kepada dasar semasa. Jika semua peraturan kebenaran adalah konsisten dengan peraturan dasar, fungsi ini mengembalikan benar dan setiap peraturan dasar ditambahkan kepada dasar semasa.

Sebagai contoh:

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 menambah peraturan kebenaran kepada polisi bernama semasa. Jika peraturan sudah wujud, peraturan tersebut tidak akan ditambahkan. Tetapi tidak seperti AddNamedPolicies, peraturan lain yang tidak wujud ditambah bukannya mengembalikan salah secara langsung.

Sebagai contoh:

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

SelfAddPoliciesEx()​

SelfAddPoliciesEx menambah peraturan kebenaran kepada polisi bernama semasa dengan autoNotifyWatcher dilumpuhkan. Jika peraturan sudah wujud, peraturan tersebut tidak akan ditambahkan. Tetapi tidak seperti SelfAddPolicies, peraturan lain yang tidak wujud ditambahkan bukannya mengembalikan salah secara langsung.

Sebagai contoh:

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

RemovePolicy()​

RemovePolicy mengeluarkan peraturan kebenaran daripada dasar semasa.

Sebagai contoh:

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

RemovePolicies()​

RemovePolicies mengeluarkan peraturan kebenaran dari polisi semasa. Operasi ini bersifat atomik. Oleh itu, jika peraturan kebenaran mengandungi peraturan yang tidak konsisten dengan dasar semasa, fungsi ini mengembalikan salah dan tiada peraturan dasar dikeluarkan dari dasar semasa. Jika semua peraturan kebenaran adalah konsisten dengan peraturan dasar, fungsi ini mengembalikan benar dan setiap peraturan dasar dikeluarkan dari dasar semasa.

Sebagai contoh:

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

areRulesRemoved := e.RemovePolicies(rules)

RemoveFilteredPolicy()​

RemoveFilteredPolicy mengeluarkan peraturan kebenaran daripada dasar semasa, penapis medan boleh ditentukan. RemovePolicy mengeluarkan peraturan kebenaran daripada dasar semasa.

Sebagai contoh:

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

RemoveNamedPolicy()​

RemoveNamedPolicy mengeluarkan peraturan kebenaran daripada dasar bernama semasa.

Sebagai contoh:

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

RemoveNamedPolicies()​

RemoveNamedPolicies mengeluarkan peraturan kebenaran dari polisi bernama semasa. Operasi ini bersifat atomik. Oleh itu, jika peraturan kebenaran mengandungi peraturan yang tidak konsisten dengan dasar semasa, fungsi ini mengembalikan salah dan tiada peraturan dasar dikeluarkan dari dasar semasa. Jika semua peraturan kebenaran adalah konsisten dengan peraturan dasar, fungsi ini mengembalikan benar dan setiap peraturan dasar dikeluarkan dari dasar semasa.

Sebagai contoh:

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 mengeluarkan peraturan kebenaran dari polisi bernama semasa, penapis medan boleh ditentukan.

Sebagai contoh:

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

HasGroupingPolicy()​

HasGroupingPolicy menentukan sama ada peraturan warisan peranan wujud.

Sebagai contoh:

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

HasNamedGroupingPolicy()​

HasNamedGroupingPolicy menentukan sama ada peraturan warisan peranan bernama wujud.

Sebagai contoh:

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

AddGroupingPolicy()​

AddGroupingPolicy menambahkan peraturan warisan peranan kepada dasar semasa. Jika peraturan tersebut sudah wujud, fungsi ini mengembalikan false dan peraturan tersebut tidak akan ditambahkan. Jika tidak, fungsi ini mengembalikan true dengan menambahkan peraturan baru.

Sebagai contoh:

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

AddGroupingPolicies()​

AddGroupingPolicies menambahkan peraturan warisan peranan kepada dasar semasa. Operasi ini bersifat atomik. Oleh itu, jika peraturan kebenaran terdiri daripada peraturan yang tidak konsisten dengan dasar semasa, fungsi ini mengembalikan salah dan tiada peraturan dasar ditambahkan kepada dasar semasa. Jika semua peraturan kebenaran adalah konsisten dengan peraturan dasar, fungsi ini mengembalikan benar dan setiap peraturan dasar ditambahkan kepada dasar semasa.

Sebagai contoh:

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

areRulesAdded := e.AddGroupingPolicies(rules)

AddGroupingPoliciesEx()​

AddGroupingPoliciesEx menambahkan peraturan warisan peranan kepada dasar semasa. Jika peraturan sudah wujud, peraturan tersebut tidak akan ditambahkan. Tetapi tidak seperti AddGroupingPolicies, peraturan-peraturan lain yang tidak wujud ditambahkan bukannya mengembalikan false secara langsung.

Sebagai contoh:

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

AddNamedGroupingPolicy()​

AddNamedGroupingPolicy menambahkan peraturan warisan peranan bernama kepada dasar semasa. Jika peraturan tersebut sudah wujud, fungsi ini mengembalikan false dan peraturan tersebut tidak akan ditambahkan. Jika tidak, fungsi ini mengembalikan true dengan menambahkan peraturan baru.

Sebagai contoh:

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

AddNamedGroupingPolicies()​

AddNamedGroupingPolicies menambahkan peraturan warisan peranan bernama kepada dasar semasa. Operasi ini bersifat atomik. Oleh itu, jika peraturan kebenaran terdiri daripada peraturan yang tidak konsisten dengan dasar semasa, fungsi ini mengembalikan salah dan tiada peraturan dasar ditambahkan kepada dasar semasa. Jika semua peraturan kebenaran adalah konsisten dengan peraturan dasar, fungsi ini mengembalikan benar dan setiap peraturan dasar ditambahkan kepada dasar semasa.

Sebagai contoh:

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

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

AddNamedGroupingPoliciesEx()​

AddNamedGroupingPoliciesEx menambah peraturan warisan peranan bernama kepada dasar semasa. Jika peraturan sudah wujud, peraturan tersebut tidak akan ditambahkan. Tetapi tidak seperti AddNamedGroupingPolicies, peraturan lain yang tidak wujud ditambahkan bukannya mengembalikan salah secara langsung

Sebagai contoh:

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

RemoveGroupingPolicy()​

RemoveGroupingPolicy mengalih keluar peraturan warisan peranan dari dasar semasa.

Sebagai contoh:

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

RemoveGroupingPolicies()​

RemoveGroupingPolicies mengeluarkan peraturan warisan peranan dari dasar semasa. Operasi ini bersifat atomik. Oleh itu, jika peraturan kebenaran mengandungi peraturan yang tidak konsisten dengan dasar semasa, fungsi ini mengembalikan salah dan tiada peraturan dasar dikeluarkan dari dasar semasa. Jika semua peraturan kebenaran adalah konsisten dengan peraturan dasar, fungsi ini mengembalikan benar dan setiap peraturan dasar dikeluarkan dari dasar semasa.

Sebagai contoh:

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

areRulesRemoved := e.RemoveGroupingPolicies(rules)

RemoveFilteredGroupingPolicy()​

RemoveFilteredGroupingPolicy mengeluarkan peraturan warisan peranan dari dasar semasa, penapis medan boleh ditentukan.

Sebagai contoh:

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

RemoveNamedGroupingPolicy()​

RemoveNamedGroupingPolicy membuang peraturan warisan peranan dari polisi bernama semasa.

Sebagai contoh:

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

RemoveNamedGroupingPolicies()​

RemoveNamedGroupingPolicies membuang peraturan warisan peranan bernama dari polisi semasa. Operasi ini bersifat atomik. Oleh itu, jika peraturan kebenaran mengandungi peraturan yang tidak konsisten dengan dasar semasa, fungsi ini mengembalikan salah dan tiada peraturan dasar dikeluarkan dari dasar semasa. Jika semua peraturan kebenaran adalah konsisten dengan peraturan dasar, fungsi ini mengembalikan benar dan setiap peraturan dasar dikeluarkan dari dasar semasa.

Sebagai contoh:

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

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

RemoveFilteredNamedGroupingPolicy()​

RemoveFilteredNamedGroupingPolicy mengalih keluar peraturan warisan peranan dari polisi bernama semasa, penapis medan boleh ditentukan.

Sebagai contoh:

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

UpdatePolicy()​

UpdatePolicy mengemas kini polisi lama kepada polisi baru.

Sebagai contoh:

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

UpdatePolicies()​

UpdatePolicies mengemas kini semua polisi lama kepada polisi baru.

Sebagai contoh:

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

UpdateNamedPolicy()​

UpdateNamedPolicy update a old policy to new policy in the named policy.

Sebagai contoh:

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

UpdateNamedPolicies()​

UpdateNamedPolicies updates all old policies to new policies in the named policy.

Sebagai contoh:

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

UpdateFilteredPolicies()​

UpdateFilteredPolicies updates all old policies that match the filter to new policies.

Sebagai contoh:

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

AddFunction()​

AddFunction menambah fungsi yang disesuaikan.

Sebagai contoh:

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 memuatkan polisi yang disaring dari fail/pangkalan data.

Sebagai contoh:

err := e.LoadFilteredPolicy()

LoadIncrementalFilteredPolicy()​

LoadIncrementalFilteredPolicy menambahkan polisi yang disaring dari fail/pangkalan data.

Sebagai contoh:

err := e.LoadIncrementalFilteredPolicy()

UpdateGroupingPolicy()​

UpdateGroupingPolicy mengemas kini oldRule ke newRule dalam bahagian g

Sebagai contoh:

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

UpdateNamedGroupingPolicy()​

KemasKiniKumpulanDenganNama mengemas kini peraturan lama bernama ptype kepada peraturan baru dalam bahagian g

Sebagai contoh:

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

SetFieldIndex()​

TetapIndeksMedan menyokong penyesuaian nama dan kedudukan konvensional bagi sub, obj, domain, dan priority.

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

Sebagai contoh:

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

Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.