Vai al contenuto principale

RBAC API

The RBAC API is a convenience layer for role-based operations (roles for user, users for role, permissions, etc.). It is a subset of the Management API aimed at RBAC use cases.

Riferimento​

The global variable e represents an Enforcer instance.

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

GetRolesForUser()​

Retrieves all roles assigned to a user.

Ad esempio:

res := e.GetRolesForUser("alice")

GetUsersForRole()​

Retrieves all users assigned to a role.

Ad esempio:

res := e.GetUsersForRole("data1_admin")

HasRoleForUser()​

Checks whether a user has a specific role.

Ad esempio:

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

AddRoleForUser()​

Assigns a role to a user. Restituisce false se l'utente ha già il ruolo (aka non modificato).

Ad esempio:

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

AddRolesForUser()​

Assigns multiple roles to a user. Restituisce falso se l'utente ha già uno di questi ruoli (ovvero non è influenzato).

Ad esempio:

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

DeleteRoleForUser()​

Removes a role from a user. Restituisce falso se l'utente non ha il ruolo (ovvero non è influenzato).

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

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

DeleteRolesForUser()​

Removes all roles from a user. Restituisce falso se l'utente non ha alcun ruolo (ovvero non è influenzato).

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

e.DeleteRolesForUser("alice")

DeleteUser()​

Removes a user from the system. Restituisce falso se l'utente non esiste (ovvero non è stato influenzato).

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

e.DeleteUser("alice")

DeleteRole()​

Removes a role from the system.

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

e.DeleteRole("data2_admin")

DeletePermission()​

Removes a permission from the system. Restituisce falso se il permesso non esiste (ovvero non è stato influenzato).

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

e.DeletePermission("read")

AddPermissionForUser()​

Grants a permission to a user or role. Restituisce false se l'utente o il ruolo ha già il permesso (ovvero non è stato influenzato).

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

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

AddPermissionsForUser()​

Grants multiple permissions to a user or role. Restituisce false se l'utente o il ruolo ha già uno dei permessi (ovvero non è stato influenzato).

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

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

DeletePermissionForUser()​

Revokes a permission from a user or role. Restituisce false se l'utente o il ruolo non ha il permesso (ovvero non è stato influenzato).

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

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

DeletePermissionsForUser()​

Revokes all permissions from a user or role. Restituisce false se l'utente o il ruolo non ha alcun permesso (ovvero non è stato influenzato).

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

e.DeletePermissionsForUser("bob")

GetPermissionsForUser()​

Retrieves all permissions for a user or role.

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

e.GetPermissionsForUser("bob")

GetNamedPermissionsForUser()​

GetNamedPermissionsForUser gets permissions for a user or role by named policy.

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

p, alice, data1, read
p, bob, data2, write
p2, admin, create
g, alice, admin

GetNamedPermissionsForUser("p", "alice") will return [["alice", "data1", "read"]]. GetNamedPermissionsForUser("p2", "alice") will return [["admin", "create"]].

permissions, err := e.GetNamedPermissionsForUser("p", "alice")

HasPermissionForUser()​

HasPermissionForUser determina se un utente ha un permesso.

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

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

GetImplicitRolesForUser()​

OttieniRuoliImplicitiPerUtente ottiene i ruoli impliciti che un utente ha. Rispetto a OttieniRuoliPerUtente(), questa funzione recupera ruoli indiretti oltre a quelli diretti.

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

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

OttieniRuoliPerUtente("alice") può ottenere solo: ["role:admin"].
Ma OttieniRuoliImplicitiPerUtente("alice") otterrà: ["role:admin", "role:user"].

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

e.GetImplicitRolesForUser("alice")

GetNamedImplicitRolesForUser()​

GetNamedImplicitRolesForUser gets implicit roles that a user has by named policy.

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

g, alice, admin
g, admin, super_admin
g2, alice, user
g2, user, guest

GetNamedImplicitRolesForUser("g", "alice") will return ["admin", "super_admin"]. GetNamedImplicitRolesForUser("g2", "alice") will return ["user", "guest"].

roles, err := e.GetNamedImplicitRolesForUser("g", "alice")

GetImplicitUsersForRole()​

GetImplicitUsersForRole ottiene tutti gli utenti che ereditano il ruolo. Rispetto a GetUsersForRole(), questa funzione recupera gli utenti indiretti.

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

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

GetUsersForRole("role:user") può ottenere solo: ["role:admin"].
Ma GetImplicitUsersForRole("role:user") otterrà: ["role:admin", "alice"].

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

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

GetImplicitPermissionsForUser()​

GetImplicitPermissionsForUser ottiene le autorizzazioni implicite per un utente o un ruolo.
Rispetto a GetPermissionsForUser(), questa funzione recupera le autorizzazioni per i ruoli ereditati.

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

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

GetPermissionsForUser("alice") può ottenere solo: [["alice", "data2", "read"]].
Ma GetImplicitPermissionsForUser("alice") otterrà: [["admin", "data1", "read"], ["alice", "data2", "read"]].

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

e.GetImplicitPermissionsForUser("alice")

GetNamedImplicitPermissionsForUser()​

GetNamedImplicitPermissionsForUser ottiene le autorizzazioni implicite per un utente o un ruolo tramite una politica nominata. Rispetto a GetImplicitPermissionsForUser(), questa funzione ti permette di specificare il nome della politica.

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

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

GetImplicitPermissionsForUser("alice") ottiene solo: [["admin", "data1", "read"]], la cui politica è predefinita come "p"

Ma puoi specificare la politica come "p2" per ottenere: [["admin", "create"]] tramite GetNamedImplicitPermissionsForUser("p2","alice")

Per esempio:

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

GetDomainsForUser()​

GetDomainsForUser ottiene tutti i domini che un utente possiede.

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

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") potrebbe ottenere ["domain1", "domain2"]

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

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

GetImplicitResourcesForUser()​

Returns all policies that apply to a user, including those inherited through roles.

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

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

g, alice, data2_admin

GetImplicitResourcesForUser("alice") restituirà

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

GetImplicitUsersForPermission()​

Retrieves all users with a specific permission, including those with implicit permissions through roles.

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

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

GetImplicitUsersForPermission("data1", "read") restituirà: ["alice", "bob"].

Nota: verranno restituiti solo gli utenti, i ruoli (2° argomento in "g") saranno esclusi.

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

GetImplicitObjectPatternsForUser()​

Returns all object patterns (including wildcards) that a user can access for a given domain and action.

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

p, admin, chronicle/123, location/*, read
p, user, chronicle/456, location/789, read
g, alice, admin
g, bob, user

GetImplicitObjectPatternsForUser("alice", "chronicle/123", "read") will return ["location/*"]. GetImplicitObjectPatternsForUser("bob", "chronicle/456", "read") will return ["location/789"].

patterns, err := e.GetImplicitObjectPatternsForUser("alice", "chronicle/123", "read")

GetAllowedObjectConditions()​

Returns object conditions that a user can access.

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

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.") restituirà ["price < 25", "category_id = 2"], nil

Nota:

  1. prefisso: Puoi personalizzare il prefisso delle condizioni dell'oggetto, e "r.obj." è comunemente utilizzato come prefisso. Dopo aver rimosso il prefisso, la parte rimanente è la condizione dell'oggetto. Se esiste una politica obj che non soddisfa il requisito del prefisso, verrà restituito un errors.ERR_OBJ_CONDITION.

  2. Se l'array 'objectConditions' è vuoto, restituisci errors.ERR_EMPTY_CONDITION.

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

GetImplicitUsersForResource()​

Returns all users with access to a resource, including those with implicit permissions through roles.

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

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

Ad esempio:

GetImplicitUsersForResource("data2") restituirà [["bob", "data2", "write"], ["alice", "data2", "read"] ["alice", "data2", "write"]], nil.

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

Saranno restituiti solo gli utenti, i ruoli (2° argomento in "g") saranno esclusi.

GetNamedImplicitUsersForResource()​

Returns all users with access to a resource through a named policy, including those with implicit permissions through roles. This function handles resource role relationships through named policies (e.g., g2, g3, etc.).

GetImplicitUsersForResource restituisce utenti impliciti basati sul risorsa.

p, admin_group, admin_data, *
g, admin, admin_group
g2, app, admin_data

GetNamedImplicitUsersForResource("g2", "app") will return users who have access to admin_data through g2 relationship.

ImplicitUsers, err := e.GetNamedImplicitUsersForResource("g2", "app")

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