メインコンテンツにスキップ

Management API

Casbinポリシー管理を完全にサポートするプリミティブAPI。

フィルタされた API

ほとんどすべてのフィルタリングされた api は、同じパラメータ (fieldIndex int, fieldValues ...string) を持っています。 fieldIndex は、startと一致するインデックスで、 fieldValues は結果が持つべき値を表します。 fieldValuesの空の文字列は任意の単語である可能性があることに注意してください。

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

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



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



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

参照

global variable e は Enforcer インスタンスです。

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

Enforce()

Enforce は、"subject" が操作 "action" で"object" にアクセスできるかどうかを決定します。通常、入力パラメータは次のようになります。

例:

ok, err := e.Enforce(request)

EnforceWithMatcher()

EnforceWithMatcherはカスタムマッチャを使用して、"subject"が操作 "action"で"オブジェクト"にアクセスできるかどうかを決定します。 入力パラメータは通常次のとおりです: (matcher, sub, obj, act) マッチャーが "" の場合、デフォルトでモデルマッチャーを使用します。

例:

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

EnforceEx()

EnforceEx マッチングルールを通知して執行を説明します。

例:

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

EnforceExWithMatcher()

EnforceExWithMatcherはカスタムマッチャを使用し、一致したルールを通知することによって執行を説明します。

例:

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

BatchEnforce()

BatchEnforce は、リクエストごとに強制的に bool 配列を返します。

例:

boolArray, err := e.BatchEnforce(requests)

GetAllSubjects()

GetAllSubjectsは、現在のポリシーに表示される科目のリストを取得します。

例:

allSubjects := e.GetAllSubjects()

GetAllNamedSubjects()

GetAllNamedSubjects は、現在の名前付きポリシーに表示されるサブジェクトのリストを取得します。

例:

allNamedSubjects := e.GetAllNamedSubjects("p")

GetAllObjects()

GetAllObjects は、現在のポリシーに表示されるオブジェクトのリストを取得します。

例:

allObjects := e.GetAllObjects()

GetAllNamedObjects()

GetAllNamedObjects は、現在の名前付きポリシーに表示されるオブジェクトのリストを取得します。

例:

allNamedObjects := e.GetAllNamedObjects("p")

GetAllActions()

GetAllActions は、現在のポリシーに表示されるアクションのリストを取得します。

例:

allActions := e.GetAllActions()

GetAllNamedActions()

GetAllNamedActions は、現在の名前付きポリシーに表示されるアクションのリストを取得します。

例:

allNamedActions := e.GetAllNamedActions("p")

GetAllRoles()

GetAllRoles は、現在のポリシーに表示されるロールのリストを取得します。

例:

allRoles = e.GetAllRoles()

GetAllNamedRoles()

GetAllNamedRoles は、現在の名前付きポリシーに表示されるロールのリストを取得します。

例:

allNamedRoles := e.GetAllNamedRoles("g")

GetPolicy()

GetPolicy は、ポリシー内のすべての認可ルールを取得します。

例:

policy = e.GetPolicy()

GetFilteredPolicy()

GetFilteredPolicy は、ポリシー内のすべての許可ルールを取得し、フィールドフィルタを指定できます。

例:

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

GetNamedPolicy()

GetNamedPolicy は、名前付きポリシー内のすべての許可ルールを取得します。

例:

namedPolicy := e.GetNamedPolicy("p")

GetFilteredNamedPolicy()

GetFilteredNamedPolicy は、指定されたポリシー内のすべての許可ルールを取得し、フィールドフィルタを指定できます。

例:

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

GetGroupingPolicy()

GetGroupingPolicy は、ポリシー内のすべてのロール継承ルールを取得します。

例:

groupingPolicy := e.GetGroupingPolicy()

GetFilteredGroupingPolicy()

GetFilteredGroupingPolicy は、ポリシー内のすべてのロール継承ルールを取得し、フィールドフィルタを指定できます。

例:

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

GetNamedGroupingPolicy()

GetNamedGroupingPolicy は、ポリシー内のすべてのロール継承ルールを取得します。

例:

namedGroupingPolicy := e.GetNamedGroupingPolicy("g")

GetFilteredNamedGroupingPolicy()

GetFilteredNamedGroupingPolicy は、ポリシー内のすべてのロール継承ルールを取得します。

例:

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

HasPolicy()

HasPolicy は、認可ルールが存在するかどうかを決定します。

例:

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

HasNamedPolicy()

HasNamedPolicy は、名前付き認可ルールが存在するかどうかを決定します。

例:

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

AddPolicy()

AddPolicy は、現在のポリシーに認可ルールを追加します。 ルールがすでに存在する場合、関数は false を返し、ルールは追加されません。 それ以外の場合、関数は新しいルールを追加してtrueを返します。

例:

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

AddPolicies()

AddPolicyは現在のポリシーに認可ルールを追加します。 操作は、本質的に原子です。 したがって、認可ルールが現在のポリシーと一致しないルールで構成されている場合。 関数は false を返し、現在のポリシーにポリシールールは追加されません。 すべての認可ルールがポリシールールと一致する場合、関数は true を返し、各ポリシールールが現在のポリシーに追加されます。

例:

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

areRulesAdded := e.AddPolicies(rules)

AddNamedPolicy()

AddNamedPolicy は、現在の名前付きポリシーに認可ルールを追加します。 ルールがすでに存在する場合、関数は false を返し、ルールは追加されません。 それ以外の場合、関数は新しいルールを追加してtrueを返します。

例:

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

AddNamedPolicies()

AddNamedPolicyは現在の名前付きポリシーに認可ルールを追加します。 操作は、本質的に原子です。 したがって、認可ルールが現在のポリシーと一致しないルールで構成されている場合。 関数は false を返し、現在のポリシーにポリシールールは追加されません。 すべての認可ルールがポリシールールと一致する場合、関数は true を返し、各ポリシールールが現在のポリシーに追加されます。

例:

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

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

RemovePolicy()

RemovePolicy は、現在のポリシーから認可ルールを削除します。

例:

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

RemovePolicies()

RemovePolicy は、現在のポリシーから認可ルールを削除します。 操作は、本質的に原子です。 したがって、認可ルールが現在のポリシーと一致しないルールで構成されている場合。 関数は false を返し、現在のポリシーからポリシールールが削除されることはありません。 すべての認可ルールがポリシールールと一致する場合、関数は true を返し、各ポリシールールは現在のポリシーから削除されます。

例:

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

areRulesRemoved := e.RemovePolicies(rules)

RemoveFilteredPolicy()

RemoveFilteredPolicy は、現在のポリシーから認可ルールを削除し、フィールドフィルタを指定できます。 RemovePolicy は、現在のポリシーから認可ルールを削除します。

例:

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

RemoveNamedPolicy()

RemoveNamedPolicy は、現在の名前付きポリシーから認可ルールを削除します。

例:

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

RemoveNamedPolicies()

RemoveNamedPolicyは現在の名前付きポリシーから認可ルールを削除します。 操作は、本質的に原子です。 したがって、認可ルールが現在のポリシーと一致しないルールで構成されている場合。 関数は false を返し、現在のポリシーからポリシールールが削除されることはありません。 すべての認可ルールがポリシールールと一致する場合、関数は true を返し、各ポリシールールは現在のポリシーから削除されます。

例:

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 は、現在の名前付きポリシーから認可ルールを削除し、フィールドフィルタを指定できます。

例:

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

HasGroupingPolicy()

HasGroupingPolicy は、ロール継承ルールが存在するかどうかを決定します。

例:

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

HasNamedGroupingPolicy()

HasNamedGroupingPolicy は、名前付きのロール継承ルールが存在するかどうかを決定します。

例:

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

AddGroupingPolicy()

AddGroupingPolicy は、現在のポリシーにロール継承ルールを追加します。 ルールがすでに存在する場合、関数は false を返し、ルールは追加されません。 それ以外の場合、関数は新しいルールを追加してtrueを返します。

例:

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

AddGroupingPolicies()

AddGroupingPolicyは現在のポリシーにロール継承ルールを追加します。 操作は、本質的に原子です。 したがって、認可ルールが現在のポリシーと一致しないルールで構成されている場合。 関数は false を返し、現在のポリシーにポリシールールは追加されません。 すべての認可がポリシールールと一致する場合、関数は true を返し、各ポリシールールが現在のポリシーに追加されます。

例:

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

areRulesAdded := e.AddGroupingPolicies(rules)

AddNamedGroupingPolicy()

AddNamedGroupingPolicy は、現在のポリシーに名前付きのロール継承ルールを追加します。 ルールがすでに存在する場合、関数は false を返し、ルールは追加されません。 それ以外の場合、関数は新しいルールを追加してtrueを返します。

例:

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

AddNamedGroupingPolicies()

AddNamedGroupingPolicyは現在のポリシーに名前付きのロール継承ルールを追加します。 操作は、本質的に原子です。 したがって、認可ルールが現在のポリシーと一致しないルールで構成されている場合。 関数は false を返し、現在のポリシーにポリシールールは追加されません。 すべての認可ルールがポリシールールと一致する場合、関数は true を返し、各ポリシールールが現在のポリシーに追加されます。

例:

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

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

RemoveGroupingPolicy()

RemoveGroupingPolicy は、現在のポリシーからロール継承ルールを削除します。

例:

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

RemoveGroupingPolicies()

RemoveGroupingPolicyは現在のポリシーからロール継承ルールを削除します。 操作は、本質的に原子です。 したがって、認可ルールが現在のポリシーと一致しないルールで構成されている場合。 関数は false を返し、現在のポリシーからポリシールールが削除されることはありません。 すべての認可ルールがポリシールールと一致する場合、関数は true を返し、各ポリシールールは現在のポリシーから削除されます。

例:

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

areRulesRemoved := e.RemoveGroupingPolicies(rules)

RemoveFilteredGroupingPolicy()

RemoveFilteredGroupingPolicy は、現在のポリシーからロール継承ルールを削除し、フィールドフィルタを指定できます。

例:

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

RemoveNamedGroupingPolicy()

RemoveNamedGroupingPolicy は、現在の名前付きポリシーからロール継承ルールを削除します。

例:

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

RemoveNamedGroupingPolicies()

RemoveNamedGroupingPolicyは現在のポリシーから名前付きロール継承ルールを削除します。 操作は、本質的に原子です。 したがって、認可ルールが現在のポリシーと一致しないルールで構成されている場合。 関数は false を返し、現在のポリシーからポリシールールが削除されることはありません。 すべての認可ルールがポリシールールと一致する場合、関数は true を返し、各ポリシールールは現在のポリシーから削除されます。

例:

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

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

RemoveFilteredNamedGroupingPolicy()

RemoveFilteredNamedGroupingPolicy は、現在の名前付きポリシーからロール継承ルールを削除し、フィールドフィルタを指定できます。

例:

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

UpdatePolicy()

UpdatePolicy 古いポリシーを新しいポリシーに更新します。

例:

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

UpdatePolicies()

UpdatePolicyはすべての古いポリシーを新しいポリシーに更新します。

例:

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

AddFunction()

AddFunction はカスタマイズされた関数を追加します。

例:

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 は、フィルタリングされたポリシーをファイル/データベースから読み込みます。

例:

err := e.LoadFilteredPolicy()

LoadIncrementalFilteredPolicy()

LoadIncrementalFilteredPolicy フィルタリングされたポリシーをファイル/データベースから追加します。

例:

err := e.LoadIncrementalFilteredPolicy()

UpdateGroupingPolicy()

UpdateGroupingPolicy updates oldRule to newRulein g section

例:

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

UpdateNamedGroupingPolicy()

UpdateNamedGroupingPolicy updates oldRule name ptype to newRulein g section

例:

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

SetFieldIndex()

SetFieldIndex suport customization of conventional name and position of sub, obj, domain and priority.

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

For example:

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