Permissions / Access control for SAFE NFS or more generally for MD and ID types.
I’d like to understand the current and likely future capability and limitations for use of permissions to provide granular access to resources, for example SAFE NFS style files.
Motivation
My motivation is to implement access control for a mapping of files and directories that models a conventional file system hierarchy with granular permissions. The use case is to emulate the Solid REST API within a client library that implements Solid functionality using the SAFE DOM API.
Typically, a conventional Solid HTTPS server achieves permissioned access for individual WebIDs which represent individuals and groups, where different access rights can be granted to containers (directories) and resources (files) by storing access control information to each container and file in a corresponding access control file (one for each container and file with non-standard permissions). This can’t be emulated within the client because any client side access control can be circumvented, so all access control must be achieved using the features of the SAFE API.
I’m trying to discover the degree to which this is possible, and how to achieve it, so any information or comments that would help this would be appreciated, beyond what I’m actually asking for at this stage. Thanks!
Here’s what I think I understand (or assume!) - apologies for errors, please correct as needed:
- for a Mutable Data object permissions may be specified to (ref):
- grant or deny any combination of
Insert, Update
andManage Permission
toAnyone
, or one or more public keys (which must be shared outside the API to provide access to account holders or apps) - permissions can be granted or denied to one or more public keys
- grant or deny any combination of
Questions
Q1: can I set permissions for an entry in a Mutable Data, or only for the whole container? Reading the following suggests that the authenticator enforces a more granular than a whole MD, so I’m curious if this is correct and whether or not this is available for any MD or just this specific case:
In order to gain access to a specific name in there, the app may request access using the
_publicNames/${publicName}
(though that doesn’t directly exist in the root directory). The Authenticator, when finding a request for a container starting with_publicNames/
must prompt the user about whether access should be given to that particular public name. Any request for more than the BASIC permissions as defined above, should be guarded through a double confirmation mode by the user.
A1: ???
Q2: Does or will the API provide a similar permissions mechanism for Immutable Data, and if so any guidance on this capability?
A2: ???
Q3: Are there any features planned or current that will further assist modelling a permissioned file system, with granular access to individual entries (within an MD) or Immutable Data?
A3: ???