4 ms·
Happy to answer questions!
by jeanyang 13y ago
Happy to answer questions!
- mratzloff 13y agoCan you give a high-level overview of the implementation? I read the README, and if I could guess it seems enforcement is determined through wrapped values, lambda functions that determine access based on numeric thresholds, and roles are assigned numbers in that range. Is that close?
- jeanyang 13y agoYes, pretty close. In Jeeves, sensitive values are essentially pairs of values guarded by a label: <k ? vHigh : vLow>, where k is the label, vHigh is the high-confidentiality "view" (corresponding to, for instance, my sensitive GPS location), and vLow is the low-confidentiality "view" (corresponding to, for instance, some coarser-grained version of my location--such as what country I'm in). Rather than roles, we have these flexible policies can be arbitrary lambda functions that take a "viewer" argument. Each policy function is associated with a label and returns "true" if the label can be "high." The implementation evaluates each part of a multi-faceted value in order to return multi-faceted results. These results are "concretized" according to who is looking at them: given the viewer, we can use the policy functions to determine what the viewer should see. The implementation overloads Python operators and does dynamic source transformation (via the @jeeves macro) in order to support computations on these multi-faceted values.
- mratzloff 13y agoThanks for the detailed reply!