We’re about to roll out a feature called SkyDB. More on that will be available very shortly. One thing that I don’t feel like we’ve fully figured out is Skapp permissions.
SkyDB gives each user a filesystem. Skapps can modify individual files within the user’s SkyDB filesystem. Without any security, any skapp can read and modify any file, which creates vulnerabilities if users go to malicious skapps.
We can solve this by creating read access and write access permissions. So basically, a skapp can read from user files if the skapp has received read permissions on that file. And a skapp can write to specific files if the skapp has received write permissions on that file.
This system seems okay, but there are open questions:
- How does a skapp get permissions on a file? Do we prompt the user?
- How do we store the permissions list? (using SkyDB to do this seems pretty obvious)
- How do we distinguish between different updates of the same Skapp?
- Should the skapp get files/folders that it automatically has permissions for?
Ultimately, it will come down to the client and/or the portal to enforce permissions on the skapp. Basically, if a skapp makes a read or write call to a file, the client/portal needs to block that call if the skapp does not have permissions over that file. And the goal is to make these permissions as painless as possible for the user. The user should be prompted as few times as possible throughout the experience of using many different Skapps which all generally want access to eachother’s data.
note: a Skynet client (say an upgraded version of the Brave browser) can enforce these things independently of the portal. But for normal browser users, the portal needs to be trusted to enforce these permissions.
Wondering if the community has any thoughts on this.