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

RBAC API

RBAC のよりフレンドリーな API です。 この API は管理 API のサブセットです。 RBAC ユーザーはこの API を使用してコードを簡素化することができます。

参照

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

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

GetRolesForUser()

GetRolesForUserは、ユーザーが持つロールを取得します。

例:

res := e.GetRolesForUser("alice")

GetUsersForRole()

GetUsersForRoleは、ロールを持つユーザーを取得します。

例:

res := e.GetUsersForRole("data1_admin")

HasRoleForUser()

HasRoleForUserは、ユーザーがロールを持っているかどうかを決定します。

例:

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

AddRoleForUser()

AddRoleForUser はユーザーにロールを追加します。 ユーザーがすでに役割を持っている場合は、false を返します。

例:

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

AddRolesForUser()

AddRolesForUser はユーザーに複数のロールを追加します。 ユーザーがすでにこれらの役割を持っている場合は、false を返します(影響されていない場合)。

例:

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

DeleteRoleForUser()

DeleteRoleForUser はユーザーのロールを削除します。 役割を持たない場合は、false を返します。

例:

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

DeleteRolesForUser()

DeleteRolesForUser はユーザーのすべてのロールを削除します。 ユーザーにロールがない場合は false を返します(影響を受けない場合)。

例:

e.DeleteRolesForUser("alice")

DeleteUser()

DeleteUser deletees a user. ユーザーが存在しない場合は、false を返します(別名、影響されません)。

例:

e.DeleteUser("alice")

DeleteRole()

DeleteRole はロールを削除します。

例:

e.DeleteRole("data2_admin")

DeletePermission()

DeletePermission deletees a permission. パーミッションが存在しない場合は false を返します(影響されていないことがあります)。

例:

e.DeletePermission("read")

AddPermissionForUser()

AddPermissionForUser はユーザまたはロールに対する権限を追加します。 ユーザーまたはロールが既にパーミッションを持っている場合、false を返します(影響を受けていない場合)。

例:

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

AddPermissionsForUser()

AddPermissionsForUser はユーザーまたはロールに対して複数の権限を追加します。 ユーザーまたはロールがすでに権限のいずれかを持っている場合は、false を返します(影響されていないことがあります)。

例:

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

DeletePermissionForUser()

DeletePermissionForUser はユーザーまたはロールの権限を削除します。 ユーザーまたはロールがパーミッションを持っていない場合は、false を返します(影響を受けていない場合)。

例:

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

DeletePermissionsForUser()

DeletePermissionsForUser はユーザーまたはロールの権限を削除します。 ユーザーまたはロールに権限がない場合は、false を返します。

例:

e.DeletePermissionsForUser("bob")

GetPermissionsForUser()

GetPermissionsForUser はユーザまたはロールの権限を取得します。

例:

e.GetPermissionsForUser("bob")

HasPermissionForUser()

HasPermissionForUser は、ユーザに権限があるかどうかを決定します。

例:

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

GetImplicitRolesForUser()

GetImplicitRolesForUser はユーザーが持つ暗黙的なロールを取得します。 GetRolesForUser() と比較して、この関数は直接ロール以外の間接ロールを取得します。

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

GetRolesForUser("alice") は以下のようにしか得られません: ["role:admin"].
しかしGetImplicitRolesForUser("alice") は以下のようになります: ["role:admin", "role:user"]

例:

e.GetImplicitRolesForUser("alice")

GetImplicitUsersForRole()

GetImplicitUsersForRoleはロールを継承するすべてのユーザーを取得します。 GetUsersForRole() と比較して、この関数は間接ユーザーを取得します。

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

GetUsersForRole("role:user")しか取得できません: ["role:admin"].
しかしGetImplicitUseForRole("role:user")は以下のようになります: ["role:admin", "alice"]

例:

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

GetImplicitPermissionsForUser()

GetImplicitPermissionsForUser はユーザーまたはロールの暗黙の権限を取得します。
GetPermissionsForUser() と比較して、継承されたロールの権限を取得します。

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

GetPermissionsForUser("alice") 取得できるのは以下の通りです: [["alice", "data2", "read"].
しかしGetImplicitPermissionsForUser("alice") は次のようになります: [["admin", "data1", "read"], ["alice", "data2", "read"]

例:

e.GetImplicitPermissionsForUser("alice")

GetNamedImplicitPermissionsForUser()

GetNamedImplicitPermissionsForUser という名前のポリシーにより、ユーザーやロールに対する暗黙的な権限を取得します GetImplicitPermissionsForUser() と比較して、この関数はポリシー名を指定することができます。

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

GetImplicitPermissionsForUser("alice")のみが取得されます: [["admin", "data1", "read"], そのポリシーはデフォルト "p"

しかし、取得するポリシーを "p2" として指定することができます: [["admin", "create"]] by GetNamedImplicitPermissionsForUser("p2","alice")

例:

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

GetDomainsForUser()

GetDomainsForUserは、ユーザが持っているすべてのドメインを取得します。

For example: 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") could get ["domain1", "domain2"]

例:

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

GetImplicitResourcesForUser()

GetImplicitResourcesForUser はユーザーに対して真であるべきすべてのポリシーを返します。

例:

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

g, alice, data2_admin

GetImplicitResourcesForUser("alice") は [[alice data1 read] [alice data2 read] [alice data2 write]] を返します

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