eq(x,y),le(x,y),lt(x,y)| x = y, x ≤ y, x < yge(x,y),gt(x,y)| x ≥ y, x > yand(x,y)| x & y (logical and)sessionKeyIs(Kuser): verifies that the session user has access to the datapurKeyIs(Kuser): gets the purpose of use for this usermonitor(k): log all the operations associated with the key kobjExpT(k): get the KV expiry timeobjPur(k): get the KV purpose(s) of useobjOrig(k): get the origin of the KV pairobjShare(k): get the sharing information of the KV pairobjObjections(k): get the objections imposed on a KV pair
Optional for processing activity (can be encapsulated to purposes & objections):
locIs(loc): predicate to assure the location of the compute nodeengineVersion(v): predicate to assure the engine version
read :− sessionKeyIs(Kauth_user) & eq(purKeyIs(Kauth_user) and objPur(k), purKeyIs(Kauth_user))
read :− sessionKeyIs(Kauth_user) & le(time, objExpT(k))
read :- objExpT(k) & objPur(k) & objOrig(k) & objShare(k)
read :- sessionKeyIs(Kauth_user) update :- sessionKeyIs(Kauth_user)
delete :- sessionKeyIs(Kauth_user)
read :− sessionKeyIs(Kauth_user) & eq(purKeyIs(Kauth_user) and objObjections(k),0)
Can be deducted through #5 and #21 predicates.
read :- sessionKeyIs(Kauth_user) update :- sessionKeyIs(Kauth_user) delete :- sessionKeyIs(Kauth_user)
read :- sessionKeyIs(Kauth_user) update :- sessionKeyIs(Kauth_user) delete :- sessionKeyIs(Kauth_user)
read :- sessionKeyIs(Kauth_user) & monitor(k) update :- sessionKeyIs(Kauth_user) & monitor(k) delete :- sessionKeyIs(Kauth_user) & monitor(k)
- Encryption of the data, metadata and logs
- Secure execution environment (e.g., SEV)
read :- sessionKeyIs(Kauth_user) & monitor(k)
policy_config.py: takes as an argument a policy configuration (e.g. the owners policy config),
parses the json file and returns a list of arguments to be provided to the controller to setup the user information. The output format is
user_policy -policy_attribute value .....
query_analyser.py: takes as an argument a query, analyses its predicates and propagates the query request to the KV_interface with appropriate arguments to perform the necessary checks and forward the action to the controller
helper.py: contains generic helper functions for the policy compiler
KV_interface.py: performs the query multiplexing and contains the handlers for each define KV query type