SlideShare a Scribd company logo
.lusoftware veriïŹcation & validation
VVS
Model-Driven Run-Time Enforcement of
Complex Role-Based Access Control
Policies
05/09/2018
Ameni Ben Fadhel
joint work with Domenico Bianculli, Lionel Briand
.lusoftware veriïŹcation & validation
VVS
Model-Driven Run-Time Enforcement of
Complex Role-Based Access Control
Policies
05/09/2018
Ameni Ben Fadhel
joint work with Domenico Bianculli, Lionel Briand
3
Access Control
Application
Resources
resources
AC
users
4
Resources
resources
Role-based Access Control
(RBAC)
RBAC
users
Application
5
users
Application
Resources
resources
RBAC
Role-based Access Control
(RBAC)
roles
Role-based Access Control
Policies
6
Who? What?
Which
conditions?
7
A user can acquire either role
participant or admin but not both.
Example of an RBAC Policy
Separation
of duty
policy
Complex RBAC
Policies
‱ A user assigned to role agencyAdmin
can delegate all the permissions
associated with her role to another
user who is assigned to role
assistant.
‱ The delegation lasts for two weeks.
‱ The delegated role can be further
delegated with a maximum
delegation depth of 2.
9
Delegation policy
A user can activate role participant on
September, from the second Monday
to third Friday, from 16:00 to 19:00.
10
Temporal policy
Industrial Partner:
HITEC Luxembourg
11
Development of situational-aware information management
systems for emergency scenarios
SpeciïŹcation of RBAC
Policies
GemRBAC+CTX:
a Comprehensive Model for RBAC
GemRBAC+CTX:
a Comprehensive Model for RBAC
14
‱ An extension of the RBAC96 model, supporting various
types of complex RBAC policies
‱ Formalization of RBAC policies as OCL constraints on the
GemRBAC+CTX model, to operationalize their semantics
TimeExpression Location
delegatedRoles
0..*
user-role
delegation
users
1..*
users
1..*
roles
1..*
user-role
assignment
delegatedDelegation
0..*
0..*
delegator
User
1
0..*
delegate
User
1
0..*
revoking
User
0..1
receivedDelegation
0..*
0..*
1
userLocation
0..*
1
+assignRole(Role)
+accessHistory:
Set(History)
-idUser: String
User
role-
permission
assignment
roles
1..*
permissions
1..*
roleHierarchy
juniors
0..*
seniors
0..*
1..*
1..*
1..*
1
+accessHistory:
Set(History)
-idObject: String
Object
+accessHistory:
Set(History)
-idOperation: String
Operation
logUser
1
0..*
0..*
logPermission
role
activation
role enabling
activeRoles
0..*
enabled
Roles
0..*
0..*
0..*
+performOperation
(Operation,Permission
,Role)
+enableRole(Role)
+disableRole(Role)
+activate(Role)
+deactivate(Role)
+delegateRole(Role)
+accessHistory:
Set(History)
-idSession: String
Session
delegated
Role
1
0..*
delegate
Role
1
+assignPermission()
+logBOCurrentProcessInst
ance():Set(History)
+accessHistory:
Set(History)
+getAllJuniors:
Set(Role)
-idRole: String
-isStrong: Boolean
-isCascading: Boolean
-isDependent: Boolean
Role
0..* roleContextEnabling
0..* roleContextAssignment
0..* PermissionContextEnabling
0..* PermissionContextAssignment
RBACContext
-idPermission:
String
Permission
logLocation
0..*
log
Operation
log
Object
0..*
0..*
delegated
Permissions
1..*
0..*
+assignPermission()
+logBOCurrentProcessInstance():Se
t(History)
+accessHistory: Set(History)
+getAllJuniors: Set(Role)
-idDelegation: String
-isRevoked: Boolean
-isTransfer: DelegationType
-isTotal: Boolean
-startDate: TimePoint
-endDate: TimePoint
-maxDepth: Integer
Delegation
0..*
-grant
-strong
-weakStatic
-weakDynamic
«enumeration»
DelegationType
+getCurrentDate():
TimePoint
-maxPermission:
Integer
-maxActiveRole:
Integer
-maxRole: Integer
RBACUtility
-idLog: String
History
logTime
0..*
TimeExpression Location
delegatedRoles
0..*
user-role
delegation
users
1..*
users
1..*
roles
1..*
user-role
assignment
delegatedDelegation
0..*
0..*
delegator
User
1
0..*
delegate
User
1
0..*
revoking
User
0..1
receivedDelegation
0..*
0..*
1
userLocation
0..*
1
+assignRole(Role)
+accessHistory:
Set(History)
-idUser: String
User
role-
permission
assignment
roles
1..*
permissions
1..*
roleHierarchy
juniors
0..*
seniors
0..*
1..*
1..*
1..*
1
+accessHistory:
Set(History)
-idObject: String
Object
+accessHistory:
Set(History)
-idOperation: String
Operation
logUser
1
0..*
0..*
logPermission
role
activation
role enabling
activeRoles
0..*
enabled
Roles
0..*
0..*
0..*
+performOperation
(Operation,Permission
,Role)
+enableRole(Role)
+disableRole(Role)
+activate(Role)
+deactivate(Role)
+delegateRole(Role)
+accessHistory:
Set(History)
-idSession: String
Session
delegated
Role
1
0..*
delegate
Role
1
+assignPermission()
+logBOCurrentProcessInst
ance():Set(History)
+accessHistory:
Set(History)
+getAllJuniors:
Set(Role)
-idRole: String
-isStrong: Boolean
-isCascading: Boolean
-isDependent: Boolean
Role
0..* roleContextEnabling
0..* roleContextAssignment
0..* PermissionContextEnabling
0..* PermissionContextAssignment
RBACContext
-idPermission:
String
Permission
logLocation
0..*
log
Operation
log
Object
0..*
0..*
delegated
Permissions
1..*
0..*
+assignPermission()
+logBOCurrentProcessInstance():Se
t(History)
+accessHistory: Set(History)
+getAllJuniors: Set(Role)
-idDelegation: String
-isRevoked: Boolean
-isTransfer: DelegationType
-isTotal: Boolean
-startDate: TimePoint
-endDate: TimePoint
-maxDepth: Integer
Delegation
0..*
-grant
-strong
-weakStatic
-weakDynamic
«enumeration»
DelegationType
+getCurrentDate():
TimePoint
-maxPermission:
Integer
-maxActiveRole:
Integer
-maxRole: Integer
RBACUtility
-idLog: String
History
logTime
0..*
User
Role
Permission
Operation Object
Session
Policy SpeciïŹcation Language
GemRBAC+CTX
16
GemRBAC-DSL
17
GemRBAC+CTX
PL: A user can acquire either role participant or admin but not
both.
PL: conflicting-roles-assignment
participant, admin;
18
GemRBAC-DSL Policy
Problem
How to enforce RBAC policies‹
at run time?
19
20
Enforcement: ‹
Making an Access Decision
Application
Resources
resources
AC
users
Enforcement: Updating AC Data
(Usage Control)
21
Enforcement
Mechanism
role 1
role 2


role n
permission 1
permission 2
permission 3
permission 1
users
AC data
22
Enforcement
Mechanism
role 1
role 2


role n
permission 1
permission 2
permission 3
permission 1
users
AC data
Enforcement: Updating AC Data
(Usage Control)
23
Existing Enforcement
Mechanisms
XACML(OASIS, 2005)
Access Control Usage Control
Kirkpatrick et al.
(SACMAT, 2010)
Bhatti et al.
(Trans. Inf. Syst. Secur., 2005)
Ben David et al.
(MDSEC, 2012)Mourad et al.
(PST, 2010)
Kallel et al.
(ESSoS, 2009)
Mariscal et al.
(DBSec, 2005)
Mustafa et al.
(SESS, 2010)
Aspect generation
Sohr et al.
(ACSAC, 2008)
Zhang et al.
(Trans. Inf. Syst. Secur. , 2003)
Model-driven
Martinez et al.
(SLE, 2016)
Hummer et al.
(Softw. Technol, 2013)
Existing Enforcement Mechanisms:‹
Limitations
‱ Lack in expressiveness
‱ each mechanism implements a limited set of policies
captured by its underlying model/language
‱ Support for access control or usage control but not both
24
A model-driven approach for
run-time enforcement of complex
RBAC policies written in GemRBAC-DSL
Our Proposal
Why a Model-driven Approach?
‱ provides high-level abstraction
‱ leverages standardized technology (OMG)
‱ beneïŹts from industry-strength tools
26
Enforcement Process
Policies are enforced in case of:
‱ AC request (to make an access decision)
‱ AC event (to update the AC data)
27
Supported AC Request Types
‱ Access to a resource
‱ Role activation
‱ Administrative operations
‱ Role delegation
‱ Role revocation
28
29
Enforcement Process: AC Request
GemRBAC-
DSL
policies
Model-driven enforcement
Snap
(GemRBAC+CTX instance)
-idUser: String
User -idRole: String
-isStrong: Boolean
-isCascading: Boolean
-isDependent: Boolean
Role
-idPermission:
String
Permission
-idObject: String
Object
-idOperation:
String
Operation
-idDelegation: String
-isRevoked: Boolean
-isTransfer: DelegationType
-isTotal: Boolean
-startDate: Date
-endDate: Date
-maxDepth: Integer
Delegation
-idSession: String
Session
+checkAccess(RBACContext):
Boolean
RBACContext
-time: RBACtime
TemporalContext
-idLog: String
History
-maxPermission: Integer
-maxActiveRole: Integer
-maxRole: Integer
-location:
RBAClocation
SpatialContext
+assignRole(Role)
+accessHistory:
Set(History)
+assignPermission()
+logBOCurrentProcessInstance():
Set(History)
+accessHistory: Set(History)
+getAllJuniors: Set(Role)
+performOperation
(Operation,Permission,Role)
+enableRole(Role)
+disableRole(Role)
+activate(Role)
+deactivate(Role)
+delegateRole(Role)
+accessHistory:
Set(History)
+accessHistory:
Set(History)
+getBoundedPermissions():
Set(Permission)
+getBusinessTaskList():
Set(Operation)
+getCurrentDate(): Date
+revoke()
+getAbsoluteDelegationPath()
+accessHistory:
Set(History)
revoking
User
0..1
delegate
User
1
delegator
User
1
delegated
Permissions
1..*
roleHierarchy
juniors
0..*
seniors
0..*
delegatedDelegation
0..*
delegated
Role
1
RBACUtility
delegatedRoles
0..*
users
1..*
receivedDelegation
0..*
0..*
0..*
users
1..*
roles
1..*
user-role
assignment
user-role
delegation
role-
permission
assignment
roles
1..*
permissions
1..*
0..*
role
activation
role enabling
activeRoles
0..*
enabled
Roles
0..*
0..*
0..*
0..*
1
userContext
*
1
roleContext
*
0..*
0..*
permissionContext
*
log
Operation
logUser
logRole
log
Permission
log
Object
logContext
1..*
1..*
1..*
1
0..*
delegate
Role
1 -grant
-strong
-weakStatic
-weakDynamic
DelegationType
<enumeration>
OCL
constraints
OCL
constraints
OCL
constraints
Snap
Processor
OCL
constraints
OCL
constraints
OCL
constraints
selected constraints based on the type and the
parameters of the AC request
OCL
CheckerTargetSnap
-idUser: String
User -idRole: String
-isStrong: Boolean
-isCascading: Boolean
-isDependent: Boolean
Role
-idPermission:
String
Permission
-idObject: String
Object
-idOperation:
String
Operation
-idDelegation: String
-isRevoked: Boolean
-isTransfer: DelegationType
-isTotal: Boolean
-startDate: Date
-endDate: Date
-maxDepth: Integer
Delegation
-idSession: String
Session
+checkAccess(RBACContext):
Boolean
RBACContext
-time: RBACtime
TemporalContext
-idLog: String
History
-maxPermission: Integer
-maxActiveRole: Integer
-maxRole: Integer
-location:
RBAClocation
SpatialContext
+assignRole(Role)
+accessHistory:
Set(History)
+assignPermission()
+logBOCurrentProcessInstance():
Set(History)
+accessHistory: Set(History)
+getAllJuniors: Set(Role)
+performOperation
(Operation,Permission,Role)
+enableRole(Role)
+disableRole(Role)
+activate(Role)
+deactivate(Role)
+delegateRole(Role)
+accessHistory:
Set(History)
+accessHistory:
Set(History)
+getBoundedPermissions():
Set(Permission)
+getBusinessTaskList():
Set(Operation)
+getCurrentDate(): Date
+revoke()
+getAbsoluteDelegationPath()
+accessHistory:
Set(History)
revoking
User
0..1
delegate
User
1
delegator
User
1
delegated
Permissions
1..*
roleHierarchy
juniors
0..*
seniors
0..*
delegatedDelegation
0..*
delegated
Role
1
RBACUtility
delegatedRoles
0..*
users
1..*
receivedDelegation
0..*
0..*
0..*
users
1..*
roles
1..*
user-role
assignment
user-role
delegation
role-
permission
assignment
roles
1..*
permissions
1..*
0..*
role
activation
role enabling
activeRoles
0..*
enabled
Roles
0..*
0..*
0..*
0..*
1
userContext
*
1
roleContext
*
0..*
0..*
permissionContext
*
log
Operation
logUser
logRole
log
Permission
log
Object
logContext
1..*
1..*
1..*
1
0..*
delegate
Role
1 -grant
-strong
-weakStatic
-weakDynamic
DelegationType
<enumeration>
Policy Selection
30
Prerequi-
site
Role
Hierarchy
Cardinality
(assignment)
Static
SoD
Dynamic
SoD roles
Dynamic
SoD users

 Delegation
Role Activation ✓ ✓ ✓
Access to a
resource
Role
delegation ✓ ✓ ✓ ✓
Role
revocation
✓ ✓
Administrative
operations
✓ ✓ ✓
Policy Selection
31
Prerequi-
site
Role
Hierarchy
Cardinality
(assignment)
Static
SoD
Dynamic
SoD roles
Dynamic
SoD users

 Delegation
Role Activation ✓ ✓ ✓
Access to a
resource
Role
delegation ✓ ✓ ✓ ✓
Role
revocation
✓ ✓
Administrative
operations
✓ ✓ ✓
32
Model-driven enforcement
Enforcement Process: AC Request
Snap
(GemRBAC+CTX instance)
-idUser: String
User -idRole: String
-isStrong: Boolean
-isCascading: Boolean
-isDependent: Boolean
Role
-idPermission:
String
Permission
-idObject: String
Object
-idOperation:
String
Operation
-idDelegation: String
-isRevoked: Boolean
-isTransfer: DelegationType
-isTotal: Boolean
-startDate: Date
-endDate: Date
-maxDepth: Integer
Delegation
-idSession: String
Session
+checkAccess(RBACContext):
Boolean
RBACContext
-time: RBACtime
TemporalContext
-idLog: String
History
-maxPermission: Integer
-maxActiveRole: Integer
-maxRole: Integer
-location:
RBAClocation
SpatialContext
+assignRole(Role)
+accessHistory:
Set(History)
+assignPermission()
+logBOCurrentProcessInstance():
Set(History)
+accessHistory: Set(History)
+getAllJuniors: Set(Role)
+performOperation
(Operation,Permission,Role)
+enableRole(Role)
+disableRole(Role)
+activate(Role)
+deactivate(Role)
+delegateRole(Role)
+accessHistory:
Set(History)
+accessHistory:
Set(History)
+getBoundedPermissions():
Set(Permission)
+getBusinessTaskList():
Set(Operation)
+getCurrentDate(): Date
+revoke()
+getAbsoluteDelegationPath()
+accessHistory:
Set(History)
revoking
User
0..1
delegate
User
1
delegator
User
1
delegated
Permissions
1..*
roleHierarchy
juniors
0..*
seniors
0..*
delegatedDelegation
0..*
delegated
Role
1
RBACUtility
delegatedRoles
0..*
users
1..*
receivedDelegation
0..*
0..*
0..*
users
1..*
roles
1..*
user-role
assignment
user-role
delegation
role-
permission
assignment
roles
1..*
permissions
1..*
0..*
role
activation
role enabling
activeRoles
0..*
enabled
Roles
0..*
0..*
0..*
0..*
1
userContext
*
1
roleContext
*
0..*
0..*
permissionContext
*
log
Operation
logUser
logRole
log
Permission
log
Object
logContext
1..*
1..*
1..*
1
0..*
delegate
Role
1 -grant
-strong
-weakStatic
-weakDynamic
DelegationType
<enumeration>
OCL
constraints
OCL
constraints
OCL
constraints
access
decision
Snap
Processor
OCL
constraints
OCL
constraints
OCL
constraints
selected constraints based on the type and the
parameters of the AC request
OCL
CheckerTargetSnap
-idUser: String
User -idRole: String
-isStrong: Boolean
-isCascading: Boolean
-isDependent: Boolean
Role
-idPermission:
String
Permission
-idObject: String
Object
-idOperation:
String
Operation
-idDelegation: String
-isRevoked: Boolean
-isTransfer: DelegationType
-isTotal: Boolean
-startDate: Date
-endDate: Date
-maxDepth: Integer
Delegation
-idSession: String
Session
+checkAccess(RBACContext):
Boolean
RBACContext
-time: RBACtime
TemporalContext
-idLog: String
History
-maxPermission: Integer
-maxActiveRole: Integer
-maxRole: Integer
-location:
RBAClocation
SpatialContext
+assignRole(Role)
+accessHistory:
Set(History)
+assignPermission()
+logBOCurrentProcessInstance():
Set(History)
+accessHistory: Set(History)
+getAllJuniors: Set(Role)
+performOperation
(Operation,Permission,Role)
+enableRole(Role)
+disableRole(Role)
+activate(Role)
+deactivate(Role)
+delegateRole(Role)
+accessHistory:
Set(History)
+accessHistory:
Set(History)
+getBoundedPermissions():
Set(Permission)
+getBusinessTaskList():
Set(Operation)
+getCurrentDate(): Date
+revoke()
+getAbsoluteDelegationPath()
+accessHistory:
Set(History)
revoking
User
0..1
delegate
User
1
delegator
User
1
delegated
Permissions
1..*
roleHierarchy
juniors
0..*
seniors
0..*
delegatedDelegation
0..*
delegated
Role
1
RBACUtility
delegatedRoles
0..*
users
1..*
receivedDelegation
0..*
0..*
0..*
users
1..*
roles
1..*
user-role
assignment
user-role
delegation
role-
permission
assignment
roles
1..*
permissions
1..*
0..*
role
activation
role enabling
activeRoles
0..*
enabled
Roles
0..*
0..*
0..*
0..*
1
userContext
*
1
roleContext
*
0..*
0..*
permissionContext
*
log
Operation
logUser
logRole
log
Permission
log
Object
logContext
1..*
1..*
1..*
1
0..*
delegate
Role
1 -grant
-strong
-weakStatic
-weakDynamic
DelegationType
<enumeration>
GemRBAC-
DSL
policies
33
Building TargetSnap
AC request = {u1, s1, r1, p1, op1, o1}
usersessionrolepermissionoperationobject
34
s:RBACUtility
CT:
TimePoint
-second: 40
-minute:40
-hour: 14
-day: 14
-month: 09
-year: 2018
Wedneday:
DayOfWeek
-day: Thursday
Legend
RE: role enabling
RA: role activation
URA: user-role
assignment
URP: role-permission
assignment
u1: User
URA
ses1:
Session
RA
scu1:
RBACContext
p1: Point
o1:Object
op1:Operationp1: Permission
RPA
r1: Role
Building TargetSnap
AC request = {u1, s1, r1, p1, op1, o1}
-day: Thursday
Legend
RE: role enabling
RA: role activation
URA: user-role
assignment
URP: role-permission
assignment
URA
ses1:
Session
RA
scu1:
RBACContext
op1:Operation
RPA
logPermission
logLocation
logTimelogUser
logRole
u1: User
log1:
History
p1: Permission
o1:Object
r1: Role
p1: Point
CT:
TimePoint
-second: 00
-minute:41
-hour: 14
-day: 14
-month: 09
-year: 2018
s:RBACUtility
Wedneday:
DayOfWeek
35
Building TargetSnap
AC request = {u1, s1, r1, p1, op1, o1}
History
User Role Permission
Time
Location
36
Enforcement Process: AC Event
updated
Snap
-idUser: String
User -idRole: String
-isStrong: Boolean
-isCascading: Boolean
-isDependent: Boolean
Role
-idPermission:
String
Permission
-idObject: String
Object
-idOperation:
String
Operation
-idDelegation: String
-isRevoked: Boolean
-isTransfer: DelegationType
-isTotal: Boolean
-startDate: Date
-endDate: Date
-maxDepth: Integer
Delegation
-idSession: String
Session
+checkAccess(RBACContext):
Boolean
RBACContext
-time: RBACtime
TemporalContext
-idLog: String
History
-maxPermission: Integer
-maxActiveRole: Integer
-maxRole: Integer
-location:
RBAClocation
SpatialContext
+assignRole(Role)
+accessHistory:
Set(History)
+assignPermission()
+logBOCurrentProcessInstance():
Set(History)
+accessHistory: Set(History)
+getAllJuniors: Set(Role)
+performOperation
(Operation,Permission,Role)
+enableRole(Role)
+disableRole(Role)
+activate(Role)
+deactivate(Role)
+delegateRole(Role)
+accessHistory:
Set(History)
+accessHistory:
Set(History)
+getBoundedPermissions():
Set(Permission)
+getBusinessTaskList():
Set(Operation)
+getCurrentDate(): Date
+revoke()
+getAbsoluteDelegationPath()
+accessHistory:
Set(History)
revoking
User
0..1
delegate
User
1
delegator
User
1
delegated
Permissions
1..*
roleHierarchy
juniors
0..*
seniors
0..*
delegatedDelegation
0..*
delegated
Role
1
RBACUtility
delegatedRoles
0..*
users
1..*
receivedDelegation
0..*
0..*
0..*
users
1..*
roles
1..*
user-role
assignment
user-role
delegation
role-
permission
assignment
roles
1..*
permissions
1..*
0..*
role
activation
role enabling
activeRoles
0..*
enabled
Roles
0..*
0..*
0..*
0..*
1
userContext
*
1
roleContext
*
0..*
0..*
permissionContext
*
log
Operation
logUser
logRole
log
Permission
log
Object
logContext
1..*
1..*
1..*
1
0..*
delegate
Role
1 -grant
-strong
-weakStatic
-weakDynamic
DelegationType
<enumeration>
Model-driven enforcement
Snap
ProcessorSnap
(GemRBAC+CTX
instance)
-idUser: String
User -idRole: String
-isStrong: Boolean
-isCascading: Boolean
-isDependent: Boolean
Role
-idPermission:
String
Permission
-idObject: String
Object
-idOperation:
String
Operation
-idDelegation: String
-isRevoked: Boolean
-isTransfer: DelegationType
-isTotal: Boolean
-startDate: Date
-endDate: Date
-maxDepth: Integer
Delegation
-idSession: String
Session
+checkAccess(RBACContext):
Boolean
RBACContext
-time: RBACtime
TemporalContext
-idLog: String
History
-maxPermission: Integer
-maxActiveRole: Integer
-maxRole: Integer
-location:
RBAClocation
SpatialContext
+assignRole(Role)
+accessHistory:
Set(History)
+assignPermission()
+logBOCurrentProcessInstance():
Set(History)
+accessHistory: Set(History)
+getAllJuniors: Set(Role)
+performOperation
(Operation,Permission,Role)
+enableRole(Role)
+disableRole(Role)
+activate(Role)
+deactivate(Role)
+delegateRole(Role)
+accessHistory:
Set(History)
+accessHistory:
Set(History)
+getBoundedPermissions():
Set(Permission)
+getBusinessTaskList():
Set(Operation)
+getCurrentDate(): Date
+revoke()
+getAbsoluteDelegationPath()
+accessHistory:
Set(History)
revoking
User
0..1
delegate
User
1
delegator
User
1
delegated
Permissions
1..*
roleHierarchy
juniors
0..*
seniors
0..*
delegatedDelegation
0..*
delegated
Role
1
RBACUtility
delegatedRoles
0..*
users
1..*
receivedDelegation
0..*
0..*
0..*
users
1..*
roles
1..*
user-role
assignment
user-role
delegation
role-
permission
assignment
roles
1..*
permissions
1..*
0..*
role
activation
role enabling
activeRoles
0..*
enabled
Roles
0..*
0..*
0..*
0..*
1
userContext
*
1
roleContext
*
0..*
0..*
permissionContext
*
log
Operation
logUser
logRole
log
Permission
log
Object
logContext
1..*
1..*
1..*
1
0..*
delegate
Role
1 -grant
-strong
-weakStatic
-weakDynamic
DelegationType
<enumeration>
Updated
Snap
-idUser: String
User -idRole: String
-isStrong: Boolean
-isCascading: Boolean
-isDependent: Boolean
Role
-idPermission:
String
Permission
-idObject: String
Object
-idOperation:
String
Operation
-idDelegation: String
-isRevoked: Boolean
-isTransfer: DelegationType
-isTotal: Boolean
-startDate: Date
-endDate: Date
-maxDepth: Integer
Delegation
-idSession: String
Session
+checkAccess(RBACContext):
Boolean
RBACContext
-time: RBACtime
TemporalContext
-idLog: String
History
-maxPermission: Integer
-maxActiveRole: Integer
-maxRole: Integer
-location:
RBAClocation
SpatialContext
+assignRole(Role)
+accessHistory:
Set(History)
+assignPermission()
+logBOCurrentProcessInstance():
Set(History)
+accessHistory: Set(History)
+getAllJuniors: Set(Role)
+performOperation
(Operation,Permission,Role)
+enableRole(Role)
+disableRole(Role)
+activate(Role)
+deactivate(Role)
+delegateRole(Role)
+accessHistory:
Set(History)
+accessHistory:
Set(History)
+getBoundedPermissions():
Set(Permission)
+getBusinessTaskList():
Set(Operation)
+getCurrentDate(): Date
+revoke()
+getAbsoluteDelegationPath()
+accessHistory:
Set(History)
revoking
User
0..1
delegate
User
1
delegator
User
1
delegated
Permissions
1..*
roleHierarchy
juniors
0..*
seniors
0..*
delegatedDelegation
0..*
delegated
Role
1
RBACUtility
delegatedRoles
0..*
users
1..*
receivedDelegation
0..*
0..*
0..*
users
1..*
roles
1..*
user-role
assignment
user-role
delegation
role-
permission
assignment
roles
1..*
permissions
1..*
0..*
role
activation
role enabling
activeRoles
0..*
enabled
Roles
0..*
0..*
0..*
0..*
1
userContext
*
1
roleContext
*
0..*
0..*
permissionContext
*
log
Operation
logUser
logRole
log
Permission
log
Object
logContext
1..*
1..*
1..*
1
0..*
delegate
Role
1 -grant
-strong
-weakStatic
-weakDynamic
DelegationType
<enumeration>
OCL
constraints
OCL
constraints
OCL
constraints
OCL
constraints
OCL
constraints
OCL
constraints
selected constraints based on the type
and the parameters of the AC event
OCL
Checker
GemRBAC-
DSL
policies
Supported AC Event Types
‱ User authentication
‱ User disconnection
‱ User change location
37
MORRO: MOdel-driven fRamework
for Run-time enforcement of
RBAC pOlicies
MORRO Architecture
39
proxy
authorization
server
AC request
access decision
check
request
‱ Inspired by the XACML standard architecture:
‱ policy enforcement point: proxy
‱ policy decision point: authorization server
MORRO Architecture
40
‱ Inspired by the XACML standard architecture:
‱ policy enforcement point: proxy
‱ policy decision point: authorization server
‱ Can be integrated into many Web applications
Evaluation
Industrial Application
42
Mission critical information system for military and
governmental applications
Mobile
Forces
Mobile
Forces
Central
Crisis Centres
MU-02MU-01
CC-01 CC-02
GPS
Camera
Sensors
Mobile	Client
MU-04
Industrial Application
1648 users
396 roles
53 permissions
43
Mission critical information system for military and
governmental applications
EfïŹciency Evaluation
‱ Performance on a real industrial system
‱ Scalability
‱ Communication overhead between the authorization server
and the proxy
44
RQ1: How long does the authorization server in MORRO take to
process AC requests/events, when deployed on a real industrial
system, under various AC conïŹgurations?
45
Performance on an Industrial
System
Subjects for Evaluation
Real system conïŹgurations from industrial partner:
‱ two types of AC requests:
‱ access to a resource
‱ role activation
‱ two types of AC events:
‱ user authentication
‱ user change location
46
47
Evaluation Methodology
Access to a resource
Role activation
User authentication
User change location
48
basic conïŹguration
history-based DSoD
policy
subject-based BoD
policy
conïŹgurations
Evaluation Methodology
Access to a resource
Role activation
User authentication
User change location
49
basic conïŹguration
history-based DSoD
policy
subject-based BoD
policy
Evaluation Methodology
# sessions in the system
# active roles in the current
session of the user who made
the request
# permissions assigned to the
current role of the user who
made the request
parametersconïŹgurations
Access to a resource
Role activation
User authentication
User change location
Access to a Resource
50
AC request = {“Jim”, s1, MISSION_ADMIN, PSSU_ABOUT , read,
user info}
user session role permission operation
object
Access to a Resource
51
AC request = {“Jim”, s1, MISSION_ADMIN, PSSU_ABOUT , read,
user info}
‱ two scenarios:
‱ role MISSION_ADMIN is assigned to user Jim
‱ role MISSION_ADMIN has been delegated to user Jim
RQ1: How long does the authorization server in MORRO take to
process AC requests/events, when deployed on a real industrial
system, under various AC conïŹgurations?
52
Performance on an Industrial
System
The access decision time within the authorization server is less than 64 ms
The execution time for processing a notiïŹcation of an AC event is less than
512 ms
The access decision time within the authorization server and the execution
time in our approach are quite affordable in practice
53
RQ2: how does the authorization server in MORRO scale when
increasing the value of different parameters potentially affecting
performance of an AC conïŹguration?
‱ same AC requests and AC events used to answer RQ1, and
the corresponding scenarios and conïŹgurations
‱ we vary one parameter while keeping all the other constants
Scalability
Evaluation settings:
54
Scalability
The access decision time for an AC request and the execution
time for processing a notiïŹcation of an AC event are:
‱ linear, in the majority of the cases, with respect to the
parameters of the various conïŹgurations;
‱ constant, in the remaining cases.
These results imply that our solution is applicable for large
systems
Overhead of the Communication between
the Authorization Service and the Proxy
55
RQ3: what is the communication overhead between the
authorization server and the proxy in case of an AC request?
Overhead of the Communication between
the Authorization Service and the Proxy
56
proxy
authorization
server
AC request
access decision
check
request
RQ3: what is the communication overhead between the
authorization server and the proxy in case of an AC request?
Overhead of the Communication between
the Authorization Service and the Proxy
57
proxy
authorization
server
AC request
access decision
check
request
RQ3: what is the communication overhead between the
authorization server and the proxy in case of an AC request?
Overhead of the Communication between
the Authorization Service and the Proxy
58
proxy
authorization
server
AC request
access decision
check
request
RQ3: what is the communication overhead between the
authorization server and the proxy in case of an AC request?
Overhead of the Communication between
the Authorization Service and the Proxy
RQ3: what is the communication overhead between the
authorization server and the proxy in case of an AC request?
59
Real system conïŹgurations from our industrial partner:
‱ the communication overhead < 60 ms
‱ the access decision time within the proxy < 107 ms (original
requirement by our industrial partner < 200 ms)
Summing up
Model-Driven Run-Time Enforcement of Complex Role-Based Access Control Policies
.lusoftware veriïŹcation & validation
VVS
Model-Driven Run-Time Enforcement of
Complex Role-Based Access Control
Policies
05/09/2018
Ameni Ben Fadhel
joint work with Domenico Bianculli, Lionel Briand
Delegation Policy
‱ A user assigned to role agencyAdmin
can delegate all the permissions
associated with her role to another
user who is assigned to role
assistant.
‱ The delegation lasts for two weeks.
‱ The delegated role can be further
delegated with a maximum
delegation depth of 2.
role-to-role
delegation
delegation
duration
multi-step
delegation
64
Checking OCL
66
Run-time system
checking
mechanism
Formalization of
RBAC policies
RBAC
conceptual
model
satisïŹed/
violated
67
Run-time system
checking
mechanism
Formalization of
RBAC policies
-idUser: String
User -idRole: String
-isStrong: Boolean
-isCascading: Boolean
-isDependent: Boolean
Role
-idPermission:
String
Permission
-idObject: String
Object
-idOperation:
String
Operation
-idDelegation: String
-isRevoked: Boolean
-isTransfer: DelegationType
-isTotal: Boolean
-startDate: Date
-endDate: Date
-maxDepth: Integer
Delegation
-idSession: String
Session
+checkAccess(RBACContext):
Boolean
RBACContext
-time: RBACtime
TemporalContext
-idLog: String
History
-maxPermission: Integer
-maxActiveRole: Integer
-maxRole: Integer
-location:
RBAClocation
SpatialContext
+assignRole(Role)
+accessHistory:
Set(History)
+assignPermission()
+logBOCurrentProcessInstance():
Set(History)
+accessHistory: Set(History)
+getAllJuniors: Set(Role)
+performOperation
(Operation,Permission,Role)
+enableRole(Role)
+disableRole(Role)
+activate(Role)
+deactivate(Role)
+delegateRole(Role)
+accessHistory:
Set(History)
+accessHistory:
Set(History)
+getBoundedPermissions():
Set(Permission)
+getBusinessTaskList():
Set(Operation)
+getCurrentDate(): Date
+revoke()
+getAbsoluteDelegationPath()
+accessHistory:
Set(History)
revoking
User
0..1
delegate
User
1
delegator
User
1
delegated
Permissions
1..*
roleHierarchy
juniors
0..*
seniors
0..*
delegatedDelegation
0..*
delegated
Role
1
RBACUtility
delegatedRoles
0..*
users
1..*
receivedDelegation
0..*
0..*
0..*
users
1..*
roles
1..*
user-role
assignment
user-role
delegation
role-
permission
assignment
roles
1..*
permissions
1..*
0..*
role
activation
role enabling
activeRoles
0..*
enabled
Roles
0..*
0..*
0..*
0..*
1
userContext
*
1
roleContext
*
0..*
0..*
permissionContext
*
log
Operation
logUser
logRole
log
Permission
log
Object
logContext
1..*
1..*
1..*
1
0..*
delegate
Role
1 -grant
-strong
-weakStatic
-weakDynamic
DelegationType
<enumeration>
GemRBAC+CTX
(model instance)
satisïŹed/
violated
template
instantiation
68
OCL
constraints
template
instantiation
OCL
checker
-idUser: String
User -idRole: String
-isStrong: Boolean
-isCascading: Boolean
-isDependent: Boolean
Role
-idPermission:
String
Permission
-idObject: String
Object
-idOperation:
String
Operation
-idDelegation: String
-isRevoked: Boolean
-isTransfer: DelegationType
-isTotal: Boolean
-startDate: Date
-endDate: Date
-maxDepth: Integer
Delegation
-idSession: String
Session
+checkAccess(RBACContext):
Boolean
RBACContext
-time: RBACtime
TemporalContext
-idLog: String
History
-maxPermission: Integer
-maxActiveRole: Integer
-maxRole: Integer
-location:
RBAClocation
SpatialContext
+assignRole(Role)
+accessHistory:
Set(History)
+assignPermission()
+logBOCurrentProcessInstance():
Set(History)
+accessHistory: Set(History)
+getAllJuniors: Set(Role)
+performOperation
(Operation,Permission,Role)
+enableRole(Role)
+disableRole(Role)
+activate(Role)
+deactivate(Role)
+delegateRole(Role)
+accessHistory:
Set(History)
+accessHistory:
Set(History)
+getBoundedPermissions():
Set(Permission)
+getBusinessTaskList():
Set(Operation)
+getCurrentDate(): Date
+revoke()
+getAbsoluteDelegationPath()
+accessHistory:
Set(History)
revoking
User
0..1
delegate
User
1
delegator
User
1
delegated
Permissions
1..*
roleHierarchy
juniors
0..*
seniors
0..*
delegatedDelegation
0..*
delegated
Role
1
RBACUtility
delegatedRoles
0..*
users
1..*
receivedDelegation
0..*
0..*
0..*
users
1..*
roles
1..*
user-role
assignment
user-role
delegation
role-
permission
assignment
roles
1..*
permissions
1..*
0..*
role
activation
role enabling
activeRoles
0..*
enabled
Roles
0..*
0..*
0..*
0..*
1
userContext
*
1
roleContext
*
0..*
0..*
permissionContext
*
log
Operation
logUser
logRole
log
Permission
log
Object
logContext
1..*
1..*
1..*
1
0..*
delegate
Role
1 -grant
-strong
-weakStatic
-weakDynamic
DelegationType
<enumeration>
GemRBAC+CTX
(model instance)
Run-time system
satisïŹed/
violated
Performance Evaluation
RQ: How long does the authorization server in MORRO take to
process AC requests/events, when deployed on a real industrial
system, under various AC conïŹgurations?
70
Performance on an Industrial
System
The access decision time within the authorization server is
less than 64 ms
71
The access decision time within the authorization server is
less than 64 ms
average networking time=1880 ms (E. Cecchet el al., 2011)
access decision time < 4% of networking time
The access decision time in our approach is quite affordable in
practice
Performance on an Industrial
System
72
RQ: How long does the authorization server in MORRO take to
process AC requests/events, when deployed on a real industrial
system, under various AC conïŹgurations?
The execution time for processing a notiïŹcation of an AC
event is less than 512 ms
Performance on an Industrial
System
73
The execution time for processing a notiïŹcation of an AC
event is less than 512 ms
average think time = 7000 ms (TCP-W, 2001)
execution time << average think time
Performance on an Industrial
System
The execution time in our approach is quite affordable in
practice
Evaluation Settings
Evaluation Settings
‱ For each AC request, we measure the access decision time of
the:
‱ authorization server
‱ proxy
‱ when varying the conïŹguration of the system
75
For each AC event, we measure the execution time of the
authorization server, when varying the conïŹguration of the
system
76
Evaluation Settings
Tool Chain
Tool Chain
78
Design time Deployment time
Language
Editor
Model
Transformation
GemRBAC-DSL
to UML+OCL
OCL
constraints
list of
model
changes
Model
Transformation
UML to UML
-idUser: String
User -idRole: String
-isStrong: Boolean
-isCascading: Boolean
-isDependent: Boolean
Role
-idPermission:
String
Permission
-idObject: String
Object
-idOperation:
String
Operation
-idDelegation: String
-isRevoked: Boolean
-isTransfer: DelegationType
-isTotal: Boolean
-startDate: Date
-endDate: Date
-maxDepth: Integer
Delegation
-idSession: String
Session
+checkAccess(RBACContext):
Boolean
RBACContext
-time: RBACtime
TemporalContext
-idLog: String
History
-maxPermission: Integer
-maxActiveRole: Integer
-maxRole: Integer
-location:
RBAClocation
SpatialContext
+assignRole(Role)
+accessHistory:
Set(History)
+assignPermission()
+logBOCurrentProcessInstance():
Set(History)
+accessHistory: Set(History)
+getAllJuniors: Set(Role)
+performOperation
(Operation,Permission,Role)
+enableRole(Role)
+disableRole(Role)
+activate(Role)
+deactivate(Role)
+delegateRole(Role)
+accessHistory:
Set(History)
+accessHistory:
Set(History)
+getBoundedPermissions():
Set(Permission)
+getBusinessTaskList():
Set(Operation)
+getCurrentDate(): Date
+revoke()
+getAbsoluteDelegationPath()
+accessHistory:
Set(History)
revoking
User
0..1
delegate
User
1
delegator
User
1
delegated
Permissions
1..*
roleHierarchy
juniors
0..*
seniors
0..*
delegatedDelegation
0..*
delegated
Role
1
RBACUtility
delegatedRoles
0..*
users
1..*
receivedDelegation
0..*
0..*
0..*
users
1..*
roles
1..*
user-role
assignment
user-role
delegation
role-
permission
assignment
roles
1..*
permissions
1..*
0..*
role
activation
role enabling
activeRoles
0..*
enabled
Roles
0..*
0..*
0..*
0..*
1
userContext
*
1
roleContext
*
0..*
0..*
permissionContext
*
log
Operation
logUser
logRole
log
Permission
log
Object
logContext
1..*
1..*
1..*
1
0..*
delegate
Role
1 -grant
-strong
-weakStatic
-weakDynamic
DelegationType
<enumeration>
current
instance
-idUser: String
User -idRole: String
-isStrong: Boolean
-isCascading: Boolean
-isDependent: Boolean
Role
-idPermission:
String
Permission
-idObject: String
Object
-idOperation:
String
Operation
-idDelegation: String
-isRevoked: Boolean
-isTransfer: DelegationType
-isTotal: Boolean
-startDate: Date
-endDate: Date
-maxDepth: Integer
Delegation
-idSession: String
Session
+checkAccess(RBACContext):
Boolean
RBACContext
-time: RBACtime
TemporalContext
-idLog: String
History
-maxPermission: Integer
-maxActiveRole: Integer
-maxRole: Integer
-location:
RBAClocation
SpatialContext
+assignRole(Role)
+accessHistory:
Set(History)
+assignPermission()
+logBOCurrentProcessInstance():
Set(History)
+accessHistory: Set(History)
+getAllJuniors: Set(Role)
+performOperation
(Operation,Permission,Role)
+enableRole(Role)
+disableRole(Role)
+activate(Role)
+deactivate(Role)
+delegateRole(Role)
+accessHistory:
Set(History)
+accessHistory:
Set(History)
+getBoundedPermissions():
Set(Permission)
+getBusinessTaskList():
Set(Operation)
+getCurrentDate(): Date
+revoke()
+getAbsoluteDelegationPath()
+accessHistory:
Set(History)
revoking
User
0..1
delegate
User
1
delegator
User
1
delegated
Permissions
1..*
roleHierarchy
juniors
0..*
seniors
0..*
delegatedDelegation
0..*
delegated
Role
1
RBACUtility
delegatedRoles
0..*
users
1..*
receivedDelegation
0..*
0..*
0..*
users
1..*
roles
1..*
user-role
assignment
user-role
delegation
role-
permission
assignment
roles
1..*
permissions
1..*
0..*
role
activation
role enabling
activeRoles
0..*
enabled
Roles
0..*
0..*
0..*
0..*
1
userContext
*
1
roleContext
*
0..*
0..*
permissionContext
*
log
Operation
logUser
logRole
log
Permission
log
Object
logContext
1..*
1..*
1..*
1
0..*
delegate
Role
1 -grant
-strong
-weakStatic
-weakDynamic
DelegationType
<enumeration>
model
instance
Runtime
MORRO
Evaluation Methodology:
AC Event
Evaluation Methodology:
AC Event
80
User authentication
User change
location
81
User authentication
User change
location
conïŹgurations
basic conïŹguration
precedence policy
time-based policy
location-based policy
Evaluation Methodology:
AC Event
82
User authentication
User change
location
conïŹgurations parameters
# roles assigned to the
authenticated user
Evaluation Methodology:
AC Event
basic conïŹguration
precedence policy
time-based policy
location-based policy
User Authentication
AC event = {Jim, s1, locuser}
‱ two scenarios:
‱ Jim’s location is known
‱ Jim’s location is not known
83

More Related Content

PDF
Can we predict the quality of spectrum-based fault localization?
PDF
Testing Machine Learning-enabled Systems: A Personal Perspective
PDF
Keynote SBST 2014 - Search-Based Testing
PDF
Metamorphic Security Testing for Web Systems
PDF
Automated Inference of Access Control Policies for Web Applications
PDF
Research-Based Innovation with Industry: Project Experience and Lessons Learned
PDF
A practical guide for using Statistical Tests to assess Randomized Algorithms...
PDF
Automating System Test Case Classification and Prioritization for Use Case-Dr...
Can we predict the quality of spectrum-based fault localization?
Testing Machine Learning-enabled Systems: A Personal Perspective
Keynote SBST 2014 - Search-Based Testing
Metamorphic Security Testing for Web Systems
Automated Inference of Access Control Policies for Web Applications
Research-Based Innovation with Industry: Project Experience and Lessons Learned
A practical guide for using Statistical Tests to assess Randomized Algorithms...
Automating System Test Case Classification and Prioritization for Use Case-Dr...

What's hot (20)

PDF
Synthetic Data Generation for Statistical Testing
PDF
Supporting Change in Product Lines within the Context of Use Case-driven Deve...
PDF
AI in SE: A 25-year Journey
PDF
Functional Safety in ML-based Cyber-Physical Systems
PDF
Enabling Automated Software Testing with Artificial Intelligence
PPT
Experiments on Design Pattern Discovery
PDF
Mining Assumptions for Software Components using Machine Learning
PDF
Practical Constraint Solving for Generating System Test Data
PDF
An Empirical Comparison of Model Validation Techniques for Defect Prediction ...
PPTX
Odin2018_Minh_ML_Risk_Prediction
PPT
Complexity Measures for Secure Service-Orieted Software Architectures
PDF
Final Exam Questions Fall03
PDF
Towards a Better Understanding of the Impact of Experimental Components on De...
PDF
Automatic Test Suite Generation for Key-Points Detection DNNs using Many-Obje...
PDF
Search-based testing of procedural programs:iterative single-target or multi-...
PDF
Instance Space Analysis for Search Based Software Engineering
PPT
Using Developer Information as a Prediction Factor
PDF
Speeding-up Software Testing With Computational Intelligence
PDF
AI-Driven Software Quality Assurance in the Age of DevOps
PDF
Automated parameter optimization should be included in future ‹defect predict...
Synthetic Data Generation for Statistical Testing
Supporting Change in Product Lines within the Context of Use Case-driven Deve...
AI in SE: A 25-year Journey
Functional Safety in ML-based Cyber-Physical Systems
Enabling Automated Software Testing with Artificial Intelligence
Experiments on Design Pattern Discovery
Mining Assumptions for Software Components using Machine Learning
Practical Constraint Solving for Generating System Test Data
An Empirical Comparison of Model Validation Techniques for Defect Prediction ...
Odin2018_Minh_ML_Risk_Prediction
Complexity Measures for Secure Service-Orieted Software Architectures
Final Exam Questions Fall03
Towards a Better Understanding of the Impact of Experimental Components on De...
Automatic Test Suite Generation for Key-Points Detection DNNs using Many-Obje...
Search-based testing of procedural programs:iterative single-target or multi-...
Instance Space Analysis for Search Based Software Engineering
Using Developer Information as a Prediction Factor
Speeding-up Software Testing With Computational Intelligence
AI-Driven Software Quality Assurance in the Age of DevOps
Automated parameter optimization should be included in future ‹defect predict...
Ad

Similar to Model-Driven Run-Time Enforcement of Complex Role-Based Access Control Policies (20)

DOCX
ROLE BASED ACCESS CONTROL (RBAC) AND ROLE BASED SECURITYOne of.docx
PDF
Role-Based Access Control, Second Edition ( PDFDrive ).pdf
PPT
2004 10 21 Rbac At Mazda Horst Walther
PPTX
The day when role based access control disappears
PDF
rbacDSL - slides from Code Generation 2014
PDF
International Journal of Computer Science and Security Volume (2) Issue (2)
PPTX
OWASP Chicago 2016 - What is Attribute Based Access Control (ABAC)?
PDF
IRJET- A Review On - Controlchain: Access Control using Blockchain
PDF
Model-Driven Adaptive Delegation
PPTX
Authenticate 2024: We know who you are, now
 What can you do?
PDF
Enumerated authorization policy ABAC (EP-ABAC) model
PPTX
Group 5 computer security and terms.pptx
PDF
Enhancement of business it alignment by including responsibility components i...
PDF
Enhancement of business it alignment by including responsibility components i...
PDF
Policy based access control
PPT
Access control mechanism (DAC, MAC and RBAC).ppt
PDF
Opa in the api management world
PPT
Attribute Based Access Control
PDF
G45014345
PPTX
smu_abac_150410.pptx
ROLE BASED ACCESS CONTROL (RBAC) AND ROLE BASED SECURITYOne of.docx
Role-Based Access Control, Second Edition ( PDFDrive ).pdf
2004 10 21 Rbac At Mazda Horst Walther
The day when role based access control disappears
rbacDSL - slides from Code Generation 2014
International Journal of Computer Science and Security Volume (2) Issue (2)
OWASP Chicago 2016 - What is Attribute Based Access Control (ABAC)?
IRJET- A Review On - Controlchain: Access Control using Blockchain
Model-Driven Adaptive Delegation
Authenticate 2024: We know who you are, now
 What can you do?
Enumerated authorization policy ABAC (EP-ABAC) model
Group 5 computer security and terms.pptx
Enhancement of business it alignment by including responsibility components i...
Enhancement of business it alignment by including responsibility components i...
Policy based access control
Access control mechanism (DAC, MAC and RBAC).ppt
Opa in the api management world
Attribute Based Access Control
G45014345
smu_abac_150410.pptx
Ad

More from Lionel Briand (20)

PDF
LTM: Scalable and Black-box Similarity-based Test Suite Minimization based on...
PDF
TEASMA: A Practical Methodology for Test Adequacy Assessment of Deep Neural N...
PDF
Automated Test Case Repair Using Language Models
PDF
Automated Testing and Safety Analysis of Deep Neural Networks
PDF
FlakyFix: Using Large Language Models for Predicting Flaky Test Fix Categorie...
PDF
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
PDF
Precise and Complete Requirements? An Elusive Goal
PDF
Large Language Models for Test Case Evolution and Repair
PDF
Metamorphic Testing for Web System Security
PDF
Simulator-based Explanation and Debugging of Hazard-triggering Events in DNN-...
PDF
Fuzzing for CPS Mutation Testing
PDF
Data-driven Mutation Analysis for Cyber-Physical Systems
PDF
Many-Objective Reinforcement Learning for Online Testing of DNN-Enabled Systems
PDF
ATM: Black-box Test Case Minimization based on Test Code Similarity and Evolu...
PDF
Black-box Safety Analysis and Retraining of DNNs based on Feature Extraction ...
PDF
PRINS: Scalable Model Inference for Component-based System Logs
PDF
Revisiting the Notion of Diversity in Software Testing
PDF
Applications of Search-based Software Testing to Trustworthy Artificial Intel...
PDF
Autonomous Systems: How to Address the Dilemma between Autonomy and Safety
PDF
Mathematicians, Social Scientists, or Engineers? The Split Minds of Software ...
LTM: Scalable and Black-box Similarity-based Test Suite Minimization based on...
TEASMA: A Practical Methodology for Test Adequacy Assessment of Deep Neural N...
Automated Test Case Repair Using Language Models
Automated Testing and Safety Analysis of Deep Neural Networks
FlakyFix: Using Large Language Models for Predicting Flaky Test Fix Categorie...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Precise and Complete Requirements? An Elusive Goal
Large Language Models for Test Case Evolution and Repair
Metamorphic Testing for Web System Security
Simulator-based Explanation and Debugging of Hazard-triggering Events in DNN-...
Fuzzing for CPS Mutation Testing
Data-driven Mutation Analysis for Cyber-Physical Systems
Many-Objective Reinforcement Learning for Online Testing of DNN-Enabled Systems
ATM: Black-box Test Case Minimization based on Test Code Similarity and Evolu...
Black-box Safety Analysis and Retraining of DNNs based on Feature Extraction ...
PRINS: Scalable Model Inference for Component-based System Logs
Revisiting the Notion of Diversity in Software Testing
Applications of Search-based Software Testing to Trustworthy Artificial Intel...
Autonomous Systems: How to Address the Dilemma between Autonomy and Safety
Mathematicians, Social Scientists, or Engineers? The Split Minds of Software ...

Recently uploaded (20)

PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
Digital Strategies for Manufacturing Companies
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
Odoo POS Development Services by CandidRoot Solutions
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
How Creative Agencies Leverage Project Management Software.pdf
PPTX
history of c programming in notes for students .pptx
PDF
AI in Product Development-omnex systems
PDF
System and Network Administraation Chapter 3
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
Nekopoi APK 2025 free lastest update
PDF
top salesforce developer skills in 2025.pdf
Adobe Illustrator 28.6 Crack My Vision of Vector Design
CHAPTER 2 - PM Management and IT Context
Digital Strategies for Manufacturing Companies
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Odoo POS Development Services by CandidRoot Solutions
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Design an Analysis of Algorithms I-SECS-1021-03
How to Choose the Right IT Partner for Your Business in Malaysia
How Creative Agencies Leverage Project Management Software.pdf
history of c programming in notes for students .pptx
AI in Product Development-omnex systems
System and Network Administraation Chapter 3
How to Migrate SBCGlobal Email to Yahoo Easily
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
Nekopoi APK 2025 free lastest update
top salesforce developer skills in 2025.pdf

Model-Driven Run-Time Enforcement of Complex Role-Based Access Control Policies

  • 1. .lusoftware veriïŹcation & validation VVS Model-Driven Run-Time Enforcement of Complex Role-Based Access Control Policies 05/09/2018 Ameni Ben Fadhel joint work with Domenico Bianculli, Lionel Briand
  • 2. .lusoftware veriïŹcation & validation VVS Model-Driven Run-Time Enforcement of Complex Role-Based Access Control Policies 05/09/2018 Ameni Ben Fadhel joint work with Domenico Bianculli, Lionel Briand
  • 7. 7 A user can acquire either role participant or admin but not both. Example of an RBAC Policy Separation of duty policy
  • 9. ‱ A user assigned to role agencyAdmin can delegate all the permissions associated with her role to another user who is assigned to role assistant. ‱ The delegation lasts for two weeks. ‱ The delegated role can be further delegated with a maximum delegation depth of 2. 9 Delegation policy
  • 10. A user can activate role participant on September, from the second Monday to third Friday, from 16:00 to 19:00. 10 Temporal policy
  • 11. Industrial Partner: HITEC Luxembourg 11 Development of situational-aware information management systems for emergency scenarios
  • 14. GemRBAC+CTX: a Comprehensive Model for RBAC 14 ‱ An extension of the RBAC96 model, supporting various types of complex RBAC policies ‱ Formalization of RBAC policies as OCL constraints on the GemRBAC+CTX model, to operationalize their semantics
  • 15. TimeExpression Location delegatedRoles 0..* user-role delegation users 1..* users 1..* roles 1..* user-role assignment delegatedDelegation 0..* 0..* delegator User 1 0..* delegate User 1 0..* revoking User 0..1 receivedDelegation 0..* 0..* 1 userLocation 0..* 1 +assignRole(Role) +accessHistory: Set(History) -idUser: String User role- permission assignment roles 1..* permissions 1..* roleHierarchy juniors 0..* seniors 0..* 1..* 1..* 1..* 1 +accessHistory: Set(History) -idObject: String Object +accessHistory: Set(History) -idOperation: String Operation logUser 1 0..* 0..* logPermission role activation role enabling activeRoles 0..* enabled Roles 0..* 0..* 0..* +performOperation (Operation,Permission ,Role) +enableRole(Role) +disableRole(Role) +activate(Role) +deactivate(Role) +delegateRole(Role) +accessHistory: Set(History) -idSession: String Session delegated Role 1 0..* delegate Role 1 +assignPermission() +logBOCurrentProcessInst ance():Set(History) +accessHistory: Set(History) +getAllJuniors: Set(Role) -idRole: String -isStrong: Boolean -isCascading: Boolean -isDependent: Boolean Role 0..* roleContextEnabling 0..* roleContextAssignment 0..* PermissionContextEnabling 0..* PermissionContextAssignment RBACContext -idPermission: String Permission logLocation 0..* log Operation log Object 0..* 0..* delegated Permissions 1..* 0..* +assignPermission() +logBOCurrentProcessInstance():Se t(History) +accessHistory: Set(History) +getAllJuniors: Set(Role) -idDelegation: String -isRevoked: Boolean -isTransfer: DelegationType -isTotal: Boolean -startDate: TimePoint -endDate: TimePoint -maxDepth: Integer Delegation 0..* -grant -strong -weakStatic -weakDynamic «enumeration» DelegationType +getCurrentDate(): TimePoint -maxPermission: Integer -maxActiveRole: Integer -maxRole: Integer RBACUtility -idLog: String History logTime 0..* TimeExpression Location delegatedRoles 0..* user-role delegation users 1..* users 1..* roles 1..* user-role assignment delegatedDelegation 0..* 0..* delegator User 1 0..* delegate User 1 0..* revoking User 0..1 receivedDelegation 0..* 0..* 1 userLocation 0..* 1 +assignRole(Role) +accessHistory: Set(History) -idUser: String User role- permission assignment roles 1..* permissions 1..* roleHierarchy juniors 0..* seniors 0..* 1..* 1..* 1..* 1 +accessHistory: Set(History) -idObject: String Object +accessHistory: Set(History) -idOperation: String Operation logUser 1 0..* 0..* logPermission role activation role enabling activeRoles 0..* enabled Roles 0..* 0..* 0..* +performOperation (Operation,Permission ,Role) +enableRole(Role) +disableRole(Role) +activate(Role) +deactivate(Role) +delegateRole(Role) +accessHistory: Set(History) -idSession: String Session delegated Role 1 0..* delegate Role 1 +assignPermission() +logBOCurrentProcessInst ance():Set(History) +accessHistory: Set(History) +getAllJuniors: Set(Role) -idRole: String -isStrong: Boolean -isCascading: Boolean -isDependent: Boolean Role 0..* roleContextEnabling 0..* roleContextAssignment 0..* PermissionContextEnabling 0..* PermissionContextAssignment RBACContext -idPermission: String Permission logLocation 0..* log Operation log Object 0..* 0..* delegated Permissions 1..* 0..* +assignPermission() +logBOCurrentProcessInstance():Se t(History) +accessHistory: Set(History) +getAllJuniors: Set(Role) -idDelegation: String -isRevoked: Boolean -isTransfer: DelegationType -isTotal: Boolean -startDate: TimePoint -endDate: TimePoint -maxDepth: Integer Delegation 0..* -grant -strong -weakStatic -weakDynamic «enumeration» DelegationType +getCurrentDate(): TimePoint -maxPermission: Integer -maxActiveRole: Integer -maxRole: Integer RBACUtility -idLog: String History logTime 0..* User Role Permission Operation Object Session
  • 18. PL: A user can acquire either role participant or admin but not both. PL: conflicting-roles-assignment participant, admin; 18 GemRBAC-DSL Policy
  • 19. Problem How to enforce RBAC policies‹ at run time? 19
  • 20. 20 Enforcement: ‹ Making an Access Decision Application Resources resources AC users
  • 21. Enforcement: Updating AC Data (Usage Control) 21 Enforcement Mechanism role 1 role 2 
 role n permission 1 permission 2 permission 3 permission 1 users AC data
  • 22. 22 Enforcement Mechanism role 1 role 2 
 role n permission 1 permission 2 permission 3 permission 1 users AC data Enforcement: Updating AC Data (Usage Control)
  • 23. 23 Existing Enforcement Mechanisms XACML(OASIS, 2005) Access Control Usage Control Kirkpatrick et al. (SACMAT, 2010) Bhatti et al. (Trans. Inf. Syst. Secur., 2005) Ben David et al. (MDSEC, 2012)Mourad et al. (PST, 2010) Kallel et al. (ESSoS, 2009) Mariscal et al. (DBSec, 2005) Mustafa et al. (SESS, 2010) Aspect generation Sohr et al. (ACSAC, 2008) Zhang et al. (Trans. Inf. Syst. Secur. , 2003) Model-driven Martinez et al. (SLE, 2016) Hummer et al. (Softw. Technol, 2013)
  • 24. Existing Enforcement Mechanisms:‹ Limitations ‱ Lack in expressiveness ‱ each mechanism implements a limited set of policies captured by its underlying model/language ‱ Support for access control or usage control but not both 24
  • 25. A model-driven approach for run-time enforcement of complex RBAC policies written in GemRBAC-DSL Our Proposal
  • 26. Why a Model-driven Approach? ‱ provides high-level abstraction ‱ leverages standardized technology (OMG) ‱ beneïŹts from industry-strength tools 26
  • 27. Enforcement Process Policies are enforced in case of: ‱ AC request (to make an access decision) ‱ AC event (to update the AC data) 27
  • 28. Supported AC Request Types ‱ Access to a resource ‱ Role activation ‱ Administrative operations ‱ Role delegation ‱ Role revocation 28
  • 29. 29 Enforcement Process: AC Request GemRBAC- DSL policies Model-driven enforcement Snap (GemRBAC+CTX instance) -idUser: String User -idRole: String -isStrong: Boolean -isCascading: Boolean -isDependent: Boolean Role -idPermission: String Permission -idObject: String Object -idOperation: String Operation -idDelegation: String -isRevoked: Boolean -isTransfer: DelegationType -isTotal: Boolean -startDate: Date -endDate: Date -maxDepth: Integer Delegation -idSession: String Session +checkAccess(RBACContext): Boolean RBACContext -time: RBACtime TemporalContext -idLog: String History -maxPermission: Integer -maxActiveRole: Integer -maxRole: Integer -location: RBAClocation SpatialContext +assignRole(Role) +accessHistory: Set(History) +assignPermission() +logBOCurrentProcessInstance(): Set(History) +accessHistory: Set(History) +getAllJuniors: Set(Role) +performOperation (Operation,Permission,Role) +enableRole(Role) +disableRole(Role) +activate(Role) +deactivate(Role) +delegateRole(Role) +accessHistory: Set(History) +accessHistory: Set(History) +getBoundedPermissions(): Set(Permission) +getBusinessTaskList(): Set(Operation) +getCurrentDate(): Date +revoke() +getAbsoluteDelegationPath() +accessHistory: Set(History) revoking User 0..1 delegate User 1 delegator User 1 delegated Permissions 1..* roleHierarchy juniors 0..* seniors 0..* delegatedDelegation 0..* delegated Role 1 RBACUtility delegatedRoles 0..* users 1..* receivedDelegation 0..* 0..* 0..* users 1..* roles 1..* user-role assignment user-role delegation role- permission assignment roles 1..* permissions 1..* 0..* role activation role enabling activeRoles 0..* enabled Roles 0..* 0..* 0..* 0..* 1 userContext * 1 roleContext * 0..* 0..* permissionContext * log Operation logUser logRole log Permission log Object logContext 1..* 1..* 1..* 1 0..* delegate Role 1 -grant -strong -weakStatic -weakDynamic DelegationType <enumeration> OCL constraints OCL constraints OCL constraints Snap Processor OCL constraints OCL constraints OCL constraints selected constraints based on the type and the parameters of the AC request OCL CheckerTargetSnap -idUser: String User -idRole: String -isStrong: Boolean -isCascading: Boolean -isDependent: Boolean Role -idPermission: String Permission -idObject: String Object -idOperation: String Operation -idDelegation: String -isRevoked: Boolean -isTransfer: DelegationType -isTotal: Boolean -startDate: Date -endDate: Date -maxDepth: Integer Delegation -idSession: String Session +checkAccess(RBACContext): Boolean RBACContext -time: RBACtime TemporalContext -idLog: String History -maxPermission: Integer -maxActiveRole: Integer -maxRole: Integer -location: RBAClocation SpatialContext +assignRole(Role) +accessHistory: Set(History) +assignPermission() +logBOCurrentProcessInstance(): Set(History) +accessHistory: Set(History) +getAllJuniors: Set(Role) +performOperation (Operation,Permission,Role) +enableRole(Role) +disableRole(Role) +activate(Role) +deactivate(Role) +delegateRole(Role) +accessHistory: Set(History) +accessHistory: Set(History) +getBoundedPermissions(): Set(Permission) +getBusinessTaskList(): Set(Operation) +getCurrentDate(): Date +revoke() +getAbsoluteDelegationPath() +accessHistory: Set(History) revoking User 0..1 delegate User 1 delegator User 1 delegated Permissions 1..* roleHierarchy juniors 0..* seniors 0..* delegatedDelegation 0..* delegated Role 1 RBACUtility delegatedRoles 0..* users 1..* receivedDelegation 0..* 0..* 0..* users 1..* roles 1..* user-role assignment user-role delegation role- permission assignment roles 1..* permissions 1..* 0..* role activation role enabling activeRoles 0..* enabled Roles 0..* 0..* 0..* 0..* 1 userContext * 1 roleContext * 0..* 0..* permissionContext * log Operation logUser logRole log Permission log Object logContext 1..* 1..* 1..* 1 0..* delegate Role 1 -grant -strong -weakStatic -weakDynamic DelegationType <enumeration>
  • 30. Policy Selection 30 Prerequi- site Role Hierarchy Cardinality (assignment) Static SoD Dynamic SoD roles Dynamic SoD users 
 Delegation Role Activation ✓ ✓ ✓ Access to a resource Role delegation ✓ ✓ ✓ ✓ Role revocation ✓ ✓ Administrative operations ✓ ✓ ✓
  • 31. Policy Selection 31 Prerequi- site Role Hierarchy Cardinality (assignment) Static SoD Dynamic SoD roles Dynamic SoD users 
 Delegation Role Activation ✓ ✓ ✓ Access to a resource Role delegation ✓ ✓ ✓ ✓ Role revocation ✓ ✓ Administrative operations ✓ ✓ ✓
  • 32. 32 Model-driven enforcement Enforcement Process: AC Request Snap (GemRBAC+CTX instance) -idUser: String User -idRole: String -isStrong: Boolean -isCascading: Boolean -isDependent: Boolean Role -idPermission: String Permission -idObject: String Object -idOperation: String Operation -idDelegation: String -isRevoked: Boolean -isTransfer: DelegationType -isTotal: Boolean -startDate: Date -endDate: Date -maxDepth: Integer Delegation -idSession: String Session +checkAccess(RBACContext): Boolean RBACContext -time: RBACtime TemporalContext -idLog: String History -maxPermission: Integer -maxActiveRole: Integer -maxRole: Integer -location: RBAClocation SpatialContext +assignRole(Role) +accessHistory: Set(History) +assignPermission() +logBOCurrentProcessInstance(): Set(History) +accessHistory: Set(History) +getAllJuniors: Set(Role) +performOperation (Operation,Permission,Role) +enableRole(Role) +disableRole(Role) +activate(Role) +deactivate(Role) +delegateRole(Role) +accessHistory: Set(History) +accessHistory: Set(History) +getBoundedPermissions(): Set(Permission) +getBusinessTaskList(): Set(Operation) +getCurrentDate(): Date +revoke() +getAbsoluteDelegationPath() +accessHistory: Set(History) revoking User 0..1 delegate User 1 delegator User 1 delegated Permissions 1..* roleHierarchy juniors 0..* seniors 0..* delegatedDelegation 0..* delegated Role 1 RBACUtility delegatedRoles 0..* users 1..* receivedDelegation 0..* 0..* 0..* users 1..* roles 1..* user-role assignment user-role delegation role- permission assignment roles 1..* permissions 1..* 0..* role activation role enabling activeRoles 0..* enabled Roles 0..* 0..* 0..* 0..* 1 userContext * 1 roleContext * 0..* 0..* permissionContext * log Operation logUser logRole log Permission log Object logContext 1..* 1..* 1..* 1 0..* delegate Role 1 -grant -strong -weakStatic -weakDynamic DelegationType <enumeration> OCL constraints OCL constraints OCL constraints access decision Snap Processor OCL constraints OCL constraints OCL constraints selected constraints based on the type and the parameters of the AC request OCL CheckerTargetSnap -idUser: String User -idRole: String -isStrong: Boolean -isCascading: Boolean -isDependent: Boolean Role -idPermission: String Permission -idObject: String Object -idOperation: String Operation -idDelegation: String -isRevoked: Boolean -isTransfer: DelegationType -isTotal: Boolean -startDate: Date -endDate: Date -maxDepth: Integer Delegation -idSession: String Session +checkAccess(RBACContext): Boolean RBACContext -time: RBACtime TemporalContext -idLog: String History -maxPermission: Integer -maxActiveRole: Integer -maxRole: Integer -location: RBAClocation SpatialContext +assignRole(Role) +accessHistory: Set(History) +assignPermission() +logBOCurrentProcessInstance(): Set(History) +accessHistory: Set(History) +getAllJuniors: Set(Role) +performOperation (Operation,Permission,Role) +enableRole(Role) +disableRole(Role) +activate(Role) +deactivate(Role) +delegateRole(Role) +accessHistory: Set(History) +accessHistory: Set(History) +getBoundedPermissions(): Set(Permission) +getBusinessTaskList(): Set(Operation) +getCurrentDate(): Date +revoke() +getAbsoluteDelegationPath() +accessHistory: Set(History) revoking User 0..1 delegate User 1 delegator User 1 delegated Permissions 1..* roleHierarchy juniors 0..* seniors 0..* delegatedDelegation 0..* delegated Role 1 RBACUtility delegatedRoles 0..* users 1..* receivedDelegation 0..* 0..* 0..* users 1..* roles 1..* user-role assignment user-role delegation role- permission assignment roles 1..* permissions 1..* 0..* role activation role enabling activeRoles 0..* enabled Roles 0..* 0..* 0..* 0..* 1 userContext * 1 roleContext * 0..* 0..* permissionContext * log Operation logUser logRole log Permission log Object logContext 1..* 1..* 1..* 1 0..* delegate Role 1 -grant -strong -weakStatic -weakDynamic DelegationType <enumeration> GemRBAC- DSL policies
  • 33. 33 Building TargetSnap AC request = {u1, s1, r1, p1, op1, o1} usersessionrolepermissionoperationobject
  • 34. 34 s:RBACUtility CT: TimePoint -second: 40 -minute:40 -hour: 14 -day: 14 -month: 09 -year: 2018 Wedneday: DayOfWeek -day: Thursday Legend RE: role enabling RA: role activation URA: user-role assignment URP: role-permission assignment u1: User URA ses1: Session RA scu1: RBACContext p1: Point o1:Object op1:Operationp1: Permission RPA r1: Role Building TargetSnap AC request = {u1, s1, r1, p1, op1, o1}
  • 35. -day: Thursday Legend RE: role enabling RA: role activation URA: user-role assignment URP: role-permission assignment URA ses1: Session RA scu1: RBACContext op1:Operation RPA logPermission logLocation logTimelogUser logRole u1: User log1: History p1: Permission o1:Object r1: Role p1: Point CT: TimePoint -second: 00 -minute:41 -hour: 14 -day: 14 -month: 09 -year: 2018 s:RBACUtility Wedneday: DayOfWeek 35 Building TargetSnap AC request = {u1, s1, r1, p1, op1, o1} History User Role Permission Time Location
  • 36. 36 Enforcement Process: AC Event updated Snap -idUser: String User -idRole: String -isStrong: Boolean -isCascading: Boolean -isDependent: Boolean Role -idPermission: String Permission -idObject: String Object -idOperation: String Operation -idDelegation: String -isRevoked: Boolean -isTransfer: DelegationType -isTotal: Boolean -startDate: Date -endDate: Date -maxDepth: Integer Delegation -idSession: String Session +checkAccess(RBACContext): Boolean RBACContext -time: RBACtime TemporalContext -idLog: String History -maxPermission: Integer -maxActiveRole: Integer -maxRole: Integer -location: RBAClocation SpatialContext +assignRole(Role) +accessHistory: Set(History) +assignPermission() +logBOCurrentProcessInstance(): Set(History) +accessHistory: Set(History) +getAllJuniors: Set(Role) +performOperation (Operation,Permission,Role) +enableRole(Role) +disableRole(Role) +activate(Role) +deactivate(Role) +delegateRole(Role) +accessHistory: Set(History) +accessHistory: Set(History) +getBoundedPermissions(): Set(Permission) +getBusinessTaskList(): Set(Operation) +getCurrentDate(): Date +revoke() +getAbsoluteDelegationPath() +accessHistory: Set(History) revoking User 0..1 delegate User 1 delegator User 1 delegated Permissions 1..* roleHierarchy juniors 0..* seniors 0..* delegatedDelegation 0..* delegated Role 1 RBACUtility delegatedRoles 0..* users 1..* receivedDelegation 0..* 0..* 0..* users 1..* roles 1..* user-role assignment user-role delegation role- permission assignment roles 1..* permissions 1..* 0..* role activation role enabling activeRoles 0..* enabled Roles 0..* 0..* 0..* 0..* 1 userContext * 1 roleContext * 0..* 0..* permissionContext * log Operation logUser logRole log Permission log Object logContext 1..* 1..* 1..* 1 0..* delegate Role 1 -grant -strong -weakStatic -weakDynamic DelegationType <enumeration> Model-driven enforcement Snap ProcessorSnap (GemRBAC+CTX instance) -idUser: String User -idRole: String -isStrong: Boolean -isCascading: Boolean -isDependent: Boolean Role -idPermission: String Permission -idObject: String Object -idOperation: String Operation -idDelegation: String -isRevoked: Boolean -isTransfer: DelegationType -isTotal: Boolean -startDate: Date -endDate: Date -maxDepth: Integer Delegation -idSession: String Session +checkAccess(RBACContext): Boolean RBACContext -time: RBACtime TemporalContext -idLog: String History -maxPermission: Integer -maxActiveRole: Integer -maxRole: Integer -location: RBAClocation SpatialContext +assignRole(Role) +accessHistory: Set(History) +assignPermission() +logBOCurrentProcessInstance(): Set(History) +accessHistory: Set(History) +getAllJuniors: Set(Role) +performOperation (Operation,Permission,Role) +enableRole(Role) +disableRole(Role) +activate(Role) +deactivate(Role) +delegateRole(Role) +accessHistory: Set(History) +accessHistory: Set(History) +getBoundedPermissions(): Set(Permission) +getBusinessTaskList(): Set(Operation) +getCurrentDate(): Date +revoke() +getAbsoluteDelegationPath() +accessHistory: Set(History) revoking User 0..1 delegate User 1 delegator User 1 delegated Permissions 1..* roleHierarchy juniors 0..* seniors 0..* delegatedDelegation 0..* delegated Role 1 RBACUtility delegatedRoles 0..* users 1..* receivedDelegation 0..* 0..* 0..* users 1..* roles 1..* user-role assignment user-role delegation role- permission assignment roles 1..* permissions 1..* 0..* role activation role enabling activeRoles 0..* enabled Roles 0..* 0..* 0..* 0..* 1 userContext * 1 roleContext * 0..* 0..* permissionContext * log Operation logUser logRole log Permission log Object logContext 1..* 1..* 1..* 1 0..* delegate Role 1 -grant -strong -weakStatic -weakDynamic DelegationType <enumeration> Updated Snap -idUser: String User -idRole: String -isStrong: Boolean -isCascading: Boolean -isDependent: Boolean Role -idPermission: String Permission -idObject: String Object -idOperation: String Operation -idDelegation: String -isRevoked: Boolean -isTransfer: DelegationType -isTotal: Boolean -startDate: Date -endDate: Date -maxDepth: Integer Delegation -idSession: String Session +checkAccess(RBACContext): Boolean RBACContext -time: RBACtime TemporalContext -idLog: String History -maxPermission: Integer -maxActiveRole: Integer -maxRole: Integer -location: RBAClocation SpatialContext +assignRole(Role) +accessHistory: Set(History) +assignPermission() +logBOCurrentProcessInstance(): Set(History) +accessHistory: Set(History) +getAllJuniors: Set(Role) +performOperation (Operation,Permission,Role) +enableRole(Role) +disableRole(Role) +activate(Role) +deactivate(Role) +delegateRole(Role) +accessHistory: Set(History) +accessHistory: Set(History) +getBoundedPermissions(): Set(Permission) +getBusinessTaskList(): Set(Operation) +getCurrentDate(): Date +revoke() +getAbsoluteDelegationPath() +accessHistory: Set(History) revoking User 0..1 delegate User 1 delegator User 1 delegated Permissions 1..* roleHierarchy juniors 0..* seniors 0..* delegatedDelegation 0..* delegated Role 1 RBACUtility delegatedRoles 0..* users 1..* receivedDelegation 0..* 0..* 0..* users 1..* roles 1..* user-role assignment user-role delegation role- permission assignment roles 1..* permissions 1..* 0..* role activation role enabling activeRoles 0..* enabled Roles 0..* 0..* 0..* 0..* 1 userContext * 1 roleContext * 0..* 0..* permissionContext * log Operation logUser logRole log Permission log Object logContext 1..* 1..* 1..* 1 0..* delegate Role 1 -grant -strong -weakStatic -weakDynamic DelegationType <enumeration> OCL constraints OCL constraints OCL constraints OCL constraints OCL constraints OCL constraints selected constraints based on the type and the parameters of the AC event OCL Checker GemRBAC- DSL policies
  • 37. Supported AC Event Types ‱ User authentication ‱ User disconnection ‱ User change location 37
  • 38. MORRO: MOdel-driven fRamework for Run-time enforcement of RBAC pOlicies
  • 39. MORRO Architecture 39 proxy authorization server AC request access decision check request ‱ Inspired by the XACML standard architecture: ‱ policy enforcement point: proxy ‱ policy decision point: authorization server
  • 40. MORRO Architecture 40 ‱ Inspired by the XACML standard architecture: ‱ policy enforcement point: proxy ‱ policy decision point: authorization server ‱ Can be integrated into many Web applications
  • 42. Industrial Application 42 Mission critical information system for military and governmental applications Mobile Forces Mobile Forces Central Crisis Centres MU-02MU-01 CC-01 CC-02 GPS Camera Sensors Mobile Client MU-04
  • 43. Industrial Application 1648 users 396 roles 53 permissions 43 Mission critical information system for military and governmental applications
  • 44. EfïŹciency Evaluation ‱ Performance on a real industrial system ‱ Scalability ‱ Communication overhead between the authorization server and the proxy 44
  • 45. RQ1: How long does the authorization server in MORRO take to process AC requests/events, when deployed on a real industrial system, under various AC conïŹgurations? 45 Performance on an Industrial System
  • 46. Subjects for Evaluation Real system conïŹgurations from industrial partner: ‱ two types of AC requests: ‱ access to a resource ‱ role activation ‱ two types of AC events: ‱ user authentication ‱ user change location 46
  • 47. 47 Evaluation Methodology Access to a resource Role activation User authentication User change location
  • 48. 48 basic conïŹguration history-based DSoD policy subject-based BoD policy conïŹgurations Evaluation Methodology Access to a resource Role activation User authentication User change location
  • 49. 49 basic conïŹguration history-based DSoD policy subject-based BoD policy Evaluation Methodology # sessions in the system # active roles in the current session of the user who made the request # permissions assigned to the current role of the user who made the request parametersconïŹgurations Access to a resource Role activation User authentication User change location
  • 50. Access to a Resource 50 AC request = {“Jim”, s1, MISSION_ADMIN, PSSU_ABOUT , read, user info} user session role permission operation object
  • 51. Access to a Resource 51 AC request = {“Jim”, s1, MISSION_ADMIN, PSSU_ABOUT , read, user info} ‱ two scenarios: ‱ role MISSION_ADMIN is assigned to user Jim ‱ role MISSION_ADMIN has been delegated to user Jim
  • 52. RQ1: How long does the authorization server in MORRO take to process AC requests/events, when deployed on a real industrial system, under various AC conïŹgurations? 52 Performance on an Industrial System The access decision time within the authorization server is less than 64 ms The execution time for processing a notiïŹcation of an AC event is less than 512 ms The access decision time within the authorization server and the execution time in our approach are quite affordable in practice
  • 53. 53 RQ2: how does the authorization server in MORRO scale when increasing the value of different parameters potentially affecting performance of an AC conïŹguration? ‱ same AC requests and AC events used to answer RQ1, and the corresponding scenarios and conïŹgurations ‱ we vary one parameter while keeping all the other constants Scalability Evaluation settings:
  • 54. 54 Scalability The access decision time for an AC request and the execution time for processing a notiïŹcation of an AC event are: ‱ linear, in the majority of the cases, with respect to the parameters of the various conïŹgurations; ‱ constant, in the remaining cases. These results imply that our solution is applicable for large systems
  • 55. Overhead of the Communication between the Authorization Service and the Proxy 55 RQ3: what is the communication overhead between the authorization server and the proxy in case of an AC request?
  • 56. Overhead of the Communication between the Authorization Service and the Proxy 56 proxy authorization server AC request access decision check request RQ3: what is the communication overhead between the authorization server and the proxy in case of an AC request?
  • 57. Overhead of the Communication between the Authorization Service and the Proxy 57 proxy authorization server AC request access decision check request RQ3: what is the communication overhead between the authorization server and the proxy in case of an AC request?
  • 58. Overhead of the Communication between the Authorization Service and the Proxy 58 proxy authorization server AC request access decision check request RQ3: what is the communication overhead between the authorization server and the proxy in case of an AC request?
  • 59. Overhead of the Communication between the Authorization Service and the Proxy RQ3: what is the communication overhead between the authorization server and the proxy in case of an AC request? 59 Real system conïŹgurations from our industrial partner: ‱ the communication overhead < 60 ms ‱ the access decision time within the proxy < 107 ms (original requirement by our industrial partner < 200 ms)
  • 62. .lusoftware veriïŹcation & validation VVS Model-Driven Run-Time Enforcement of Complex Role-Based Access Control Policies 05/09/2018 Ameni Ben Fadhel joint work with Domenico Bianculli, Lionel Briand
  • 64. ‱ A user assigned to role agencyAdmin can delegate all the permissions associated with her role to another user who is assigned to role assistant. ‱ The delegation lasts for two weeks. ‱ The delegated role can be further delegated with a maximum delegation depth of 2. role-to-role delegation delegation duration multi-step delegation 64
  • 66. 66 Run-time system checking mechanism Formalization of RBAC policies RBAC conceptual model satisïŹed/ violated
  • 67. 67 Run-time system checking mechanism Formalization of RBAC policies -idUser: String User -idRole: String -isStrong: Boolean -isCascading: Boolean -isDependent: Boolean Role -idPermission: String Permission -idObject: String Object -idOperation: String Operation -idDelegation: String -isRevoked: Boolean -isTransfer: DelegationType -isTotal: Boolean -startDate: Date -endDate: Date -maxDepth: Integer Delegation -idSession: String Session +checkAccess(RBACContext): Boolean RBACContext -time: RBACtime TemporalContext -idLog: String History -maxPermission: Integer -maxActiveRole: Integer -maxRole: Integer -location: RBAClocation SpatialContext +assignRole(Role) +accessHistory: Set(History) +assignPermission() +logBOCurrentProcessInstance(): Set(History) +accessHistory: Set(History) +getAllJuniors: Set(Role) +performOperation (Operation,Permission,Role) +enableRole(Role) +disableRole(Role) +activate(Role) +deactivate(Role) +delegateRole(Role) +accessHistory: Set(History) +accessHistory: Set(History) +getBoundedPermissions(): Set(Permission) +getBusinessTaskList(): Set(Operation) +getCurrentDate(): Date +revoke() +getAbsoluteDelegationPath() +accessHistory: Set(History) revoking User 0..1 delegate User 1 delegator User 1 delegated Permissions 1..* roleHierarchy juniors 0..* seniors 0..* delegatedDelegation 0..* delegated Role 1 RBACUtility delegatedRoles 0..* users 1..* receivedDelegation 0..* 0..* 0..* users 1..* roles 1..* user-role assignment user-role delegation role- permission assignment roles 1..* permissions 1..* 0..* role activation role enabling activeRoles 0..* enabled Roles 0..* 0..* 0..* 0..* 1 userContext * 1 roleContext * 0..* 0..* permissionContext * log Operation logUser logRole log Permission log Object logContext 1..* 1..* 1..* 1 0..* delegate Role 1 -grant -strong -weakStatic -weakDynamic DelegationType <enumeration> GemRBAC+CTX (model instance) satisïŹed/ violated template instantiation
  • 68. 68 OCL constraints template instantiation OCL checker -idUser: String User -idRole: String -isStrong: Boolean -isCascading: Boolean -isDependent: Boolean Role -idPermission: String Permission -idObject: String Object -idOperation: String Operation -idDelegation: String -isRevoked: Boolean -isTransfer: DelegationType -isTotal: Boolean -startDate: Date -endDate: Date -maxDepth: Integer Delegation -idSession: String Session +checkAccess(RBACContext): Boolean RBACContext -time: RBACtime TemporalContext -idLog: String History -maxPermission: Integer -maxActiveRole: Integer -maxRole: Integer -location: RBAClocation SpatialContext +assignRole(Role) +accessHistory: Set(History) +assignPermission() +logBOCurrentProcessInstance(): Set(History) +accessHistory: Set(History) +getAllJuniors: Set(Role) +performOperation (Operation,Permission,Role) +enableRole(Role) +disableRole(Role) +activate(Role) +deactivate(Role) +delegateRole(Role) +accessHistory: Set(History) +accessHistory: Set(History) +getBoundedPermissions(): Set(Permission) +getBusinessTaskList(): Set(Operation) +getCurrentDate(): Date +revoke() +getAbsoluteDelegationPath() +accessHistory: Set(History) revoking User 0..1 delegate User 1 delegator User 1 delegated Permissions 1..* roleHierarchy juniors 0..* seniors 0..* delegatedDelegation 0..* delegated Role 1 RBACUtility delegatedRoles 0..* users 1..* receivedDelegation 0..* 0..* 0..* users 1..* roles 1..* user-role assignment user-role delegation role- permission assignment roles 1..* permissions 1..* 0..* role activation role enabling activeRoles 0..* enabled Roles 0..* 0..* 0..* 0..* 1 userContext * 1 roleContext * 0..* 0..* permissionContext * log Operation logUser logRole log Permission log Object logContext 1..* 1..* 1..* 1 0..* delegate Role 1 -grant -strong -weakStatic -weakDynamic DelegationType <enumeration> GemRBAC+CTX (model instance) Run-time system satisïŹed/ violated
  • 70. RQ: How long does the authorization server in MORRO take to process AC requests/events, when deployed on a real industrial system, under various AC conïŹgurations? 70 Performance on an Industrial System The access decision time within the authorization server is less than 64 ms
  • 71. 71 The access decision time within the authorization server is less than 64 ms average networking time=1880 ms (E. Cecchet el al., 2011) access decision time < 4% of networking time The access decision time in our approach is quite affordable in practice Performance on an Industrial System
  • 72. 72 RQ: How long does the authorization server in MORRO take to process AC requests/events, when deployed on a real industrial system, under various AC conïŹgurations? The execution time for processing a notiïŹcation of an AC event is less than 512 ms Performance on an Industrial System
  • 73. 73 The execution time for processing a notiïŹcation of an AC event is less than 512 ms average think time = 7000 ms (TCP-W, 2001) execution time << average think time Performance on an Industrial System The execution time in our approach is quite affordable in practice
  • 75. Evaluation Settings ‱ For each AC request, we measure the access decision time of the: ‱ authorization server ‱ proxy ‱ when varying the conïŹguration of the system 75
  • 76. For each AC event, we measure the execution time of the authorization server, when varying the conïŹguration of the system 76 Evaluation Settings
  • 78. Tool Chain 78 Design time Deployment time Language Editor Model Transformation GemRBAC-DSL to UML+OCL OCL constraints list of model changes Model Transformation UML to UML -idUser: String User -idRole: String -isStrong: Boolean -isCascading: Boolean -isDependent: Boolean Role -idPermission: String Permission -idObject: String Object -idOperation: String Operation -idDelegation: String -isRevoked: Boolean -isTransfer: DelegationType -isTotal: Boolean -startDate: Date -endDate: Date -maxDepth: Integer Delegation -idSession: String Session +checkAccess(RBACContext): Boolean RBACContext -time: RBACtime TemporalContext -idLog: String History -maxPermission: Integer -maxActiveRole: Integer -maxRole: Integer -location: RBAClocation SpatialContext +assignRole(Role) +accessHistory: Set(History) +assignPermission() +logBOCurrentProcessInstance(): Set(History) +accessHistory: Set(History) +getAllJuniors: Set(Role) +performOperation (Operation,Permission,Role) +enableRole(Role) +disableRole(Role) +activate(Role) +deactivate(Role) +delegateRole(Role) +accessHistory: Set(History) +accessHistory: Set(History) +getBoundedPermissions(): Set(Permission) +getBusinessTaskList(): Set(Operation) +getCurrentDate(): Date +revoke() +getAbsoluteDelegationPath() +accessHistory: Set(History) revoking User 0..1 delegate User 1 delegator User 1 delegated Permissions 1..* roleHierarchy juniors 0..* seniors 0..* delegatedDelegation 0..* delegated Role 1 RBACUtility delegatedRoles 0..* users 1..* receivedDelegation 0..* 0..* 0..* users 1..* roles 1..* user-role assignment user-role delegation role- permission assignment roles 1..* permissions 1..* 0..* role activation role enabling activeRoles 0..* enabled Roles 0..* 0..* 0..* 0..* 1 userContext * 1 roleContext * 0..* 0..* permissionContext * log Operation logUser logRole log Permission log Object logContext 1..* 1..* 1..* 1 0..* delegate Role 1 -grant -strong -weakStatic -weakDynamic DelegationType <enumeration> current instance -idUser: String User -idRole: String -isStrong: Boolean -isCascading: Boolean -isDependent: Boolean Role -idPermission: String Permission -idObject: String Object -idOperation: String Operation -idDelegation: String -isRevoked: Boolean -isTransfer: DelegationType -isTotal: Boolean -startDate: Date -endDate: Date -maxDepth: Integer Delegation -idSession: String Session +checkAccess(RBACContext): Boolean RBACContext -time: RBACtime TemporalContext -idLog: String History -maxPermission: Integer -maxActiveRole: Integer -maxRole: Integer -location: RBAClocation SpatialContext +assignRole(Role) +accessHistory: Set(History) +assignPermission() +logBOCurrentProcessInstance(): Set(History) +accessHistory: Set(History) +getAllJuniors: Set(Role) +performOperation (Operation,Permission,Role) +enableRole(Role) +disableRole(Role) +activate(Role) +deactivate(Role) +delegateRole(Role) +accessHistory: Set(History) +accessHistory: Set(History) +getBoundedPermissions(): Set(Permission) +getBusinessTaskList(): Set(Operation) +getCurrentDate(): Date +revoke() +getAbsoluteDelegationPath() +accessHistory: Set(History) revoking User 0..1 delegate User 1 delegator User 1 delegated Permissions 1..* roleHierarchy juniors 0..* seniors 0..* delegatedDelegation 0..* delegated Role 1 RBACUtility delegatedRoles 0..* users 1..* receivedDelegation 0..* 0..* 0..* users 1..* roles 1..* user-role assignment user-role delegation role- permission assignment roles 1..* permissions 1..* 0..* role activation role enabling activeRoles 0..* enabled Roles 0..* 0..* 0..* 0..* 1 userContext * 1 roleContext * 0..* 0..* permissionContext * log Operation logUser logRole log Permission log Object logContext 1..* 1..* 1..* 1 0..* delegate Role 1 -grant -strong -weakStatic -weakDynamic DelegationType <enumeration> model instance Runtime MORRO
  • 80. Evaluation Methodology: AC Event 80 User authentication User change location
  • 81. 81 User authentication User change location conïŹgurations basic conïŹguration precedence policy time-based policy location-based policy Evaluation Methodology: AC Event
  • 82. 82 User authentication User change location conïŹgurations parameters # roles assigned to the authenticated user Evaluation Methodology: AC Event basic conïŹguration precedence policy time-based policy location-based policy
  • 83. User Authentication AC event = {Jim, s1, locuser} ‱ two scenarios: ‱ Jim’s location is known ‱ Jim’s location is not known 83