When a user attempts to perform an action on a Crystal Enterprise object, the APS determines the user's rights to that object. If the user possesses sufficient rights, the APS permits the user to perform the requested action.
Although the calculations performed by the APS can become quite complex, there are several ways to keep your object security model clear, consistent, and easy to maintain. For complete details on setting up a system that makes sense for your Crystal Enterprise system, see Customizing a 'top
To calculate the user's effective rights, the APS follows a complex algorithm. This sequence of steps, and its various possible outcomes, is provided for administrators and/or system architects who prefer to know exactly how the APS calculates the rights a user has to any object. The algorithm is described here and then illustrated in a different way using pseudocode:
Tip: If an individual user's account has not been assigned any rights to the object, then group inheritance is enabled by default. As the result, you can make all your object rights settings at the group level to save administrative effort.
As the result, when both types of inheritance are enabled, the APS grants the user only those rights that are explicitly granted in one or more locations and never explicitly denied.
When you disable both types of inheritance for a user, you reduce this algorithm to two steps (1 and 5). Thus, the APS grants the user only those rights that he or she has been explicitly granted. This provides you with the least complicated way of ensuring that a user has only those rights that you have explicitly granted to him or her for a particular object.
When you disable folder inheritance for a user, you reduce this algorithm to three steps (1, 3, and 5). When you disable group inheritance for a user, you reduce this algorithm to three different steps (1, 2, and 5). In both cases, the APS grants the user only those rights that are explicitly granted in one or more locations and never explicitly denied.
This pseudocode is provided as another way to illustrate and describe the algorithm that the APS follows in order to determine whether a user is authorized to perform an action on a particular object:
IF { (User granted right to object = True) OR [ (Inherit Parent Folder Rights = True) AND (User granted right to parent folder = True) ] OR [ (Inherit Group Rights = True) AND (Group granted right to object = True) ] OR [ (Inherit Group Rights = True) AND (Group granted right to parent folder = True) ] } AND { (User denied right to object = False) AND [ (Inherit Parent Folder Rights = False) OR ((Inherit Parent Folder Rights = True) AND (User denied right to parent folder = False)) ] AND [ (Inherit Group Rights = False) OR ((Inherit Group Rights = True) AND (Group denied right to object = False)) ] AND [ (Inherit Group Rights = False) OR ((Inherit Group Rights = True) AND (Group denied right to parent folder = False)) ] } THEN { User action authorized = True } ELSE { User action authorized = False }
Crystal Decisions, Inc. http://www.crystaldecisions.com Support services: http://support.crystaldecisions.com |